Я недавно обнаружил Клиент Windows 7, который не может подключиться к одному из наших серверов. Оказалось, что проблема заключалась как в том, что сервер был настроен на MTU 1514, так и в том, что клиент был настроен на 1504.
На сервере работает CentOS и grep -i MTU /etc/sysconfig/network-scripts/ifcfg*
ничего не показывает. Непубличный интерфейс eth1
все еще было 1500. Ни на одной из наших других машин на стороне сервера нет ничего, кроме 1500 для MTU.
На стороне клиента была еще одна машина под управлением Windows 7, на которой также было 1504. Перенос этих машин за пределы площадки заставил их снова работать (но я не знаю, было ли это несмотря на неверный MTU, или если новое местоположение заставило Windows выбрать действительный), но не удалось вернуть его обратно.
Что заставило эти две машины с Windows иметь нестандартную настройку MTU? Как Windows определяет настройки MTU?
Почему бы eth0
было установлено значение MTU 1514? Как Linux определяет настройки MTU?
Должен ли я жестко кодировать MTU=1500
во все мои ifcfg
файлы из опасения, что что-то еще поднимет его выше? Что заменит значение по умолчанию 1500?
Клиент может выполнить Обнаружение MTU пути, который является наименьшим MTU на полном пути между двумя устройствами, а затем уменьшите MTU до соответствия. Это особенно необходимо для трафика, который не следует фрагментировать, например для IPSec.
Как упоминает Шейн Мэдден в комментариях выше, пропущенные пакеты ICMP на пути нарушат это. Я подозреваю, что на рынке есть некоторые коммутаторы, у которых все ICMP заблокированы по умолчанию, поэтому я хотел бы проверить, были ли введены какие-либо новые коммутаторы или маршрутизаторы, и нужно ли им включать трафик ICMP.