MTU и MRU: что это, как выбрать и настроить оптимальные значения

MTU и MRU: что это, какое значение ставить для PPPoE, VPN, Wi-Fi. Пошаговая настройка на Windows, Linux, роутерах. Таблица оптимальных размеров + диагностика проблем черных дыр

Представьте: вы открываете браузер, вбиваете адрес, ждёте… и ничего. YouTube не грузится, Steam выдаёт ошибку подключения, а VPN падает каждые 5 минут. Но при этом Telegram работает идеально, пинги проходят, и даже гуглится «почему не работает интернет». Знакомая картина?

В 80% случаев проблема не в провайдере и не в железе. Проблема в одной маленькой цифре, о которой 9 из 10 сисадминов вспоминают только после часа безуспешного траблшутинга. Эта цифра — MTU.

После прочтения этой статьи вы сможете:

  • За 5 минут диагностировать проблемы с MTU на любом устройстве
  • Подобрать оптимальное значение MTU для вашего типа подключения
  • Настроить MTU на Windows, Linux, macOS и популярных роутерах
  • Понять разницу между MTU и MRU (и почему это важно)
  • Решить проблемы с «чёрными дырами» в сети и фрагментацией пакетов

Быстрое решение для нетерпеливых: Если у вас PPPoE-подключение (Ростелеком, Дом.ру) и не открываются крупные сайты — попробуйте установить MTU 1492 на роутере или сетевой карте. В 70% случаев это решает проблему за минуту.

Что такое MTU простыми словами

MTU (Maximum Transmission Unit) — это максимальный размер пакета данных, который может быть передан по сети за одну операцию без разбиения на части.

Если совсем просто: это максимальный размер «контейнера», в который упаковываются ваши данные перед отправкой по интернету.

Аналогия с грузовиками и тоннелями

Представьте доставку товаров:

  • MTU — это максимальная высота грузовика, который может проехать по дороге
  • Данные — это товары, которые нужно доставить
  • Тоннели на пути — это различные типы сетевых соединений (Ethernet, PPPoE, VPN)

Если у вас есть грузовик высотой 1500 единиц (стандартный Ethernet), но на пути встречается туннель высотой 1492 (PPPoE), происходит одно из двух:

  1. Фрагментация (Fragment) — грузовик разбирается на части, проезжает по кусочкам через туннель, собирается на выходе. Это медленно и неэффективно.
  2. Отбрасывание (Drop) — если на пакете стоит флаг «Don’t Fragment» (DF), пакет просто отбрасывается, и вы получаете ошибку «Packet needs to be fragmented but DF set».

MTU — это максимальная высота грузовика, который может проехать по дороге
Данные — это товары, которые нужно доставить
Тоннели на пути — это различные типы сетевых соединений (Ethernet, PPPoE, VPN)Почему 1500 — стандарт?

Значение MTU 1500 байт — это стандарт для Ethernet, установленный ещё в 1980-х годах. Это компромисс между эффективностью передачи (чем больше пакет, тем меньше накладных расходов) и вероятностью ошибок (чем больше пакет, тем выше шанс повреждения при передаче).

Структура стандартного Ethernet-кадра:

  • 14 байт — Ethernet-заголовок
  • 1500 байт — полезные данные (MTU)
  • 4 байта — CRC (контрольная сумма)
  • Итого: 1518 байт — полный размер кадра

А что такое MRU?

MRU (Maximum Receive Unit) — это максимальный размер пакета, который устройство готово принять.

Ключевое отличие MTU от MRU:

Параметр MTU MRU
Направление Исходящие данные (что отправляем) Входящие данные (что принимаем)
Настраивается На отправляющей стороне На принимающей стороне
Где важно Ethernet, PPPoE, VPN PPPoE, PPP-туннели
Проблемы при несовпадении Фрагментация или дропы пакетов Обрезание входящих пакетов

Почему о MRU часто забывают?

В большинстве соединений (обычный Ethernet, Wi-Fi) MRU автоматически равен MTU, и его не нужно настраивать отдельно. Но в PPPoE и VPN-туннелях MRU играет критическую роль:

  • Если MTU = 1492, а MRU = 1500, то исходящие пакеты будут корректными, но крупные входящие пакеты могут обрезаться
  • Золотое правило: MTU и MRU должны совпадать или MRU ≥ MTU

Размер MTU в разных средах

Разные типы соединений имеют разные накладные расходы (overhead), что влияет на оптимальный размер MTU:

