Page 1 of 1

Перестал работать IPoE на ядрах, начиная с 4.4.0-143 (Ubuntu 16.04)

Posted: 04 Apr 2019, 09:10
by mpolk
Доброе время суток,

Используем Accel-PPP 1.11.1 (слегка пропатченный, но не в части IPoE) на Ubuntu 16.04. При очередном апгрейде ядра с 4.4.0-142 на 4.4.0-143 перестал работать IPoE. Откат на предыдущее ядро проблему решает.

Модуль IPoE под новые ядра собирается без ругани и грузится успешно. IPoE-подключения (L2, инициируемые по DHCP) поднимаются также успешно. Но трафик в них не идет совсем. Причина проблемы, по-видимому в следующем: сразу после получения DHCP-лизы клиент запрашивает по ARP mac-адрес гейтвея. Запрос приходит не на вновь созданный ipoe-интерфейс, а на интерфейс несущего ВЛАНа:

Code: Select all

root@p16:/proc/sys/net/ipv4/conf/br1.1009# tcpdump -i br1.1009 -nnl
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br1.1009, link-type EN10MB (Ethernet), capture size 262144 bytes
11:38:21.388445 ARP, Request who-has 10.0.0.2 tell 10.128.5.24, length 46
11:38:22.391160 ARP, Request who-has 10.0.0.2 tell 10.128.5.24, length 46
11:38:23.388449 ARP, Request who-has 10.0.0.2 tell 10.128.5.24, length 46
11:38:24.388450 ARP, Request who-has 10.0.0.2 tell 10.128.5.24, length 46
11:38:25.390986 ARP, Request who-has 10.0.0.2 tell 10.128.5.24, length 46
11:38:26.388470 ARP, Request who-has 10.0.0.2 tell 10.128.5.24, length 46
Это, по-видимому, правильно. На старых беспроблемных ядрах (до -142 включительно), запросы идут туда же. Разница в том, что на старых ядрах, в отличие от новых, сервер еще и отвечает на эти ARP-запросы:

Code: Select all

root@rugay:~# tcpdump -i br1.1009 -nnl arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br1.1009, link-type EN10MB (Ethernet), capture size 262144 bytes
11:53:31.014869 ARP, Request who-has 10.0.0.6 tell 10.128.5.24, length 46
11:53:31.014948 ARP, Reply 10.0.0.6 is-at ac:1f:6b:90:b4:97, length 28
Дальше на старом ядре трафик начинает идти уже через ipoe-интерфейс и все оканчивается благополучно. На новом ядре все зависает на вечном ARP-опросе.

Прописывание статической ARP-записи для гейтвея на клиенте проблему немедленно решает, трафик начинает идти. Включение proxy ARP на несущем ВЛАН-овом интерфейсе сервера проблему, наоборот, не решает.

Я догадываюсь, что проблема с новыми ядрами может быть как проблемой самого ядра (например при залатывании какой-то уязвимости сломали обработку ARP-запросов), так и проблемой взаимодействия модуля IPoE (или самого Accel-PPP) с ядром, т.к. механизм proxy ARP в Accel-PPP, насколько я понимаю, свой самобытный.

Хотелось бы помощи в этой проблеме.

Re: Перестал работать IPoE на ядрах, начиная с 4.4.0-143 (Ubuntu 16.04)

Posted: 04 Apr 2019, 10:44
by dimka88
Доброго. В мастер ветки данную проблему уже решили сommit/1f835bb6bb54cf186e549d58318090b988b6b93a
https://github.com/xebd/accel-ppp/commi ... b988b6b93a

Re: Перестал работать IPoE на ядрах, начиная с 4.4.0-143 (Ubuntu 16.04)

Posted: 04 Apr 2019, 15:07
by mpolk
Спасибо, попробую.

Честно говоря, я уже нашел этот патч в недрах форума и встроил в свой deb-пакет. Но проверить пока не успел, потому что наступает час пик и перезапускать ppp-демона не время.

Re: Перестал работать IPoE на ядрах, начиная с 4.4.0-143 (Ubuntu 16.04)

Posted: 05 Apr 2019, 07:53
by mpolk
Да, это оно. Патч помог.