Проблемы l2tp от Beeline

Сервер подключен к интернету посредством l2tp, провайдер beeline.
При скачивании больших файлов (>10 мегабайт) в какой-то момент скачка зависает навсегда.

Зависает и на apache, и на nginx, и на 0W. Т.е. дело не в веб-сервере.
Все прекрасно отдается в рамках локальной домашней сети.

Конфиги:

ifconfig
dhclient
xl2tpd
conf.d/net

В messages иногда появляется вот такое:

Nov 12 05:51:17 crits xl2tpd[16127]: handle_avps: handling avp's for tunnel 41923, call 1713400933
Nov 12 05:51:17 crits xl2tpd[16127]: message_type_avp: message type 6 (Hello)
Nov 12 05:51:17 crits xl2tpd[16127]: control_finish: message type is Hello(6). Tunnel is 23174, call is 0.

Но с зависанием скачки по времени не совпадает.

Я полночи искал схожие проблемы и решения на форумах и нашел лишь упоминание, что подобное случается, когда mtu локальной сети стоит 576 при mtu ppp в 1400+.
Попытки поменять mtu локальной сети оказались тщетны. Если я убираю interface-mtu из dhclient.conf, то mtu остается 1500 и при этом почему-то не ресолвятся адреса (т.е. tp.internet.beeline.ru - неизвестный хост):

Nov 12 04:52:58 crits xl2tpd[16115]: Y: Host name lookup failed for tp.internet.beeline.ru. Trying to look again in 5 seconds.

Если я добавляю в conf.d/net mtu_lan=1460, то хосты ресолвятся, но ppp падает:

Nov 12 05:36:36 crits pppd[16135]: No response to 8 echo-requests
Nov 12 05:36:36 crits pppd[16135]: Serial link appears to be disconnected.
Nov 12 05:36:36 crits pppd[16135]: Connect time 0.5 minutes.
Nov 12 05:36:36 crits pppd[16135]: Sent 1940800576 bytes, received 0 bytes.
Nov 12 05:36:36 crits dhcpcd[15883]: ppp0: carrier lost

Звонил в техподдержку Билайна, они говорят, что mtu у них 1460 везде, но, кмк, они заблуждаются.
Может быть дело и не в mtu, но я даже не знаю, где копать.

Файл для примера: http://trash.crits.ru/VTMBup88.exe

> Попытки поменять mtu

> Попытки поменять mtu локальной сети оказались тщетны. Если я убираю interface-mtu из dhclient.conf, то mtu остается 1500 и при этом почему-то не ресолвятся адреса

На lan емнип должно быть 1500. То, почему не резолвятся адреса надо копать глубже. Сам хук на dhcp есть (см. тут)?

Долго разбирался с роутингом.

Долго разбирался с роутингом. В общем, первый рекомендуемый на форумах Билайна метод привел к адской путанице в таблице маршрутизации.

Обязательно надо убрать defaultroute из /etc/ppp/options.l2tp
И, похоже, у Билайна новые маршруты: в рекомендуемом варианте жестко прошито всего 4, а их уже 7.

Короче, метод из вики однозначно лучше, но в нем тоже не все хорошо:

- утилита ip в дефолтные пакеты не входит, но ее было просто найти: sys-apps/iproute2

- в /sbin на нее ссылки нет.

- скрипт для /etc/ppp/ip-up.d/ содержит ту же болезнь, что и в скриптах на форуме Билайна - если в таблице маршрутизации содержится несколько подходящих под grep результатов, то все фейлится. У меня в таблице маршрутизации почему-то было так:

default via 10.233.40.1 dev lan
default via 10.233.40.1 dev lan metric 2

Естественно, DEF=`/sbin/ip route |grep default| gawk '{print $3}'` получал чушь. Я некоторое время пытался понять, откуда берется вторая запись, но не нашел. Хук, вроде как, вешает лишь одну:

Nov 13 08:46:15 crits dhcpcd[16770]: lan: successfuly executed 'route add default gw 10.233.40.1'

В итоге, переписал скрипт на перле, заодно добавил туда защиту от повторного запуска при восстановлении соединения:
/etc/ppp/ip-up.d/fixroute.pl

# cat /etc/ppp/ip-up.d/fixroute.sh
#!/bin/sh

perl ./fixroute.pl

В общем, после всех этих увлекательных упражнений я получил MTU в локалке 1500, актуальную таблицу маршрутизации и исчезли (возможно) проблемы с повисанием закачек. Я проверил с одного внешнего IP и все работает.

Но если у вас трафик бесплатный и есть пара минут, то проверьте, пожалуйста, как subj качается.

Еще вопрос...

Раньше у меня запускался /etc/init.d/net.ppp0, а в этом варианте его нет. У меня есть некие сервисы, которые должны стартовать лишь после появления доступа к интернету, иначе они не смогут слушать нужные адреса. Я написал для них свой простенький rc-script в депенде которого был net.ppp0. А как мне теперь определить в рамках синтаксиса rc-скрипта, что интернет таки доступен?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".