Тип соединения Стандартное MTU Overhead Почему именно так
Ethernet 1500 14 байт (заголовок) Базовый стандарт IEEE 802.3
PPPoE 1492 8 байт (PPPoE заголовок) 1500 — 8 = 1492
PPTP VPN 1400 ~100 байт (GRE + IP) Устаревший протокол
L2TP/IPSec 1460 ~40 байт (L2TP+IPSec) Типовое для корпоративных VPN
OpenVPN UDP 1450-1500 Зависит от настроек Можно уменьшить через tun-mtu
OpenVPN TCP 1400 TCP over TCP проблема Двойная инкапсуляция
WireGuard 1420 80 байт (headers) Оптимизированный протокол
IPSec (transport) 1442 ~58 байт Зависит от алгоритмов шифрования
Jumbo Frame 9000 14 байт Только для локальных сетей!
IPv6 (минимум) 1280 40 байт (IPv6 header) Обязательный минимум RFC 8200
3G/4G 1400-1500 Зависит от оператора Часто автоопределение

Какое MTU ставить? Таблица оптимальных значений

Самый частый вопрос: «Какое значение MTU мне нужно?» — зависит от типа вашего подключения. Вот исчерпывающая таблица:

Тип подключения / Оборудования Рекомендуемое MTU Рекомендуемое MRU Примечание
Ethernet (проводное) 1500 1500 Стандарт по умолчанию
PPPoE (Ростелеком, Дом.ру) 1492 1492 Или 1472 для старого оборудования
L2TP (Билайн VPN) 1460 1460 Типовое значение
PPTP (устаревшие VPN) 1400 1400 Лучше меньше из-за GRE
OpenVPN UDP 1500 1500 С учётом overhead в конфиге
OpenVPN TCP 1400 1400 TCP over TCP — снижаем!
WireGuard 1420 1420 Оптимально для большинства сетей
IPSec Site-to-Site 1400-1460 1400-1460 Зависит от режима (transport/tunnel)
3G/4G USB-модем 1400-1472 1400-1472 Часто автоопределение оператором
Wi-Fi (общее) 1500 1500 Стандарт, но бывают проблемы
DSL (ADSL/VDSL) 1492 1492 Обычно через PPPoE
Игровые консоли (PS5/Xbox) 1473 1473 Рекомендация от Sony/Microsoft
Steam/Epic Games 1500 1500 Лучше стандарт
Docker контейнеры 1450-1500 1450-1500 Зависит от overlay-сети
Kubernetes (CNI) 1440-1450 1440-1450 Calico, Flannel — разные значения
AWS VPC (default) 1500 1500 9000 для Jumbo Frame
Azure VNet 1500 1500 До 9000 в некоторых конфигурациях
Google Cloud VPC 1460 1460 По умолчанию занижен
NAS/iSCSI (локальная сеть) 9000 9000 Jumbo Frame для производительности

Важно: Эти значения — отправная точка. Идеальное MTU нужно подбирать для вашей конкретной сети методом тестирования (об этом ниже).

Как узнать текущее значение MTU

Перед тем как что-то менять, нужно понять, какое MTU у вас сейчас настроено.

Windows 10/11 (CMD/PowerShell)

Способ 1: Через netsh (рекомендуется)

# Открываем CMD от имени администратора
netsh interface ipv4 show subinterfaces

# Вывод:
#    МТИ  МедиаСост Вх.байты     Исх.байты   Интерфейс
# ------  ----------- ---------  ---------  ----------
# 4294967295        1          0          0  Loopback Pseudo-Interface 1
#   1500            1   12345678   87654321  Ethernet
#   1500            1    9876543   23456789  Wi-Fi

Колонка «МТИ» (или «MTU» в английской версии) — это текущее значение MTU для каждого интерфейса.

Способ 2: Через PowerShell

Get-NetIPInterface | Select-Object InterfaceAlias, NlMtu

# Вывод:
# InterfaceAlias                  NlMtu
# --------------                  -----
# Ethernet                         1500
# Wi-Fi                            1500
# Loopback Pseudo-Interface 1   4294967295

Способ 3: Через реестр (для любопытных)

# Путь в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}

# Параметр: MTU (тип DWORD)
# Если параметр отсутствует, используется автоматическое определение

Linux (ip/ifconfig)

Способ 1: Команда ip (современный метод)

ip link show

# Вывод:
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
# 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP

# Для конкретного интерфейса:
ip link show eth0 | grep mtu

Способ 2: Устаревший ifconfig

ifconfig eth0

# Вывод:
# eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
#         inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
#         ...

Способ 3: Через /sys (прямое чтение из ядра)

cat /sys/class/net/eth0/mtu
# Вывод: 1500

macOS

Способ 1: Через ifconfig

ifconfig en0 | grep mtu

# Вывод:
# en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

Способ 2: Через networksetup (GUI-подобный)

# Список всех интерфейсов
networksetup -listallnetworkservices

# Для конкретного интерфейса (например, Wi-Fi):
networksetup -getMTU Wi-Fi

