Как проверить, кто блокирует ICMP во время согласования пути MTU?
У меня проблемы с MTU при подключении к моему провайдеру веб-хостинга. Проблема в том, что я за ppoe с размером MTU, установленным в 1492, что не позволяет мне использовать 'scp'. После изменения MTU с 1492 на 1500 scp работает нормально, однако большинство других подключений - нет. Ни хостинг-провайдер, ни интернет-провайдер не подтверждают блокировку трафика ICMP. Есть ли способ проверить, кто (какой ip в пути) блокирует ICMP? Спасибо
4 ответа
MTU - это локальная проблема с точки зрения "работает" против "не работает". Если машины на обоих концах настроены на использование MTU, соответствующего их конкретному каналу связи, то маршрутизаторы в середине должны фрагментировать пакеты соответствующим образом для прохождения данных. Производительность пострадает, но вы должны получать трафик, даже если ICMP блокируются в середине.
Конечно, этого не произойдет, если между маршрутизаторами будет один или несколько каналов с неправильно настроенным MTU, но кто-то, вероятно, заметил бы это раньше.
Что касается проверки, где / если ICMP заблокирован, я предлагаю traceroute. Если вы используете Linux, самая последняя версия Ubuntu поставляется с умеренно подробным описанием проблем, связанных с блокировкой ICMP, и должна дать вам хорошее представление о том, откуда поступает этот блок. Поскольку у вас есть доступ с обеих сторон, вы должны быть в состоянии проверить в каждом направлении.
Вы можете использовать хост в сети с подтвержденным MTU>=1500 (для общедоступного Интернета, а не только для локальной линии связи) и отправлять большие запросы ping или другие пакеты с установленным флагом DF. С помощью сниффера, подобного Wireshark, на этом хосте вы должны видеть пакет "необходим входящий фрагмент ICMP" для каждого отправляемого вами пакета.
У меня были некоторые проблемы с моим провайдером DSL и некоторыми веб-серверами, но оказалось, что, пока мой провайдер отправлял пакеты ICMP, они, очевидно, фильтровались веб-серверами или их брандмауэрами. Это, по-видимому, характерно для Amazon Web Services и некоторых крупных CDN.
Единственный реальный способ определить это - посмотреть на сетевой трафик на обоих концах или, по крайней мере, посмотреть на трафик на вашем конце. Вы впервые подтвердили, что вы не тот, кто игнорирует их, посмотрев на сеть с вашей стороны?
Инструменты, которые вам нужны, это mturoute в windows или tracepath в *nix. Любой из этих инструментов позволяет вам найти MTU пути между двумя хостами и определить узкое место. Однако, если проблема заключается в том, что данный прыжок заблокировал ICMP, нарушая Path MTU Discovery, вам нужно будет немного глубже погрузиться, чтобы выяснить, в чем проблема.
Затем, конечно, вы должны убедить ответственную сторону исправить конфигурацию сетевого оборудования.