apt-get update |
Перед компиляцией и установкой accel-ppp, необходимо установить следующие пакеты, для соблюдения зависимостей.
cd /usr/src/ apt-get install make cmake libcrypto++-dev libssl-dev libpcre3 libpcre3-dev git lua5.1 liblua5.1-0-dev apt-get install -y build-essential gcc linux-headers-`uname -r` |
После установки необходимых компонентов, средствами git выкачиваем исходный код accel-ppp.
git clone git://git.code.sf.net/p/accel-ppp/code /opt/accel-ppp-code |
Создаем директорию в которой будет происходить дальнейшая компоновка/компиляция и переходим в нее.
mkdir /opt/accel-ppp-code/accel-ppp-build cd /opt/accel-ppp-code/accel-ppp-build |
Выполняем компоновку, указывая следующие параметры.
Параметр | Описание |
---|---|
-DBUILD_IPOE_DRIVER=TRUE | Данная опция позволяет включить в сборку модуль ядра IPoE. Этот модуль необходим, если вы хотите использовать IPoE в режиме общего интерфейса. |
-DBUILD_VLAN_MON_DRIVER=TRUE | Включает в сборку драйвер позволяющий создавать vlan интерфейсы анализирую заголовки IP пакетов. (Доступен для соединений IPoE и PPPoE). |
-DKDIR=/usr/src/linux-headers-`uname -r` | Задает путь к директории исходного кода ядра Linux. Необходим для построения модулей ядра PPTP, IPOE, VLAN-MON (версия вашего ядра может отличаться, смотреть uname -r). |
-DCMAKE_INSTALL_PREFIX=/usr | Задает путь для установки accel-ppp. |
-DCPACK_TYPE=Debian9 | указываем данный аргумент, так как мы нацелены собрать DEB пакет. |
cmake -DCMAKE_INSTALL_PREFIX=/usr -DKDIR=/usr/src/linux-headers-`uname -r` -DRADIUS=TRUE -DSHAPER=TRUE -DLOG_PGSQL=FALSE -DLUA=TRUE -DBUILD_IPOE_DRIVER=TRUE -DCPACK_TYPE=Debian9 -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_BUILD_TYPE=Release .. |
Обязательно оставляйте .. это указывает путь к исходному коду accel-ppp.
Компилируем.
make |
Производим упаковку в DEB пакет.
cpack -G DEB |
Устанавливаем.
dpkg -i accel-ppp.deb |
При получении положительного результата установки DEB пакета, переименуем конфигурационный файл accel-ppp.conf.
mv /etc/accel-ppp.conf.dist /etc/accel-ppp.conf |
Автозагрузка :
update-rc.d accel-ppp defaults |
В файл:
nano /etc/accel-ppp.lua |
вставляем
function username(pkt) return pkt:hdr('chaddr') end |
nano /etc/logrotate.d/accel-ppp |
вставляем:
/var/log/accel-ppp/*.log { rotate 7 daily size=100M compress missingok sharedscripts postrotate test -r /var/run/accel-pppd.pid && kill -HUP `cat /var/run/accel-pppd.pid` endscript } |
nano /usr/share/accel-ppp/radius/dictionary |
дописываем в конец:
ATTRIBUTE DHCP-Router-IP-Address 241 ipaddr ATTRIBUTE DHCP-Mask 242 integer ATTRIBUTE L4-Redirect 243 integer ATTRIBUTE L4-Redirect-ipset 244 string ATTRIBUTE DHCP-Option82 245 octets ATTRIBUTE Accel-Agent-Circuit-Id 246 octets ATTRIBUTE Accel-Agent-Remote-Id 247 octets ATTRIBUTE Session-Octets-Limit 227 integer ATTRIBUTE Octets-Direction 228 integer ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer ATTRIBUTE Acct-Interim-Interval 85 integer ATTRIBUTE Acct-Input-Gigawords 52 integer ATTRIBUTE Acct-Output-Gigawords 53 integer |
В словарь Freeradius (/usr/local/freeradius/etc/raddb/dictionary - если Freeradius устанавливался из исходников, иначе - /usr/share/freeradius/dictionary) добавить такие пары:
ATTRIBUTE Accel-Agent-Circuit-Id 246 octets ATTRIBUTE Accel-Agent-Remote-Id 247 octets # Limit session traffic ATTRIBUTE Session-Octets-Limit 227 integer # What to assume as limit - 0 in+out, 1 in, 2 out, 3 max(in,out) ATTRIBUTE Octets-Direction 228 integer # Connection Speed Limit ATTRIBUTE PPPD-Upstream-Speed-Limit 230 integer ATTRIBUTE PPPD-Downstream-Speed-Limit 231 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-1 232 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-1 233 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-2 234 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-2 235 integer ATTRIBUTE PPPD-Upstream-Speed-Limit-3 236 integer ATTRIBUTE PPPD-Downstream-Speed-Limit-3 237 integer ATTRIBUTE Acct-Interim-Interval 85 integer ATTRIBUTE Acct-Input-Gigawords 52 integer ATTRIBUTE Acct-Output-Gigawords 53 integer |
Создаем симлинк :
ln -s /usr/share/accel-ppp /usr/local/share/accel-ppp |
Перед настройкой, убедитесь что имена интерфейсов в системе соответствуют именам интерфейсов в конфигурационном файле. Документация по переменным https://docs.accel-ppp.org/configuration/modules.html |
nano /etc/accel-ppp.conf |
вставляем:
#ABillS [modules] log_file radius ipoe ippool shaper pptp pppoe auth_mschap_v2 auth_pap auth_chap_md5 auth_mschap_v1 chap-secrets sigchld #pppd_compat [core] log-error=/var/log/accel-ppp/core.log thread-count=1 #[common] #single-session=replace #sid-case=upper #sid-source=seq [radius] dictionary=/usr/share/accel-ppp/radius/dictionary #nas-identifier=accel-ipoe nas-ip-address=192.168.1.1 server=127.0.0.1,radsecret,auth-port=1812,acct-port=1813,req-limit=50,fail-timeout=0,max-fail=10,weight=1 dae-server=192.168.1.1:3799,radsecret verbose=100 attr-tunnel-type=NAS-Identifier gw-ip-address=192.168.1.1 [ipoe] verbose=100 username=lua:username lua-file=/etc/accel-ppp.lua lease-time=300 max-lease-time=300 attr-dhcp-client-ip=Framed-IP-Address gw-ip-address=10.0.0.1/24 proxy-arp=1 shared=1 ifcfg=1 mode=L2 start=dhcpv4 interface=eth0 #agent-remote-id=accel-ppp attr-dhcp-opt82=DHCP-Option82 attr-dhcp-opt82-remote-id=Accel-Agent-Remote-Id attr-dhcp-opt82-circuit-id=Accel-Agent-Circuit-Id #[ip-pool] #gw-ip-address=192.168.0.1/24 #attr=Framed-Pool #192.168.0.2-254,name=pool1 #[lcp] #echo-interval=30 #echo-failure=3 [pptp] bind=192.168.1.1 verbose=1 mppe=allow echo-interval=30 [ppp] verbose=1 min-mtu=1400 mtu=1492 mru=1492 #ccp=0 #sid-case=lower mppe=allow #ipv4=require #lcp-echo-interval=3 #lcp-echo-failure=9 [pppoe] interface=eth0 nas-identifier=accel-pppoe #ac-name=xxx #service-name=yyy #pado-delay=0 #pado-delay=0,100:100,200:200,-1:500 #ifname-in-sid=called-sid #tr101=1 verbose=1 [client-ip-range] #10.0.0.0/8 [dns] dns1=8.8.8.8 [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 #per-user-dir=per_user #per-session-dir=per_session #per-session=1 level=100 [shaper] attr=Filter-Id #down-burst-factor=0.1 #up-burst-factor=1.0 #latency=50 #mpu=0 #mtu=0 #r2q=10 #quantum=1500 #moderate-quantum=1 #hightspeed shaper ifb=ifb0 cburst=1534 up-limiter=htb down-limiter=htb #low speed shaper #up-limiter=police #down-limiter=tbf #leaf-qdisc=sfq perturb 10 #leaf-qdisc=fq_codel [limit PACKETS] [flows NUMBER] [target TIME] [interval TIME] [quantum BYTES] [[no]ecn] #rate-multiplier=1 #fwmark=1 attr-down=PPPD-Downstream-Speed-Limit attr-up=PPPD-Upstream-Speed-Limit verbose=10 [pppd-compat] #ip-up=/etc/ppp/ip-up #ip-down=/etc/ppp/ip-down #radattr-prefix=/var/run/radattr verbose=1 [cli] verbose=100 telnet=127.0.0.1:2000 tcp=127.0.0.1:2001 password=radsecret [snmp] master=0 agent-name=accel-ppp [connlimit] limit=10/min burst=3 timeout=60 |
Запуск:
service accel-ppp start |
Запускать при старте системы:
systemctl enable accel-ppp |