# Вывод:
# Active MTU: 1500 (Hardware Default: 1500)

Роутеры (TP-Link, MikroTik, Keenetic, Zyxel)

TP-Link

Путь в веб-интерфейсе:

  1. Заходим в веб-интерфейс: обычно 192.168.0.1 или 192.168.1.1
  2. Network (Сеть) → Internet (Интернет)
  3. Прокручиваем вниз до Advanced Settings (Дополнительные настройки)
  4. Ищем MTU Size — текущее значение отображается там

MikroTik RouterOS

# Через терминал (SSH или WinBox → New Terminal)
/interface ethernet print

# Вывод покажет MTU для каждого интерфейса
# Например:
# Flags: X - disabled, R - running
#  0  R  name="ether1" mtu=1500 mac-address=...

# Для конкретного интерфейса:
/interface ethernet print detail where name=ether1

Keenetic

Путь:

  1. Веб-интерфейс: http://my.keenetic.net или 192.168.1.1
  2. Интернет → Другие подключения → Выберите ваше подключение
  3. Прокрутите до раздела Параметры IP
  4. Там будет поле MTU с текущим значением

Zyxel Keenetic / Zyxel NBG

Путь:

  1. Веб-интерфейс: обычно 192.168.1.1
  2. Configuration (Конфигурация) → Network (Сеть) → WAN
  3. Выберите активное WAN-подключение
  4. Ищите MTU Size в настройках интерфейса

Как подобрать идеальный MTU (пошаговый алгоритм)

Теперь самое важное: как найти оптимальное значение MTU для вашей сети.

Метод ping с запретом фрагментации (универсальный способ)

Этот метод работает для всех операционных систем и позволяет точно определить максимальное MTU без фрагментации.

Как это работает:

  1. Отправляем ICMP-пакет (ping) определённого размера
  2. Запрещаем фрагментацию (флаг Don’t Fragment)
  3. Если пакет проходит — MTU достаточно большое
  4. Если видим ошибку «Packet needs to be fragmented» — MTU слишком маленькое
  5. Подбираем максимальное значение, при котором пакет проходит
  6. Прибавляем размер заголовков (28 байт: 20 IP + 8 ICMP)

Пошаговая инструкция для Windows

# Открываем CMD

# Шаг 1: Начинаем с базового значения 1472
ping -f -l 1472 8.8.8.8

# Если проходит успешно:
# Ответ от 8.8.8.8: число байт=1472 время=15мс TTL=117

# Шаг 2: Увеличиваем на 1 и пробуем снова
ping -f -l 1473 8.8.8.8

# Если получаем ошибку:
# Требуется фрагментация пакета, но установлен запрещающий флаг.

# Значит, максимальное значение = 1472

# Шаг 3: Вычисляем MTU
# MTU = максимальный размер пакета + 28 байт заголовков
# MTU = 1472 + 28 = 1500

Объяснение флагов ping в Windows:

  • -f — устанавливает флаг Don’t Fragment (запрет фрагментации)
  • -l размер — размер отправляемых данных в байтах (без заголовков)

Пошаговая инструкция для Linux

# Шаг 1: Проверяем базовое значение
ping -M do -s 1472 8.8.8.8

# Вывод при успехе:
# PING 8.8.8.8 (8.8.8.8) 1472(1500) bytes of data.
# 1480 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=15.2 ms

# Шаг 2: Увеличиваем размер
ping -M do -s 1473 8.8.8.8

# Вывод при ошибке:
# ping: local error: message too long, mtu=1500

# Шаг 3: Вычисляем MTU
# Максимальное значение = 1472
# MTU = 1472 + 28 = 1500

Объяснение опций ping в Linux:

  • -M do — устанавливает флаг DF (Do not fragment) и запрещает локальную фрагментацию
  • -s размер — размер ICMP-данных (без заголовков IP и ICMP)

Пошаговая инструкция для macOS

# В macOS используется та же команда, что и в Linux
ping -D -s 1472 8.8.8.8

# Флаг -D устанавливает Don't Fragment
# Флаг -s задаёт размер данных

# Логика подбора та же:
# 1. Начинаем с 1472
# 2. Увеличиваем до появления ошибки
# 3. Найденное значение + 28 = MTU

Пример для PPPoE-подключения

Если у вас PPPoE (большинство провайдеров в России), типичный сценарий:

# Windows:
ping -f -l 1464 8.8.8.8  # Проходит
ping -f -l 1465 8.8.8.8  # Требуется фрагментация

# Максимум = 1464
# MTU = 1464 + 28 = 1492 ← оптимальное значение для PPPoE

Таблица для быстрого подбора

