Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

DOCKER_MTU_MISMATCH Linux / DevOps

Траблшутинг конфликтов MTU в сетях Docker: настройка daemon.json и VPN

Обновлено: 21.08.2026
  • Контейнер успешно пингует удаленные хосты (ICMP проходит), но зависает на этапе выполнения curl, apt-get update или установки TLS-соединения.
  • Разрыв TCP-сессий при передаче крупных пакетов через туннели VPN (WireGuard, OpenVPN, IPsec, GRE).
  • Внутренние пакеты Docker Swarm Overlay-сетей дропаются коммутаторами из-за накладных расходов заголовка VXLAN (50 байт).

1. Проверка текущего MTU на хосте и в сетях Docker

# MTU физического или VPN интерфейса хоста
ip link show

# MTU интерфейсов Docker bridge
ip link show docker0

2. Глобальная настройка MTU в /etc/docker/daemon.json

Если хост использует VPN (например, WireGuard с MTU 1420), значение MTU для Docker должно быть равно или меньше (например, 1420):

{
  "mtu": 1420
}
systemctl daemon-reload && systemctl restart docker

3. Настройка MTU для пользовательских сетей в Docker Compose

version: "3.8"
networks:
  custom_vpn_net:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 1420

4. Корректировка MTU для Docker Swarm Overlay сетей

Для оверлейных сетей VXLAN уменьшите MTU минимум на 50 байт от физического интерфейса (1500 - 50 = 1450):

docker network create \
  --driver overlay \
  --opt mtu=1450 \
  swarm_overlay_net
💡 Практика специалистов: Изменение mtu в daemon.json не меняет MTU для уже существующих пользовательских сетей. Все созданные ранее кастомные сети bridge и overlay потребуется удалить и пересоздать заново.

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

Почему ICMP (ping) работает, а HTTP/HTTPS трафик зависает при ошибках MTU?

Пакеты ICMP ping имеют маленький размер (обычно 64 байта) и не превышают MTU. При TLS Handshake размер сертификата превышает MTU, а флаг DF (Don't Fragment) запрещает фрагментацию, что приводит к молчаливому отбрасыванию пакетов (Black Hole Router).

Как вычислить оптимальный MTU с помощью утилиты ping?

Выполните тест ping с запретом фрагментации: ping -M do -s 1472 <ip_адрес>. Уменьшайте размер нагрузки (-s), пока пакеты не перестанут дропаться, затем прибавьте 28 байт (заголовки IP+ICMP).

Полезные материалы
Рекомендуем