IPoE Accel-ppp Q-in-Q Mode

Материал из BiTel WiKi

Перейти к: навигация, поиск

Внимание! Данное решение/метод/статья относится к версии 6.1,6.2,7.0 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.

Схема в общих чертах. Для максимальной простоты настройки Q-in-Q на accel-ppp с авторизацией по radius, номера S-Vlan и C-Vlan подставляются в логин пользователя. Скрипт обрезает все лишнее и дальше привычным образом происходит авторизация и шейпинг средствами accel-ppp.

У меня конфигурация accel-ppp расположена тут /etc/accel-ppp.conf

[modules]
log_file
ipoe
 
auth_mschap_v2
auth_mschap_v1
auth_chap_md5
auth_pap
 
radius
 
ippool
 
pppd_compat
 
shaper
#net-snmp
#logwtmp
#connlimit
 
[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4
 
[ipoe]
verbose=5
username=lua:username
shared=0
ifcfg=1
mode=L2
start=dhcpv4
ip-unnumbered=1
lua-file=/etc/accel-ppp.lua
offer-delay=0,100:100,200:200,-1:1000
vlan-mon=e0.1000,1-4095
vlan-name=%I.%N
interface=re:e0.1000\.\d{4}
gw-ip-address=10.200.0.1/16
 
 
[dns]
dns1=8.8.8.8
dns2=8.8.4.4
 
[radius]
dictionary=/usr/local/share/accel-ppp/radius/dictionary
nas-identifier=accel-ppp
nas-ip-address=10.163.0.5
server=10.163.0.3,secret,auth-port=1912,acct-port=1913,req-limit=50,fail-timeout=0,max-fail=10,weight=1
dae-server=10.163.0.5:3799,secret
verbose=5
 
 
[client-ip-range]
10.0.0.0/8
192.168.0.0/16
 
[log]
log-file=/var/log/accel-ppp/accel-ppp.log
log-emerg=/var/log/accel-ppp/emerg.log
log-fail-file=/var/log/accel-ppp/auth-fail.log
copy=1
color=1
level=5
 
[log-pgsql]
conninfo=user=log
log-table=log
 
[pppd-compat]
ip-up=/etc/ppp/ip-up
ip-down=/etc/ppp/ip-down
ip-change=/etc/ppp/ip-change
radattr-prefix=/var/run/radattr
verbose=1
 
[shaper]
vendor=Cisco
attr=Cisco-AVPair
up-limiter=police
down-limiter=tbf
verbose=1
 
[cli]
verbose=1
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
 
[snmp]
master=0
agent-name=accel-ppp
 
[connlimit]
limit=10/min
burst=3
timeout=60

Скрипт обрезающий в имени пользователя интерфейс, расположен тут /etc/accel-ppp.lua

function username(pkt)
	local username = string.sub(pkt:ifname(), string.find(pkt:ifname(), ".", 1, true)+1, 32)
	return username
end
Личные инструменты