Размер ping (-l / -s) Результат Действие
1472 ✅ Успех Пробуем 1473
1473 ❌ Фрагментация MTU = 1472 + 28 = 1500
1464 ✅ Успех Пробуем 1465
1465 ❌ Фрагментация MTU = 1464 + 28 = 1492 (PPPoE)
1392 ✅ Успех Пробуем 1393
1393 ❌ Фрагментация MTU = 1392 + 28 = 1420 (WireGuard)

Что делать, если ping проходит, но сайты не грузят?

Классическая проблема: ping 8.8.8.8 работает отлично, но браузер виснет на загрузке крупных сайтов (YouTube, банки, почта).

Причина: Path MTU Discovery (PMTUD) не работает

PMTUD — это механизм автоматического определения максимального MTU на всём пути от отправителя до получателя. Он работает так:

  1. Отправитель шлёт пакет с флагом DF (Don’t Fragment)
  2. Если промежуточный роутер не может передать такой большой пакет, он отправляет обратно ICMP-сообщение «Fragmentation Needed» (Type 3, Code 4)
  3. Отправитель уменьшает MTU и пробует снова

Проблема «Чёрных дыр» (PMTUD Black Holes):

Некоторые файрволы и роутеры блокируют ICMP-сообщения «Fragmentation Needed». В результате:

  • Ваш компьютер шлёт большой пакет с DF
  • Промежуточный роутер не может его передать и отбрасывает
  • ICMP-сообщение об ошибке блокируется файрволом
  • Ваш компьютер не знает, что нужно уменьшить MTU, и продолжает слать большие пакеты
  • Соединение зависает

Решение:

  1. Принудительно снизьте MTU на 50-100 байт от максимального
  2. Например, если ping проходит с 1472, установите MTU не 1500, а 1450
  3. Проверьте работу сайтов
  4. Если не помогло, снижайте дальше (1400, 1350)
# Проверка PMTUD вручную
# Если этот пинг НЕ работает, но пинг без -f работает:
ping -f -l 1472 youtube.com

# То у вас проблема с PMTUD на пути к YouTube
# Решение: снизить MTU на роутере/ПК до 1450 или ниже

Настройка MTU на разных устройствах

Теперь вы знаете, какое MTU вам нужно. Пора его настроить.

Windows 10/11

Способ 1: Через netsh (рекомендуется)

# Открываем CMD от имени администратора

# Шаг 1: Смотрим список интерфейсов
netsh interface ipv4 show subinterfaces

# Шаг 2: Устанавливаем MTU для нужного интерфейса
# Синтаксис: netsh interface ipv4 set subinterface "Имя_интерфейса" mtu=ЗНАЧЕНИЕ store=persistent

netsh interface ipv4 set subinterface "Ethernet" mtu=1492 store=persistent

# Для Wi-Fi:
netsh interface ipv4 set subinterface "Wi-Fi" mtu=1492 store=persistent

# Шаг 3: Перезагружаем сетевой адаптер или перезагружаем ПК

Важно: Имя интерфейса должно точно совпадать (включая пробелы и регистр). Если в имени есть пробелы, используйте кавычки.

Способ 2: Через реестр (для опытных)

# 1. Открываем Редактор реестра (Win+R → regedit)

# 2. Переходим в:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

# 3. Находим подключ с вашим интерфейсом (смотрите по IP-адресу)

# 4. Создаём параметр DWORD (32 бита) с именем: MTU

# 5. Устанавливаем значение в десятичном формате, например: 1492

# 6. Перезагружаем ПК

Способ 3: Через сторонние утилиты

TCP Optimizer (бесплатная утилита от SpeedGuide):

  1. Скачиваем с https://www.speedguide.net/downloads.php
  2. Запускаем от имени администратора
  3. На вкладке «Advanced Settings» → «MTU»
  4. Устанавливаем нужное значение
  5. Нажимаем «Apply changes»
  6. Перезагружаем ПК

Linux (Debian/Ubuntu/CentOS)

Временная настройка (до перезагрузки)

# Устанавливаем MTU командой ip
sudo ip link set dev eth0 mtu 1492

# Проверяем
ip link show eth0 | grep mtu

Постоянная настройка — Debian/Ubuntu с netplan

# Редактируем конфиг netplan
sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      mtu: 1492
# Применяем изменения
sudo netplan apply

Постоянная настройка — Debian/Ubuntu с /etc/network/interfaces

sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
    mtu 1492
# Перезапускаем сеть
sudo systemctl restart networking

Постоянная настройка — CentOS/RHEL/AlmaLinux

# Для NetworkManager
sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.mtu 1492
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"

# Или через конфиг
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
# Добавляем строку:
MTU=1492
# Перезапускаем интерфейс
sudo ifdown eth0 && sudo ifup eth0

macOS

Временная настройка

# Устанавливаем MTU для интерфейса en0 (обычно Ethernet/Wi-Fi)
sudo ifconfig en0 mtu 1492

