MTU (Maximum Transmission Unit)

⌘K

MTU (Maximum Transmission Unit)

MTU — это предельный размер полезной нагрузки сетевого кадра или IP-пакета, который сеть готова передать за один раз без дробления. Проще: это «высота дверного проёма» для ваших пакетов данных. Если пакет выше — его придётся «разобрать» на части (фрагментировать) или он застрянет по дороге.

Где встречается. Значение MTU задаётся на интерфейсах: Ethernet и Wi-Fi в локальной сети, мобильных (4G/5G) и PPPoE-подключениях у провайдера, на виртуальных интерфейсах в облаке, а также внутри туннелей и VPN (WireGuard, OpenVPN, IPsec), инкапсуляций (GRE, VXLAN) и даже на виртуальных свитчах гипервизоров. Для классического Ethernet типичное MTU — 1500 байт, для PPPoE из-за заголовка часто 1492, в дата-центрах могут использовать «джамбо-фреймы» 9000 (требуют поддержки на всём пути). В IPv6 по стандарту минимальное MTU канала — 1280 байт.

Зачем важно. Неподходящее MTU приводит к:

  • лишней фрагментации (пакет делят, растут накладные расходы, падает скорость);
  • «чёрным дырам PMTU» (пакеты с флагом Don’t Fragment не помещаются, а ICMP-уведомления по дороге блокируются, из-за чего соединения подвисают);
  • странным сбоям: часть сайтов не открывается, загрузки «замирают», RDP/VPN отваливается, TLS-рукопожатия периодически проваливаются.

Path MTU Discovery (PMTUD). Современные стеки пытаются сами определить максимально допустимый размер на всём пути. В IPv4 узел с меньшей «дверью» сообщает ICMP «Fragmentation Needed», в IPv6 — «Packet Too Big». Если эти ICMP-сообщения фильтруются, автоподбор ломается — и начинаются подвисания.

MTU vs MSS. Не путайте MTU и MSS (Maximum Segment Size) у TCP. MSS ≈ MTU минус заголовки IP+TCP. Для Ethernet с MTU 1500 типичный MSS — 1460 байт (1500 − 20 IP − 20 TCP). Когда вы не контролируете MTU по пути (например, через VPN), помогает MSS-clamping — принудительное уменьшение MSS в SYN-пакетах, чтобы сегменты точно проходили.

MTU и VPN/инкапсуляция. Любая «обёртка» добавляет накладной заголовок и уменьшает полезный потолок внутри туннеля. Отсюда «народные» значения:

  • WireGuard часто настраивают около 1420 (иногда 1384–1420 — зависит от IP-версии и маршрута);
  • OpenVPN (UDP/TUN) нередко используют связку
    tun-mtu 1500
    +
    mssfix 1450
    или подбирают опытно;
  • IPsec/GRE/VXLAN — итоговая величина зависит от профиля шифрования/инкапсуляции; логика та же: внешнее MTU минус накладные байты = фактический потолок внутри.

Признаки неправильного MTU. Долгая «ступенька» в начале загрузки, рывки при скачивании, внезапные ERR_CONNECTION_RESET, сайты открываются по HTTP, но не по HTTPS, SSH «подвисает» на вводе пароля, а спидтест даёт нестабильные результаты — особенно «через VPN всё плохо, а напрямую нормально».

Как подобрать MTU практично (короткая методика).

  1. Найдите максимально проходящий размер без фрагментации до стабильного внешнего адреса.
    • Linux/macOS:
      ping -M do -s 1472 8.8.8.8

      Если «packet needs to be fragmented» — уменьшайте число после
      -s
      (1472 — это полезная нагрузка ICMP; вместе с заголовками IP+ICMP ~28 байт получится MTU).
    • Windows:
      ping -f -l 1472 8.8.8.8

      Тот же принцип: уменьшайте
      -l
      , пока пакеты проходят.
  2. Когда нашли максимальный
    payload
    , прибавьте 28 (IP+ICMP) — получите ориентир MTU по пути.
  3. Если используете VPN/туннель, вычтите его накладные байты (точное число зависит от протокола) — это и будет MTU внутри туннеля.
  4. Закрепите значение:
    • Linux:
      ip link set dev eth0 mtu 1500
      (или нужное).
    • WireGuard: в
      [Interface]
      добавьте
      MTU = 1420
      (пример).
    • Windows:
      netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
      .
  5. На граничном маршрутизаторе включите MSS-clamping (на случай «чёрных дыр»):
    • iptables:
      -j TCPMSS --clamp-mss-to-pmtu
    • nftables:
      tcp flags syn mss set clamp to pmtu
      .

Мини-пример для жизни. Провайдер выдал PPPoE-подключение (1492), поверх вы подняли WireGuard, а сайты через VPN иногда «висят». Пинг-подбор показал, что без VPN по пути проходит 1492, с учётом VPN-накладных вам комфортно стало на MTU ≈ 1412–1420 в конфиге WireGuard + включили MSS-clamp на роутере. Подвисания исчезли, скорость стала ровнее.

MTU — это про проходимость пакетов и стабильность. Правильное значение убирает лишнюю фрагментацию, предотвращает «чёрные дыры» PMTUD и делает VPN-трафик предсказуемым. Если что-то «словно упирается в потолок» — начните с проверки MTU и MSS-clamping: это самая частая и самая дёшевая победа в сетевой отладке.

VPS с перспективой

Планируете VPS на год? С кодом NEWCOM получаете больше, чем рассчитывали.

Месяц в подарок
COPIED
NEWCOM COPIED