IPoE Accel-ppp Q-in-Q Mode

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

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

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

zavndw[at]gmail.com Схема в общих чертах. Для максимальной простоты настройки 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

В биллинге при такой схеме заведен только брас:

Конфигурация типа устройства accel-ppp

# Таймаут перевода соединения в статус suspended при остутствии радиус пакетов
connection.suspend.timeout=3600
# Таймаут закрытия соединения при остутствии радиус пакетов (не складывается с connection.suspend.timeout)
connection.close.timeout=3600
 
# Режим поиска сервиса: 0 (по умолчанию) - по логину, 1 - по интерфейсу на устройстве (в предобработке должны быть
# проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или INTERFACE_ID), 2 - по VLAN на устройстве (в предобработке
# должны быть проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или VLAN_ID), 4 - по VLAN на устройстве или
# дочернем устройстве (в предобработке должны быть проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или VLAN_ID),
# 5 - по MAC-адресу на устройстве (в предобработке должна быть проставлена опция MAC_ADDRESS), 6 - по MAC-адресу на
# устройстве или дочернем устройстве (в предобработке должна быть проставлена опция MAC_ADDRESS).
radius.servSearchMode=0
# Нужно ли проверять пароль: 0 - нет, 1 (по умолчанию) - да.
radius.password.verification=0
 
# Привязка кодов опций модуля к атрибутам
# данные атрибуты будут выдаваться в AccessAccept при удачной авторизации и при наличии активных опций в тарифе или сервисе
#radius.inetOption.1.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 2000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 2000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.1.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 2000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 2000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.2.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 5000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 5000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.3.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 10000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 10000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.4.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 20000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 20000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.5.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 30000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 30000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.6.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 50000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 50000000 8000 8000 conform-action transmit exceed-action drop
radius.inetOption.7.attributes=Cisco-AVPair=lcp:interface-config#1=rate-limit input 100000000 8000 8000 conform-action transmit exceed-action drop;Cisco-AVPair=lcp:interface-config#1=rate-limit output 100000000 8000 8000 conform-action transmit exceed-action drop
dhcp.82.interfaceOptionCode=2

И тип сервиса:

Личные инструменты