# Проверяем
ifconfig en0 | grep mtu

Постоянная настройка через networksetup

# Смотрим список сервисов
networksetup -listallnetworkservices

# Устанавливаем MTU для конкретного сервиса
sudo networksetup -setMTU "Wi-Fi" 1492

# Проверяем
networksetup -getMTU "Wi-Fi"

Роутеры: пошаговые инструкции

TP-Link

  1. Заходим в веб-интерфейс: 192.168.0.1 или tplinkwifi.net
  2. Network (Сеть) → Internet (Интернет)
  3. Прокручиваем вниз до Advanced Settings
  4. Находим поле MTU Size
  5. Меняем значение (например, с 1500 на 1492)
  6. Нажимаем Save (Сохранить)
  7. Роутер перезагрузится автоматически или нужно сделать это вручную

MikroTik RouterOS

# Через терминал (WinBox → New Terminal или SSH)

# Просмотр текущих значений
/interface ethernet print

# Изменение MTU для интерфейса ether1
/interface ethernet set ether1 mtu=1492

# Для PPPoE-клиента (если используется)
/interface pppoe-client print
/interface pppoe-client set 0 mtu=1492 mru=1492

# Проверка
/interface ethernet print detail

Важно для MikroTik: Обязательно устанавливайте и MTU, и MRU одинаковыми для PPPoE!

Keenetic

  1. Веб-интерфейс: http://my.keenetic.net
  2. Интернет → Выберите ваше подключение (например, «Проводное»)
  3. Прокрутите до Параметры IP
  4. Найдите MTU — измените значение
  5. Сохранить
  6. Роутер применит изменения автоматически

Zyxel Keenetic (старые модели)

  1. Веб-интерфейс: 192.168.1.1
  2. ИнтернетПодключение
  3. Выберите активное подключение
  4. В разделе Настройки параметров IP найдите MTU
  5. Измените значение
  6. Применить

VPN-клиенты

OpenVPN (.ovpn конфиг)

# Открываем .ovpn файл в текстовом редакторе
nano my-vpn-config.ovpn

# Добавляем или изменяем строки:
tun-mtu 1400
mssfix 1360

# Сохраняем и переподключаемся

Объяснение параметров:

  • tun-mtu 1400 — устанавливает MTU для TUN-интерфейса
  • mssfix 1360 — принудительно уменьшает TCP MSS (Maximum Segment Size) для избежания фрагментации

WireGuard

# В конфиге клиента (wg0.conf)
[Interface]
PrivateKey = ...
Address = 10.0.0.2/24
MTU = 1420

[Peer]
PublicKey = ...
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0

Подмена MTU для конкретного подключения (Linux)

# Для интерфейса VPN (например, tun0)
sudo ip link set dev tun0 mtu 1400

# Проверка
ip link show tun0

Проблемы из-за неправильного MTU: диагностика и лечение

Симптомы «MTU mismatch»

Вот классические признаки, что у вас проблема с MTU:

  • Google открывается (лёгкая страница, мало данных)
  • YouTube не грузится или зависает на «Loading…»
  • Ping проходит к любым серверам
  • Крупные сайты (банки, маркетплейсы) не открываются или открываются частично
  • Почта работает, но письма с вложениями не отправляются
  • Игры не подключаются к серверам или вылетают после загрузки
  • FTP/SFTP не может передать крупные файлы
  • SSH работает идеально
  • VPN подключается, но интернет через него не работает

Почему так происходит?

Маленькие пакеты (ping, DNS-запросы, текстовые страницы) проходят без проблем. Большие пакеты (загрузка видео, файлов, игровые данные) требуют фрагментации или отбрасываются из-за несовпадения MTU на пути.

Чёрные дыры MTU (PMTUD Black Holes)

Что это: Ситуация, когда промежуточный роутер отбрасывает пакеты, которые слишком большие, но ICMP-сообщение «Fragmentation Needed» не доходит до отправителя.

Как найти маршрутизатор-убийцу:

# Windows: tracert с большим пакетом
tracert -h 30 youtube.com

# Запоминаем маршрут, затем пингуем каждый хоп с большим MTU
ping -f -l 1472 [IP-адрес-хопа]

# Тот хоп, на котором пинг перестаёт проходить = проблемный роутер
# Linux: traceroute с MTU
traceroute -F -N 1 youtube.com

# Или tracepath (показывает MTU на каждом хопе)
tracepath youtube.com

# Вывод покажет, на каком хопе MTU уменьшается

Решение:

  1. Принудительно снизьте MTU на вашем роутере/ПК на 50-100 байт
  2. Если у вас есть доступ к проблемному роутеру — увеличьте на нём MTU
  3. Используйте MSS Clamping на вашем роутере (для TCP-трафика)

