Проверка MTU
Описание
MTU (Maximum Transmission Unit) — максимальный размер пакета данных, который может быть передан по сети без фрагментации. Проверка MTU помогает диагностировать проблемы с сетевым подключением, особенно при работе с VPN, туннелями или специфическими сетевыми конфигурациями.
Проверка MTU на разных операционных системах
macOS
На macOS используйте команду:
ping -D -s 8184 [destinationIP]
Примечание: В более новых версиях macOS (начиная с версии 11.x и 12.x) максимальный размер фрейма для ping должен быть следующим: {.is-info}
ping -D -s 8164 [destinationIP]
Параметры:
-D— установить флаг “Don’t Fragment” (не фрагментировать)-s 8184(или8164) — размер пакета данных (без учета заголовков IP и ICMP)[destinationIP]— IP-адрес или имя хоста назначения
Linux
На Linux используйте команду:
ping -M do -s 8972 [destinationIP]
Параметры:
-M do— установить флаг “Don’t Fragment” (не фрагментировать)-s 8972— размер пакета данных (без учета заголовков IP и ICMP)[destinationIP]— IP-адрес или имя хоста назначения
Windows
На Windows используйте команду:
ping -f -l 9000 [destinationIP]
Параметры:
-f— установить флаг “Don’t Fragment” (не фрагментировать)-l 9000— размер пакета данных (без учета заголовков IP и ICMP)[destinationIP]— IP-адрес или имя хоста назначения
Как интерпретировать результаты
Успешная проверка
Если пакет успешно доставлен без фрагментации, вы увидите ответ от удаленного хоста:
Это означает, что MTU поддерживает размер пакета, который вы тестируете.
Неудачная проверка
Если пакет слишком большой и не может быть передан без фрагментации, вы увидите сообщение об ошибке:
Linux/macOS:
Windows:
В этом случае нужно уменьшить размер пакета и повторить проверку.
Методика определения оптимального MTU
- Начните с максимального размера пакета для вашей ОС (см. команды выше).
- Если пакет не проходит, уменьшайте размер на 28 байт (размер заголовков IP и ICMP) и повторяйте проверку.
- Продолжайте до тех пор, пока пакет не пройдет успешно.
- Оптимальный MTU = размер успешного пакета + 28 байт (заголовки).
Примеры использования
Проверка MTU до удаленного сервера
# Linux
ping -M do -s 8972 <IP_адрес>
# macOS (старые версии)
ping -D -s 8184 <IP_адрес>
# macOS (новые версии 11.x+)
ping -D -s 8164 <IP_адрес>
# Windows
ping -f -l 9000 <IP_адрес>
Примечание: Замените
<IP_адрес>на IP-адрес сервера, до которого нужно проверить MTU. {.is-info}
Поиск оптимального MTU (Linux)
# Начните с большого размера
ping -M do -s 8972 <IP_адрес>
# Если не проходит, уменьшите на 28
ping -M do -s 8944 <IP_адрес>
# Продолжайте уменьшать до успешного результата
ping -M do -s 8916 <IP_адрес>
Примечание: Замените
<IP_адрес>на IP-адрес сервера, до которого нужно проверить MTU. {.is-info}
Важные замечания
Важно: Размер, указанный в параметре
-s(Linux/macOS) или-l(Windows), — это размер данных пакета без учета заголовков. Реальный размер пакета будет больше на 28 байт (20 байт IP-заголовок + 8 байт ICMP-заголовок). {.is-warning}
Примечание: Стандартный MTU для Ethernet составляет 1500 байт. Для проверки стандартного MTU используйте размер пакета 1472 байта (1500 - 28 = 1472). {.is-info}