MTU, DSL роутер и остановка TCP

Я обнаружил проблему с остановкой TCP-соединения. Проблема возникает, когда я пытаюсь получить данные из удаленной системы из моей домашней сети. Моя домашняя сеть подключена к Интернету через PPPoE (ADSL+), и все работает идеально, если я работаю из моей домашней сети. Маршрутизатор ADSL имеет MTU, установленный на 1492, но с этой настройкой scp из удаленной системы не работает - срыв! Когда я изменяю MTU на моем маршрутизаторе на 1500, этот scp работает отлично, но доступ в Интернет из моей домашней сети очень медленный для большинства сайтов www - даже локальных. Просто интересно, где существует проблема - мой интернет-провайдер блокирует ICMP и т. Д.? Спасибо!

2 ответа

Решение

PPPoE требует 8 байтов данных инкапсуляции / заголовка, поэтому вы можете работать только с 1492-байтовым MTU в Ethernet. Но обычно такого рода вещи сортируются путем согласования пути MTU.

Если кто-то блокирует ICMP, согласование MTU пути не будет работать.

Ваши варианты - избавиться от PPPoE или изменить MTU в удаленной системе, чтобы справиться с вашим разорванным соединением. И да, я понимаю, что оба не идеальны.

Некоторые веб-серверы, особенно некоторые распространенные CDN, такие как Akamai, Amazon и т. Д., По-видимому, блокируют трафик ICMP по умолчанию (что, очевидно, является очень плохой идеей).

Сначала я подозревал неверную конфигурацию у своего провайдера, но я проверил ее (я отправил несколько больших пакетов с интернет-хоста на мой DSL-маршрутизатор и получил пакеты "Требуется фрагментация ICMP" от маршрутизаторов непосредственно перед DSL-соединением).

По-видимому, мой поставщик DSL использовал MSS-фиксацию на своих маршрутизаторах доступа для всех клиентов, но, похоже, они остановились.

Я решил эту проблему с помощью ограничения MSS на моем маршрутизаторе DSL, чтобы теперь он перезаписывал исходящие пакеты SYN таким образом, чтобы ограничить максимальный размер сегмента нисходящей линии связи. Команда для его включения:

iptables -A FORWARD -o ppp0 -p tcp \
    --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Если ваш домашний маршрутизатор не поддерживает iptables, вы, вероятно, могли бы изменить его для работы с исходящими пакетами на локальном хосте, изменив FORWARD на OUTPUT, но я никогда не пробовал этого.

Другие вопросы по тегам