MSS Clamping — что это и как помогает

MSS (Maximum Segment Size) — это максимальный размер данных в одном TCP-сегменте (без заголовков).

Связь с MTU:

MSS = MTU - 40 байт (20 IP + 20 TCP заголовки)

# Например:
MTU 1500 → MSS 1460
MTU 1492 → MSS 1452
MTU 1400 → MSS 1360

MSS Clamping — это механизм на роутере, который принудительно уменьшает MSS в TCP-пакетах, проходящих через него. Это предотвращает фрагментацию даже при неправильном MTU на клиенте.

Настройка на MikroTik:

# Включаем MSS Clamping для PPPoE
/interface pppoe-client set 0 tcp-mss-fix=yes

# Или принудительно задаём MSS
/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn \
  tcp-mss=1360-65535 action=change-mss new-mss=clamp-to-pmtu

Настройка на Linux (iptables):

# Принудительно устанавливаем MSS 1360 для всех исходящих TCP-соединений
sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN \
  -j TCPMSS --set-mss 1360

# Или автоматически по PMTU
sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN \
  -j TCPMSS --clamp-mss-to-pmtu

Специфика для игр

Steam скачивает, но игры не запускаются

Проблема: Загрузка файлов идёт через HTTP (работает), но игровые серверы используют UDP с большими пакетами (не работает из-за MTU).

Решение:

  1. Установите MTU 1500 на сетевой карте
  2. Если не помогло — снизьте до 1450
  3. В настройках Steam: Settings → Downloads → Download Region — выберите ближайший регион

Discord звонки работают, но лобби в игре не видно

Проблема: Voice-трафик Discord использует маленькие пакеты (работает), игровое UDP-подключение требует большие пакеты (MTU mismatch).

Решение: Установите MTU 1473 на сетевом адаптере (рекомендация для игровых консолей, работает и для ПК).

Оптимальный MTU для популярных игр

Игра / Платформа Рекомендуемое MTU Примечание
CS2 (Counter-Strike 2) 1500 Стандарт работает лучше всего
Dota 2 1500 Valve рекомендует не менять
Call of Duty: Warzone 1473 Консольная оптимизация
Fortnite 1500 Epic Games серверы
Valorant 1500 Riot оптимизирует под стандарт
World of Warcraft 1500 Blizzard серверы
FIFA / EA Sports 1473 Консольная оптимизация
PlayStation Network 1473 Официальная рекомендация Sony
Xbox Live 1480 Microsoft рекомендация

Jumbo Frame — когда нужно MTU 9000?

Что такое Jumbo Frame и зачем это нужно

Jumbo Frame — это Ethernet-кадры с размером полезной нагрузки до 9000 байт (вместо стандартных 1500).

Зачем:

  • Уменьшение overhead (накладных расходов) — меньше заголовков на единицу данных
  • Снижение нагрузки на CPU — меньше прерываний при обработке пакетов
  • Увеличение пропускной способности на 10-20% для больших файлов

Где это действительно нужно:

  • NAS и файловые серверы — передача больших файлов в локальной сети
  • iSCSI — блочное хранилище по сети
  • Дата-центры — внутренние связи между серверами
  • Бэкап-серверы — ускорение резервного копирования
  • Кластеры БД — репликация данных

Когда НЕ НУЖНО ставить Jumbo Frame

  • Домашняя сеть для обычного использования (интернет-сёрфинг, стриминг)
  • Интернет-трафик — провайдеры не поддерживают Jumbo Frame
  • Wi-Fi — не поддерживает Jumbo Frame
  • Смешанное оборудование — если хотя бы одно устройство не поддерживает
  • VPN-туннели через интернет

Правило «всё или ничего»: Jumbo Frame работает только если ВСЕ устройства на пути поддерживают его:

  • Сетевые карты на обоих концах
  • Все свитчи между ними
  • Роутеры (если есть маршрутизация)

Если хотя бы одно звено не поддерживает — пакеты будут фрагментироваться или отбрасываться.

Настройка Jumbo Frame

Сетевая карта (Windows)

  1. Диспетчер устройств → Сетевые адаптеры
  2. ПКМ на адаптере → Свойства
  3. Вкладка «Дополнительно»
  4. Найти параметр «Jumbo Packet» или «Jumbo Frame»
  5. Установить значение 9000 или 9014
  6. OK → перезагрузка адаптера

Сетевая карта (Linux)

# Временно
sudo ip link set dev eth0 mtu 9000

# Постоянно (netplan)
network:
  ethernets:
    eth0:
      mtu: 9000

Свитч (управляемый)

В веб-интерфейсе свитча найти настройку «Jumbo Frame Support» и включить. Обычно это глобальная настройка на всё устройство.

