Accel-IPoE

Accel-ppp команды

Установка

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.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
sudo sysctl -p /etc/sysctl.conf

/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
         
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
_______________________________________________

[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

закрываем lan от левых подключений
iptables -I FORWARD -i vlan3101 ! -s 172.17.1.11 -j DROP
iptables -I FORWARD -o vlan3101 -j DROP

______________________________________________Команды

сессии
# 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  Путь к файлу для основной регистрации ошибок модуля.
 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

пример интерфейса

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/


Комментарии

Популярные сообщения из этого блога

mikbill расшифровка завершений сессий

Accel-ppp команды

Zabbix agent установка и настройка