Accel-IPoE
apt-get update apt-get install git make vlan libnl-dev libnl-utils gcc cmake git libcrypto++-dev libcrypto++9 libcrypto++-utils lua5.1 liblua5.1-0-dev libpcre++-dev libpcre++0 libpcre3 libpcrecpp0 libsnmp-dev snmp snmpd mtr tcpdump iftop iptraf atop ipset libipset-dev uname -r apt-get install linux-headers cd /root/ git clone git://git.code.sf.net/p/accel-ppp/code accel-ppp.git cd /usr/local/src cmake /root/accel-ppp.git -DKDIR=/usr/src/linux-headers-`uname -r` -DBUILD_DRIVER=FALSE -DRADIUS=TRUE -DNETSNMP=TRUE -DSHAPER=TRUE -DLOG_PGSQL=FALSE -DLUA=TRUE -DBUILD_IPOE_DRIVER=TRUE make make install
apt-get install linux-headers-$(uname -r)rc.local
insmod /usr/local/src/drivers/ipoe/driver/ipoe.ko
modprobe 8021q
modprobe sch_netem
/etc/rc.firewall >/dev/null #сюда кладем свои правила (если надо)делаем один раз:
/usr/local/sbin/accel-pppd -d -c /etc/accel-ppp.conf
echo "100 accel/ipoe" >> /etc/iproute2/rt_protos
echo "100 accel/ipoe" >> /etc/iproute2/rt_tables
содержимое sysctl
root@ipoe:~# mcedit /etc/sysctl.confsudo sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh3 = 4096
net.ipv4.netfilter.ip_conntrack_max=9548576
net.netfilter.nf_conntrack_max=9548576
/usr/local/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 AccelRemoteId 246 octets ATTRIBUTE AccelCircuitId 247 octets
/etc/accel-ppp.conf
[ipoe]______________________________________________
verbose=100
username=lua:username
lua-file=/etc/accel-ppp.lua
password=username
lease-time=300
max-lease-time=300
unit-cache=1000
attr-dhcp-client-ip=Framed-IP-Address
attr-dhcp-router-ip=DHCP-Router-IP-Address
attr-dhcp-mask=DHCP-Mask
attr-l4-redirect=L4-Redirect
#local-net=192.168.0.0/16
#offer-delay=0,100:100,200:200,-1:1000
l4-redirect-ipset=l4
#l4-redirect-table=100
#l4-redirect-on-reject=300
shared=1
ifcfg=1
mode=L2
start=dhcpv4
#start=up
proxy-arp=0
proto=100
vlan-mon=vlan555
interface=re:vlan555
[cli]
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
verbose=100 -verbose>0 запись секции в лог
файл /etc/accel-ppp.lua
function username(pkt)
return pkt:hdr('chaddr')
end
Параметры дшсп должны совпадать с настройками в биллинге, иначе сессия рвется с сообщением Lost Carrier
Передача атрибутов радиусом:
Места размещения словаря
/usr/share/freeradius/dictionary
/usr/local/share/freeradius/dictionary
/usr/local/share/accel-ppp/radius/dictionary
Атрибуты
lease-time=300
max-lease-time=300
Передача атрибутов радиусом:
attr-dhcp-client-ip=Framed-IP-Address
attr-dhcp-router-ip=DHCP-Router-IP-Address
attr-dhcp-mask=DHCP-Mask
attr-l4-redirect=L4-Redirect
Места размещения словаря
/usr/share/freeradius/dictionary
/usr/local/share/freeradius/dictionary
/usr/local/share/accel-ppp/radius/dictionary
Атрибуты
ATTRIBUTE L4-Redirect 242 integer
ATTRIBUTE DHCP-Router-IP-Address 241 ipaddr
ATTRIBUTE DHCP-Mask 242 integer
giaddr=10.0.10.1
relay=195.0.0.1
interface=vlan555,relay=195.0.0.1,giaddr=10.0.10.1
_______________________________________________
Iptables /etc/rc.firewall
#(Набор правил)
______________________________________________
[radius]
dictionary=/usr/local/share/accel-ppp/radius/dictionary
nas-identifier=accel
nas-ip-address=10.1.1.1
#gw-ip-address=195.0.0.1
server=10.1.1.2,secret,auth-port=1812,acct-port=1813,req-limit=0,fail-time=60
dae-server=0.0.0.0:3799,secret
verbose=0
timeout=10
max-try=9
acct-delay-time=0
#acct-timeout=120
#acct-on=0
Iptables /etc/rc.firewall
#!/bin/sh -e
iptables -F
iptables -t nat -F
#172.22.0.0/24 должники 172.17.0.0/16 рабочая подсеть
iptables -A FORWARD -s 172.22.0.0/24 -d 8.8.8.8 -j ACCEPT
iptables -A FORWARD -d 172.22.0.0/24 -s 8.8.8.8 -j ACCEPT
iptables -A INPUT -s 172.22.0.0/24 -d 172.22.0.1 -j ACCEPT
iptables -A INPUT -d 172.22.0.0/24 -s 172.22.0.1 -j ACCEPT
iptables -A INPUT -d 172.22.0.1 -j ACCEPT
iptables -A INPUT -s 172.22.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.22.0.0/24 -d 8.8.8.8 -o eth2 -j SNAT --to-source 195.0.0.1
iptables -t nat -A PREROUTING -j DNAT -p tcp -s 172.22.0.0/24 ! -d 8.8.8.8 --dport 80 --to-destination 172.22.0.1:80
iptables -t nat -A POSTROUTING -s 172.17.0.0/24 -o eth2 -j SNAT --to-source 195.0.0.1
iptables -A FORWARD -s 172.17.0.0/16 -j ACCEPT
iptables -A FORWARD -d 172.17.0.0/16 -j ACCEPT
iptables -A FORWARD -s 172.17.0.0/16 -j ACCEPT
iptables -A FORWARD -d 172.17.0.0/16 -j ACCEPT
закрываем lan от левых подключений
______________________________________________Команды
выключить
# accel-cmd show stat
# ethtool -K eth0 tso off ufo off gso off gro off lro off
# ps ax|grep accel
netstat -nl|grep 2001
tcpdump -vvvv -i eth1
проверка модуля
lsmod |grep ipoe
версия accel-cmd -V
хелп accel-cmd -h
-f, --family - установка FAMILY протокола для общения с HOST. FAMILY может быть "inet" (IPv4), "inet6" (IPv6) или "unspec" (по умолчанию).
-4 - Shortcut for --family=inet.
-6 - Shortcut for --family=inet6.
-n, --numeric - Избегайте разрешение имен для HOST и PORT.
-H, --host - Set hostname, or IP address, to communicate with. Defaults to "localhost".
-p, --port - Установите удаленный порт использовать для общения с HOST. по умолчанию "2001".
-t, --timeout - Установите истечения времени неактивности
-v, --verbose - Подробный вывод.
-V, --version - Показать номер версии и выйти
мануал man accel-ppp.conf
[modules] Список containes модулей для загрузки
log_file Здесь регистрируются сообщения в файлы, также поддерживает запись сообщений в per-session/per-user
[core]Конфигурация основного модуля
log-error=path Путь к файлу для основной регистрации ошибок модуля.
thread-count=n Число рабочих потоков, оптимальная - количество процессоров / ядер
[ipoe]
verbose=n Если n не равно нулю модуль IPoE будет производить ведение подробного журнала.
unit-cache=n Определяет количество интерфейсов, чтобы держать в кэше. Это означает, что интерфейс не будет уничтожен после отключения соответствующей сессии, интерфейс будет помещен в кэш для использования в новых сессиях. Это должно разгрузить на уровне ядра интерфейс на работу: создание / удаление/отсутствие.(проверить баг на невозможность создания сесии, т.к. ацель пытается создать уже сущетвующий интерфейс)
gw-ip-address=x.x.x.x/mask Задает адрес, который будет использоваться в качестве IP-адреса сервера, если радиус может назначить только адрес клиента. В таком случае, если адрес клиента сопоставляется сеть и маска, тогда определенном адрес и маску будет использоваться. Можно указать несколько таких вариантов.
шапка дебага
[2014-05-20 10:51:01.384] ipoe: start interface vlan3100 ()
[2014-05-20 10:51:01.386] libnetlink: RTNETLINK answers: No such file or directory
[2014-05-20 10:51:01.391] accel-ppp version 4654e90f1903756523808afd6a00112060c67dc2
пример интерфейса
настройка интерфейса
[1-4][0-2] 0-2 создаст маску на 10, 11, 12, 20, 21, 22, 30, 31, 32, 40, 41, 42
перед запуском/перезапуском ацеля все новые интерфейсы должны быть подняты
Заметка
Чтобы шейпер в Accel любого случая тупо не глючил
[shaper]
attr=Filter-Id
ifb=ifb0
up-limiter=htb
down-limiter=htb
cburst=1375000
r2q=10
quantum=1500
leaf-qdisc=sfq perturb 10
verbose=0
в rc.local обязательно стоит поставить следующее
modprobe 8021q >/dev/null
modprobe sch_netem >/dev/null
/sbin/ip li set up dev ifb0 >/dev/null
/sbin/ip li set up dev ifb1 >/dev/null
в конфиге радиуса
max_request_time = 9
cleanup_delay = 9
как же устанавливать аксель
и нужную версию
cd /root переход в каталог куда будем качать гит с исходниками
git clone git://git.code.sf.net/p/accel-ppp/code accel-ppp.git скачать последний гит
git log отображение всех версий и изминений
git reset --hard 5a7474b41970e8cdf5ad98f7daa74814f5667a5e выбор нужной версии
git reset --hard 303ce910ee3f7ce1aa60a30420bd543d03b8e5d5 версия 1.10
5a7474b41970e8cdf5ad98f7daa74814f5667a5e выбранная версия
когда ты сделаешь git log
у тебя будет показыватся самой первой версия на которую ты перешел
git pull вернет тебя обратно на последнюю и проверит на наличие новых версий если есть такие то скачает
конфигурирование исходников
cd /usr/local/src переход в каталог куда будем копировать сконфигурированные исходники
cmake /root/accel-ppp.git -DKDIR=/usr/src/linux-headers-`uname -r` -DBUILD_DRIVER=FALSE -DRADIUS=TRUE -DNETSNMP=TRUE -DSHAPER=TRUE -DLOG_PGSQL=FALSE -DLUA=TRUE -DBUILD_IPOE_DRIVER=TRUE
make
make install
как отследить что не стартует из rc.local
Добавить echo в rc.local, сделать так сказать логи нужно и посмотреть что именно не отрабатывает.
Пример:
echo "`date` start loading" > /etc/rclocal.log
echo "`date` loading IPOE module & others" >> /etc/rclocal.log
insmod /usr/local/src/drivers/ipoe/driver/ipoe.ko.
modprobe 8021q
modprobe sch_netem
modprobe ip_gre
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp
echo "`date` done" >> /etc/rclocal.log
будут в логи вот такого вида
[2017-08-10 15:51:29]: info: ipoe7: recv [DHCPv4 Decline xid=1bdc64f chaddr=d4:6e:0e:ac:ab:81 <Message-Type Decline> <Client-ID 01d46e0eacab81> <Request-IP 10.10.2.3> <Server-ID 10.10.2.254>]
[16:03]
будут в логи вот такого вида
[16:03]
[2017-08-10 15:51:29]: info: ipoe7: recv [DHCPv4 Decline xid=1bdc64f chaddr=d4:6e:0e:ac:ab:81 <Message-Type Decline> <Client-ID 01d46e0eacab81> <Request-IP 10.10.2.3> <Server-ID 10.10.2.254>]
[cli]
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
запись должна быть, иначе нельзя дебажить ацель
или нет учетки (мак адрес)
IP сервака не должы быть на интерфейсе, где ацель раздает. Он их затирает.
Или атрибуты на сервере биллинга или accel
прописываем alias для ната
nano /etc/init.d/alias.sh
ifconfig lo:0 200.25.175.190 netmask 255.255.255.255
ifconfig lo:1 200.25.175.191 netmask 255.255.255.255
и так все ип для ната
chmod +x /etc/init.d/alias.sh
добавляем в автозапуск
/etc/rc.local
/etc/init.d/alias.sh > /dev/null 2>&1
http://wiki.mikbill.ru/billing/nas_access_server/accelipoe_install?s[]=accel
https://accel-ppp.org/wiki/doku.php?id=ru:start -русская база
https://accel-ppp.org/forum/
iptables -I FORWARD -i vlan3101 ! -s 172.17.1.11 -j DROP
iptables -I FORWARD -o vlan3101 -j DROP
iptables -I FORWARD -o vlan3101 -j DROP
______________________________________________Команды
сессии
# tc class show dev ipoe0
# ifconfig | grep ipoe | wc -l
# tc class show dev ipoe0
# ifconfig | grep ipoe | wc -l
активные сессии
accel-cmd show sessions интерфейс/мак/ип/шейпер(rate-limit)/тип подключения/статус/время работы
accel-cmd show sessions | grep х.х.х.хвыключить
- accel-cmd shutdown
- accel-pppd -d -c /etc/accel-ppp.conf
- accel-pppd -c /etc/accel-ppp.conf
- tail -f /var/log/accel-ppp/accel-ppp.log
# accel-cmd show stat
# ethtool -K eth0 tso off ufo off gso off gro off lro off
# ps ax|grep accel
netstat -nl|grep 2001
tcpdump -vvvv -i eth1
проверка модуля
lsmod |grep ipoe
версия accel-cmd -V
хелп accel-cmd -h
-f, --family - установка FAMILY протокола для общения с HOST. FAMILY может быть "inet" (IPv4), "inet6" (IPv6) или "unspec" (по умолчанию).
-4 - Shortcut for --family=inet.
-6 - Shortcut for --family=inet6.
-n, --numeric - Избегайте разрешение имен для HOST и PORT.
-H, --host - Set hostname, or IP address, to communicate with. Defaults to "localhost".
-p, --port - Установите удаленный порт использовать для общения с HOST. по умолчанию "2001".
-t, --timeout - Установите истечения времени неактивности
-v, --verbose - Подробный вывод.
-V, --version - Показать номер версии и выйти
мануал man accel-ppp.conf
[modules] Список containes модулей для загрузки
log_file Здесь регистрируются сообщения в файлы, также поддерживает запись сообщений в per-session/per-user
[core]Конфигурация основного модуля
log-error=path Путь к файлу для основной регистрации ошибок модуля.
[ipoe]
verbose=n Если n не равно нулю модуль IPoE будет производить ведение подробного журнала.
unit-cache=n Определяет количество интерфейсов, чтобы держать в кэше. Это означает, что интерфейс не будет уничтожен после отключения соответствующей сессии, интерфейс будет помещен в кэш для использования в новых сессиях. Это должно разгрузить на уровне ядра интерфейс на работу: создание / удаление/отсутствие.(проверить баг на невозможность создания сесии, т.к. ацель пытается создать уже сущетвующий интерфейс)
gw-ip-address=x.x.x.x/mask Задает адрес, который будет использоваться в качестве IP-адреса сервера, если радиус может назначить только адрес клиента. В таком случае, если адрес клиента сопоставляется сеть и маска, тогда определенном адрес и маску будет использоваться. Можно указать несколько таких вариантов.
шапка дебага
[2014-05-20 10:51:01.384] ipoe: start interface vlan3100 ()
[2014-05-20 10:51:01.386] libnetlink: RTNETLINK answers: No such file or directory
[2014-05-20 10:51:01.391] accel-ppp version 4654e90f1903756523808afd6a00112060c67dc2
пример интерфейса
ipoe0 Link encap:Ethernet HWaddr 90:e2:ba:14:d3:f5
inet addr:10.0.10.1 P-t-P:10.0.10.2 Mask:255.255.255.255
inet6 addr: fe80::92e2:baff:fe14:d3f5/64 Scope:Link
UP POINTOPOINT RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:691 (691.0 B) TX bytes:0 (0.0 B)
auto vlan1407
iface vlan1407 inet static
address 10.0.10.1
netmask 255.255.255.0
mtu 1500
vlan_raw_device eth3
auto eth2:47
iface eth2:47 inet static
address 195.0.0.1
netmask 255.255.255.192
[1-4][0-2] 0-2 создаст маску на 10, 11, 12, 20, 21, 22, 30, 31, 32, 40, 41, 42
перед запуском/перезапуском ацеля все новые интерфейсы должны быть подняты
Заметка
Чтобы шейпер в Accel любого случая тупо не глючил
[shaper]
attr=Filter-Id
ifb=ifb0
up-limiter=htb
down-limiter=htb
cburst=1375000
r2q=10
quantum=1500
leaf-qdisc=sfq perturb 10
verbose=0
в rc.local обязательно стоит поставить следующее
modprobe 8021q >/dev/null
modprobe sch_netem >/dev/null
/sbin/ip li set up dev ifb0 >/dev/null
/sbin/ip li set up dev ifb1 >/dev/null
в конфиге радиуса
max_request_time = 9
cleanup_delay = 9
как же устанавливать аксель
и нужную версию
cd /root переход в каталог куда будем качать гит с исходниками
git clone git://git.code.sf.net/p/accel-ppp/code accel-ppp.git скачать последний гит
git log отображение всех версий и изминений
git reset --hard 5a7474b41970e8cdf5ad98f7daa74814f5667a5e выбор нужной версии
git reset --hard 303ce910ee3f7ce1aa60a30420bd543d03b8e5d5 версия 1.10
5a7474b41970e8cdf5ad98f7daa74814f5667a5e выбранная версия
когда ты сделаешь git log
у тебя будет показыватся самой первой версия на которую ты перешел
git pull вернет тебя обратно на последнюю и проверит на наличие новых версий если есть такие то скачает
конфигурирование исходников
cd /usr/local/src переход в каталог куда будем копировать сконфигурированные исходники
cmake /root/accel-ppp.git -DKDIR=/usr/src/linux-headers-`uname -r` -DBUILD_DRIVER=FALSE -DRADIUS=TRUE -DNETSNMP=TRUE -DSHAPER=TRUE -DLOG_PGSQL=FALSE -DLUA=TRUE -DBUILD_IPOE_DRIVER=TRUE
make
make install
как отследить что не стартует из rc.local
Добавить echo в rc.local, сделать так сказать логи нужно и посмотреть что именно не отрабатывает.
Пример:
echo "`date` start loading" > /etc/rclocal.log
echo "`date` loading IPOE module & others" >> /etc/rclocal.log
insmod /usr/local/src/drivers/ipoe/driver/ipoe.ko.
modprobe 8021q
modprobe sch_netem
modprobe ip_gre
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp
echo "`date` done" >> /etc/rclocal.log
Ошибки
два акселя в паре в одном влане не будут работать с proxy-arp=1будут в логи вот такого вида
[2017-08-10 15:51:29]: info: ipoe7: recv [DHCPv4 Decline xid=1bdc64f chaddr=d4:6e:0e:ac:ab:81 <Message-Type Decline> <Client-ID 01d46e0eacab81> <Request-IP 10.10.2.3> <Server-ID 10.10.2.254>]
[16:03]
будут в логи вот такого вида
[16:03]
[2017-08-10 15:51:29]: info: ipoe7: recv [DHCPv4 Decline xid=1bdc64f chaddr=d4:6e:0e:ac:ab:81 <Message-Type Decline> <Client-ID 01d46e0eacab81> <Request-IP 10.10.2.3> <Server-ID 10.10.2.254>]
min-mtu cann't be greater then mtu/mru
пока не убирал, работает с этим[cli]
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
запись должна быть, иначе нельзя дебажить ацель
error: ipoe0: no free IPv4 address
lsmod |grep ipoeили нет учетки (мак адрес)
IP сервака не должы быть на интерфейсе, где ацель раздает. Он их затирает.
can't determine router address
Должен быть параметр gw-ip-address= 10.10.10.10/25Или атрибуты на сервере биллинга или accel
прописываем alias для ната
nano /etc/init.d/alias.sh
ifconfig lo:0 200.25.175.190 netmask 255.255.255.255
ifconfig lo:1 200.25.175.191 netmask 255.255.255.255
и так все ип для ната
chmod +x /etc/init.d/alias.sh
добавляем в автозапуск
/etc/rc.local
/etc/init.d/alias.sh > /dev/null 2>&1
Ссылки по ресурсу
http://sourceforge.net/projects/accel-ppp/http://wiki.mikbill.ru/billing/nas_access_server/accelipoe_install?s[]=accel
https://accel-ppp.org/wiki/doku.php?id=ru:start -русская база
https://accel-ppp.org/forum/
Комментарии
Отправить комментарий