Проверка:

# Windows
ping -f -l 8972 192.168.1.100

# Linux
ping -M do -s 8972 192.168.1.100

# Если проходит — Jumbo Frame работает
# 8972 + 28 = 9000

MTU в облаках и виртуализации

AWS (Amazon Web Services)

По умолчанию: MTU 1500 для большинства типов инстансов.

Jumbo Frame: MTU 9001 поддерживается внутри VPC между инстансами в одном регионе.

# Проверка текущего MTU на EC2
ip link show eth0

# Установка MTU 9001 (временно)
sudo ip link set dev eth0 mtu 9001

# Постоянно через cloud-init
# /etc/cloud/cloud.cfg.d/99-mtu.cfg
network:
  config:
    - type: physical
      name: eth0
      mtu: 9001

Важно: Jumbo Frame в AWS работает только внутри VPC. Трафик через Internet Gateway всегда ограничен 1500.

Azure (Microsoft)

По умолчанию: MTU 1500.

Jumbo Frame: Не поддерживается на большинстве типов VM. Некоторые специализированные инстансы (HPC) поддерживают до 3900.

# Проверка на Azure VM
ip link show eth0

# Azure обычно автоматически настраивает MTU через DHCP

Google Cloud Platform

По умолчанию: MTU 1460 (занижен из-за GRE-инкапсуляции).

Настройка:

# Создание сети с кастомным MTU
gcloud compute networks create my-network --mtu=1500

# Или изменение существующей
gcloud compute networks update my-network --mtu=1500

Важно: В GCP MTU настраивается на уровне VPC Network, а не отдельных VM.

Docker и контейнеры

Проблема: Docker по умолчанию создаёт veth-интерфейсы с MTU 1500, но если хост имеет меньший MTU (например, через VPN), возникают проблемы.

# Проверка MTU в контейнере
docker run --rm alpine ip link show eth0

# <a href="https://it-apteka.com/ustanovka-n8n-v-lxc-kontejner-proxmox-polnaja-instrukcija-ot-a-do-ja/" title="Установка N8N в LXC контейнер Proxmox: полная инструкция от А до Я"  data-wpil-monitor-id="438">Установка MTU для конкретного контейнера</a>
docker run --network bridge --mtu 1450 alpine

# Установка MTU для всей Docker-сети
docker network create --opt com.docker.network.driver.mtu=1450 my-network

Постоянная настройка в daemon.json:

# /etc/docker/daemon.json
{
  "mtu": 1450
}
# Перезапуск Docker
sudo systemctl restart docker

Kubernetes (CNI)

Разные CNI-плагины по-разному обрабатывают MTU:

  • Calico: Автоматически уменьшает MTU на 20-50 байт от хостового
  • Flannel: По умолчанию MTU 1450
  • Cilium: Автоматическое определение
  • Weave: MTU 1376 по умолчанию

Настройка для Calico:

# В манифесте calico.yaml
- name: FELIX_IPINIPMTU
  value: "1440"
- name: FELIX_WIREGUARDMTU
  value: "1420"

Часто задаваемые вопросы (FAQ)

MTU 1500 или 1492 — что лучше для PPPoE?

Ответ: Для PPPoE рекомендуется MTU 1492. PPPoE добавляет 8 байт заголовка к стандартному Ethernet-кадру, поэтому максимальная полезная нагрузка = 1500 — 8 = 1492. Если установить 1500 на PPPoE-соединении, пакеты будут фрагментироваться, что снижает производительность.

Почему после настройки MTU пропал интернет?

Возможные причины:

  1. Слишком маленькое MTU (меньше 576) — некоторые протоколы не работают
  2. Слишком большое MTU — все пакеты отбрасываются
  3. Неправильное имя интерфейса в команде настройки
  4. Не перезагрузили сетевой адаптер после изменения

Решение: Сбросьте MTU на дефолтное значение (см. вопрос ниже) и настройте заново.

MTU влияет на скорость интернета?

Ответ: Напрямую — нет, косвенно — да.

  • Правильное MTU не увеличивает скорость, но предотвращает фрагментацию, что снижает задержки и потери пакетов
  • Неправильное MTU может значительно снизить скорость из-за постоянной фрагментации и переотправки пакетов
  • Jumbo Frame в локальной сети может увеличить скорость передачи больших файлов на 10-20%

Как сбросить MTU на дефолтное значение?

Windows:

# Удалить параметр MTU (вернётся автоопределение)
netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent

# Или через реестр — удалить параметр MTU

Linux:

# Временно
sudo ip link set dev eth0 mtu 1500

# Постоянно — удалить параметр mtu из конфига netplan/interfaces

macOS:

sudo networksetup -setMTU "Wi-Fi" 1500

