Логика работы L3 для неклассифицированного пакета

IPoE related questions
Post Reply
Pinkbyte
Posts: 2
Joined: 05 May 2016, 08:36

Логика работы L3 для неклассифицированного пакета

Post by Pinkbyte »

День добрый. Пробую настроить accel-ppp по wiki(https://accel-ppp.org/wiki/doku.php?id=ru:ipoe) в режиме "L2/L3-connected, старт по неклассифицированному пакету". Если с L2 всё работает более-менее хорошо, то с L3 - полнейший затык. То ли я не понимаю как это должно работать в принципе, то ли это не работает вообще

Какие версии accel-ppp я пробовал? 1.10.2 и 105e9acfc6e1e54993bfdfcb7df04adfd0c52e06(последний на данным момент коммит в ветку 1.10)
ОС: Gentoo Linux

Конфиг, относящийся к ipoe:

Code: Select all

[ipoe]
verbose=5
mode=L3
shared=1
ifcfg=1
start=up
interface=eth1
password=
local-net=172.31.255.0/24
Авторизация идет через радиус.

Примерная схема сети на тестовом стенде:

шлюз с accel-ppp(172.31.254.1/24) <-----------> (172.31.254.2/24)промежуточный шлюз(172.31.255.1/24) <-------------> клиент(172.31.255.101/24)

Вывод ifconfig с шлюза с accel-ppp:

Code: Select all

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.13.101  netmask 255.255.255.0  broadcast 172.30.13.255
        inet6 fe80::5054:91ff:feae:5100  prefixlen 64  scopeid 0x20<link>
        ether 52:54:91:ae:51:00  txqueuelen 1000  (Ethernet)
        RX packets 131135  bytes 24143880 (23.0 MiB)
        RX errors 0  dropped 143  overruns 0  frame 0
        TX packets 136822  bytes 39179514 (37.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 172.31.254.1  netmask 255.255.255.0  broadcast 172.31.254.255
        inet6 fe80::5054:ff:fe95:f414  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:95:f4:14  txqueuelen 1000  (Ethernet)
        RX packets 13938  bytes 1170701 (1.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5581  bytes 589236 (575.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 538  bytes 40128 (39.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 538  bytes 40128 (39.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Перед экспериментом убеждаюсь что со шлюза до клиента ходит ping.

Вгружаем модуль ipoe и стартуем accel-ppp. Пускаем ping с клиента на ip шлюза 172.31.254.1. В логах на сервере:

Code: Select all

May  5 12:28:08 accel kernel: IPoE session driver v1.10.0
May  5 12:28:11 accel accel-pppd: ipoe: start interface eth1 ()
May  5 12:28:11 accel accel-pppd: accel-ppp version 105e9acfc6e1e54993bfdfcb7df04adfd0c52e06
May  5 12:28:24 accel accel-pppd: ipoe0:: create interface ipoe0 parent eth1
May  5 12:28:24 accel accel-pppd: ipoe0:: send [RADIUS(1) Access-Request id=1 <User-Name "172.31.255.101"> <NAS-Identifier "accel-ppp"> <NAS-IP-Address 172.30.13.101> <NAS-Port 270> <NAS-Port-Id "ipoe0"> <NAS-Port-Type Ethernet> <Calling-Station-Id "52:54:10:ab:51:94"> <Called-Station-Id "eth1"> <Framed-IP-Address 172.31.255.101> <User-Password >]
May  5 12:28:24 accel accel-pppd: ipoe0:: recv [RADIUS(1) Access-Accept id=1 <Service-Type Framed-User> <Framed-Protocol PPP> <Framed-IP-Address 172.31.255.101> <Framed-IP-Netmask 255.255.255.255> <Session-Timeout 86400> <PPPD-Downstream-Speed-Limit 51200> <PPPD-Upstream-Speed-Limit 51200>]
May  5 12:28:24 accel accel-pppd: ipoe0:172.31.255.101: 172.31.255.101: authentication succeeded
May  5 12:28:24 accel accel-pppd: ipoe0:172.31.255.101: send [RADIUS(1) Accounting-Request id=1 <User-Name "172.31.255.101"> <NAS-Identifier "accel-ppp"> <NAS-IP-Address 172.30.13.101> <NAS-Port 270> <NAS-Port-Id "ipoe0"> <NAS-Port-Type Ethernet> <Calling-Station-Id "52:54:10:ab:51:94"> <Called-Station-Id "eth1"> <Acct-Status-Type Start> <Acct-Authentic RADIUS> <Acct-Session-Id "60f1ee5ab2fd89bc"> <Acct-Session-Time 0> <Acct-Input-Octets 0> <Acct-Output-Octets 0> <Acct-Input-Packets 0> <Acct-Output-Packets 0> <Acct-Input-Gigawords 0> <Acct-Output-Gigawords 0> <Framed-IP-Address 172.31.255.101>]
May  5 12:28:24 accel accel-pppd: ipoe0:172.31.255.101: recv [RADIUS(1) Accounting-Response id=1]
May  5 12:28:24 accel accel-pppd: ipoe0:172.31.255.101: ipoe: session started
Пинг с клиента не доходит. Смотрит ifconfig, появился интерфейс ipoe0:

Code: Select all

ipoe0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet6 fe80::200:ff:fe00:0  prefixlen 64  scopeid 0x20<link>
        ether 00:00:00:00:00:00  txqueuelen 100  (Ethernet)
        RX packets 3  bytes 180 (180.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 3 overruns 0  carrier 0  collisions 0
Смотрим таблицу маршрутизации:

Code: Select all

# ip route get 172.31.255.101
172.31.255.101 via 172.31.254.2 dev eth1  src 172.31.254.1 
    cache 
Ведет в eth1. Должен ли этот маршрут быть направлен в ipoe0?

Смотрим tcpdump на ipoe0:

Code: Select all

accel accel-ppp # tcpdump -i ipoe0 -nn
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ipoe0, link-type EN10MB (Ethernet), capture size 262144 bytes
12:31:26.147043 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1630, length 40
12:31:31.148451 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1631, length 40
12:31:36.149688 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1632, length 40
12:31:41.150910 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1633, length 40
12:31:46.152101 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1634, length 40
Запросы есть, ответов нет. Смотрим tcpdump на eth1:

Code: Select all

accel accel-ppp # tcpdump -i eth1 -nn icmp or arp
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:32:16.159890 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1640, length 40
12:32:21.161104 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1641, length 40
12:32:26.162386 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1642, length 40
12:32:31.163719 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1643, length 40
12:32:36.165004 IP 172.31.255.101 > 172.31.254.1: ICMP echo request, id 1, seq 1644, length 40
Та же картина - запросы есть, ответов нет.

На всякий случай - файрвол в тестовых целях отключен:

Code: Select all

accel accel-ppp # iptables -vn -L
Chain INPUT (policy ACCEPT 72343 packets, 15M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 1395 packets, 106K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 75379 packets, 23M bytes)
 pkts bytes target     prot opt in     out     source               destination

А теперь вопрос - что я делаю не так? :-/
Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: Логика работы L3 для неклассифицированного пакета

Post by Dmitry »

Доброго
я бы посоветовал взять версию с git master, там всё это пересмотрено и переписано
Pinkbyte
Posts: 2
Joined: 05 May 2016, 08:36

Re: Логика работы L3 для неклассифицированного пакета

Post by Pinkbyte »

Поставил из git. Выхлоп стал более информативным:

Code: Select all

May  5 13:36:51 accel accel-pppd: accel-ppp version f5a97ed5f9f5788655dbb4720b669a7235b5d663
May  5 13:36:58 accel accel-pppd: ipoe0:: create interface ipoe0 parent eth1
May  5 13:36:58 accel accel-pppd: ipoe0:: send [RADIUS(1) Access-Request id=1 <User-Name "172.31.255.101"> <NAS-Identifier "accel-ppp"> <NAS-IP-Address 172.30.13.101> <NAS-Port 273> <NAS-Port-Id "ipoe0"> <NAS-Port-Type Ethernet> <Calling-Station-Id "52:54:10:ab:51:94"> <Called-Station-Id "eth1"> <Framed-IP-Address 172.31.255.101> <User-Password >]
May  5 13:36:58 accel accel-pppd: ipoe0:: recv [RADIUS(1) Access-Accept id=1 <Service-Type Framed-User> <Framed-Protocol PPP> <Framed-IP-Address 172.31.255.101> <Framed-IP-Netmask 255.255.255.255> <Session-Timeout 86400> <PPPD-Downstream-Speed-Limit 51200> <PPPD-Upstream-Speed-Limit 51200>]
May  5 13:36:58 accel accel-pppd: ipoe0:172.31.255.101: 172.31.255.101: authentication succeeded
May  5 13:36:58 accel accel-pppd: ipoe0:172.31.255.101: can't determine router address
May  5 13:36:58 accel accel-pppd: ipoe0:172.31.255.101: ipoe: session finished
Update: всё, разобрался, нужно указывать параметр gw-ip-address(либо передавать его через радиус атрибуты)
Post Reply