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 практично (короткая методика).
- Найдите максимально проходящий размер без фрагментации до стабильного внешнего адреса.
- Linux/macOS:
ping -M do -s 1472 8.8.8.8
Если «packet needs to be fragmented» — уменьшайте число после(1472 — это полезная нагрузка ICMP; вместе с заголовками IP+ICMP ~28 байт получится MTU).-s
- Windows:
ping -f -l 1472 8.8.8.8
Тот же принцип: уменьшайте, пока пакеты проходят.-l
- Linux/macOS:
- Когда нашли максимальный, прибавьте 28 (IP+ICMP) — получите ориентир MTU по пути.
payload
- Если используете VPN/туннель, вычтите его накладные байты (точное число зависит от протокола) — это и будет MTU внутри туннеля.
- Закрепите значение:
- Linux:(или нужное).
ip link set dev eth0 mtu 1500
- WireGuard: вдобавьте
[Interface]
(пример).MTU = 1420
- Windows:.
netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
- Linux:
- На граничном маршрутизаторе включите MSS-clamping (на случай «чёрных дыр»):
- iptables:
-j TCPMSS --clamp-mss-to-pmtu
- nftables:.
tcp flags syn mss set clamp to pmtu
- iptables:
Мини-пример для жизни. Провайдер выдал PPPoE-подключение (1492), поверх вы подняли WireGuard, а сайты через VPN иногда «висят». Пинг-подбор показал, что без VPN по пути проходит 1492, с учётом VPN-накладных вам комфортно стало на MTU ≈ 1412–1420 в конфиге WireGuard + включили MSS-clamp на роутере. Подвисания исчезли, скорость стала ровнее.
MTU — это про проходимость пакетов и стабильность. Правильное значение убирает лишнюю фрагментацию, предотвращает «чёрные дыры» PMTUD и делает VPN-трафик предсказуемым. Если что-то «словно упирается в потолок» — начните с проверки MTU и MSS-clamping: это самая частая и самая дёшевая победа в сетевой отладке.