Роутер: Зайти в веб-интерфейс и установить MTU обратно в 1500 или выбрать «Auto».

Что такое MRU и надо ли его настраивать?

Ответ: MRU (Maximum Receive Unit) — максимальный размер пакета, который устройство готово принять. В большинстве случаев MRU автоматически равен MTU и настраивать его отдельно не нужно. Исключение: PPPoE и VPN-туннели — там MRU нужно устанавливать равным MTU вручную.

Отличается ли MTU для IPv4 и IPv6?

Ответ: Сам механизм MTU одинаков, но есть нюансы:

  • IPv4: Минимальный MTU 576 байт (стандарт RFC 791)
  • IPv6: Минимальный MTU 1280 байт (обязательно по RFC 8200)
  • IPv6-заголовок: 40 байт (на 20 больше, чем IPv4)
  • Для IPv6 через туннели (6in4, 6to4) нужно уменьшать MTU дополнительно

Рекомендация: Для двойного стека (dual-stack) устанавливайте MTU не менее 1280.

Нужно ли менять MTU для Wi-Fi?

Ответ: Обычно нет. Wi-Fi использует тот же MTU 1500, что и проводной Ethernet. Но в редких случаях (старое оборудование, плохое покрытие) снижение MTU до 1400-1450 может улучшить стабильность соединения за счёт уменьшения вероятности повреждения больших кадров.

Можно ли сделать автоматическую настройку MTU?

Ответ: Частично да, через DHCP Option 26 (Interface MTU). Современные роутеры и DHCP-серверы могут автоматически сообщать клиентам оптимальное MTU при получении IP-адреса. Но не все клиенты поддерживают эту опцию.

Path MTU Discovery (PMTUD): Автоматическое определение максимального MTU на всём пути от источника до назначения. Работает хорошо, если нет «чёрных дыр» (файрволов, блокирующих ICMP).

Заключение и рекомендации

Теперь вы знаете о MTU и MRU всё, что нужно системному администратору, сетевому инженеру или продвинутому пользователю.

Краткий алгоритм «Диагностика → Подбор → Настройка»

  1. Диагностика:
    • Проверьте текущее MTU: netsh interface ipv4 show subinterfaces (Windows) или ip link show (Linux)
    • Определите тип подключения (Ethernet, PPPoE, VPN)
  2. Подбор оптимального значения:
    • Используйте ping с флагом Don’t Fragment: ping -f -l 1472 8.8.8.8 (Windows)
    • Найдите максимальный размер без фрагментации
    • Прибавьте 28 байт — это ваш идеальный MTU
  3. Настройка:
    • Установите MTU на роутере (приоритет №1) или на сетевом адаптере ПК
    • Для PPPoE/VPN обязательно установите MRU = MTU
    • Перезагрузите сетевое оборудование
    • Проверьте работу крупных сайтов и игр

Когда НЕ нужно трогать MTU

В 90% случаев стандартное значение MTU 1500 работает идеально. Не меняйте MTU, если:

  • ✅ Всё работает нормально (сайты грузятся, игры идут, VPN стабилен)
  • ✅ У вас обычное проводное Ethernet-подключение без PPPoE
  • ✅ Провайдер автоматически настроил оборудование
  • ✅ Вы не понимаете, зачем вам это нужно

Меняйте MTU только если:

  • ❌ Сайты не грузятся, но ping проходит
  • ❌ VPN подключается, но интернет через него не работает
  • ❌ Игры вылетают при подключении к серверам
  • ❌ У вас PPPoE, L2TP или другие туннели с overhead
  • ❌ Провайдер явно рекомендовал изменить MTU

Золотые правила работы с MTU

  1. MTU и MRU должны совпадать (особенно на PPPoE и VPN)
  2. Меньше — безопаснее: если сомневаетесь, лучше занизить на 50 байт
  3. Не используйте Jumbo Frame для интернет-трафика
  4. Проверяйте настройки после каждого изменения (ping + открытие крупных сайтов)
  5. Документируйте: записывайте, какие значения и почему установили

💡 Профессиональный совет: Сохраните эту статью в закладки. MTU — это одна из тех вещей, о которых вспоминаешь раз в полгода, когда что-то ломается. Иметь под рукой готовое руководство с командами и таблицами — это экономия нескольких часов траблшутинга. Теперь вы знаете о пакетах больше, чем 90% системных администраторов!


Остались вопросы или столкнулись с нестандартной ситуацией? Пишите в комментарии — разберём вместе! Поделитесь своим опытом настройки MTU, это поможет другим читателям.

Подпишитесь на наш Telegram-канал IT-Apteka — публикуем готовые решения для сетевых проблем, разборы сложных кейсов, лайфхаки по настройке оборудования. Только практика от реальных инженеров!

Полезные ссылки:

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх