На некоторых виртуальных серверах для основного сетевого интерфейса может быть установлен MTU 1400. При использовании VPN и других сетевых туннелей это иногда приводит к фрагментации пакетов, снижению входящей скорости, потерям пакетов или нестабильной загрузке сайтов.
Исправить проблему можно одним из двух способов:
- Установить MTU 1500 на основном сетевом интерфейсе VDS. Это рекомендуемый вариант.
- Установить MTU 1220 в настройках туннельного подключения на клиентском устройстве.
Одновременно применять оба способа обычно не требуется.
Определение сетевого интерфейса
Подключитесь к серверу по SSH и выполните:
ip route show default
Пример результата:
default via 192.0.2.1 dev eth0
Название интерфейса находится после dev. В этом примере используется eth0.
В следующих командах замените eth0, если на вашем сервере интерфейс называется иначе.
Вариант 1. Установка MTU 1500 на VDS
Ubuntu с Netplan
Инструкция подходит для Ubuntu 20.04, 22.04 и 24.04.
Создайте дополнительный файл конфигурации:
sudo tee /etc/netplan/99-mtu.yaml >/dev/null <<'EOF'
network:
version: 2
ethernets:
eth0:
mtu: 1500
EOF
Проверьте конфигурацию и примените изменения:
sudo netplan generate
sudo netplan apply
sudo ip route flush cache
При применении сетевых настроек SSH-соединение может кратковременно прерваться.
Проверьте установленное значение:
ip link show eth0
В выводе должно присутствовать:
mtu 1500
Настройка сохранится после перезагрузки сервера.
AlmaLinux, Rocky Linux и CentOS Stream
Определите основной интерфейс и название подключения NetworkManager:
IFACE=$(ip route show default | awk '/^default/ {print $5; exit}')
CON=$(nmcli -g GENERAL.CONNECTION device show "$IFACE")
echo "Интерфейс: $IFACE"
echo "Подключение: $CON"
Установите MTU 1500:
sudo nmcli connection modify "$CON" 802-3-ethernet.mtu 1500
sudo nmcli connection up "$CON"
При повторной активации подключения SSH-соединение может кратковременно прерваться.
Проверьте результат:
ip link show "$IFACE"
В выводе должно присутствовать:
mtu 1500
Настройка сохранится после перезагрузки сервера.
Проверка MTU
После изменения выполните:
ping -4 -M do -s 1472 -c 5 1.1.1.1
Если пакеты передаются без сообщения message too long и без потерь, сетевой путь поддерживает MTU 1500.
Если установленное на сервере приложение продолжает использовать прежние сетевые параметры, перезапустите соответствующий сервис либо перезагрузите VDS:
sudo reboot
Вариант 2. Установка MTU 1220 в туннельном подключении
Если изменить настройки операционной системы VDS невозможно, установите MTU 1220 на устройстве, с которого выполняется подключение:
- Откройте настройки используемого подключения.
- Перейдите в дополнительные параметры подключения или протокола.
- Найдите параметр
MTU. - Установите значение
1220. - Сохраните настройки и переподключитесь.
Если подключение настраивается через конфигурационный файл, добавьте в раздел [Interface] следующую строку:
[Interface]
MTU = 1220
Значение необходимо установить отдельно на каждом клиентском устройстве.
Этот способ уменьшает размер пакетов внутри туннеля и помогает избежать фрагментации, но может незначительно снизить максимальную эффективность соединения.
Важные замечания
MTU 1500 необходимо устанавливать на основном сетевом интерфейсе VDS, например eth0.
Не следует устанавливать MTU 1500 непосредственно на интерфейсе VPN-туннеля. Для туннельного интерфейса значения около 1420 являются нормальными, поскольку часть размера пакета используется служебными заголовками.
Изменение MTU прежде всего помогает при низкой скорости, потерях пакетов и проблемах с загрузкой отдельных ресурсов. Если наблюдается только повышенная задержка, причина может находиться в маршрутизации или удалённости сервера.
Если на сервере отсутствуют команды netplan и nmcli, отправьте в службу поддержки результаты следующих команд:
cat /etc/os-release
ip -br link
ip route