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

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

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

DOCKER_IPTABLES_BYPASS Linux / DevOps

Траблшутинг Docker и межсетевых экранов: конфликты iptables и обход UFW

Обновлено: 21.08.2026
  • Docker пробрасывает порты наружу (-p 8080:8080), полностью игнорируя запрещающие правила ufw deny 8080.
  • Внутренние службы (Redis, Elasticsearch, БД) случайно становятся доступны всему интернету.
  • Сбои сети контейнеров после перезапуска службы iptables или firewalld.

1. Причина проблемы

Docker внедряет свои правила NAT в цепочку PREROUTING до того, как пакеты доходят до цепочек фильтрации UFW (цепочка INPUT). Контейнерный трафик обрабатывается в цепочке FORWARD.

2. Правильная блокировка через цепочку DOCKER-USER

Никогда не отключайте "iptables": false в daemon.json (это ломает исходящий NAT). Используйте штатную цепочку DOCKER-USER:

# Очистка цепочки DOCKER-USER
iptables -F DOCKER-USER

# Разрешить доступ к порту 3306 только с доверенного IP-адреса
iptables -I DOCKER-USER -i eth0 ! -s 192.168.1.50 -p tcp --dport 3306 -j DROP

# Разрешить уже установленные соединения
iptables -I DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Пропустить остальной трафик
iptables -A DOCKER-USER -j RETURN

3. Сохранение правил iptables

# Ubuntu / Debian
apt-get install -y iptables-persistent
netfilter-persistent save

# RHEL / Rocky Linux
iptables-save > /etc/sysconfig/iptables

4. Безопасная привязка портов только к Loopback интерфейсу

Если сервис нужен только локально или для Nginx reverse proxy:

docker run -d -p 127.0.0.1:5432:5432 postgres:alpine
💡 Практика специалистов: Самое надежное правило безопасности для production: если порт контейнера не должен быть доступен всему интернету, всегда явно указывайте локальный IP-адрес привязки (-p 127.0.0.1:8080:8080).

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

Почему опция 'iptables': false в /etc/docker/daemon.json приводит к проблемам?

При отключении iptables Docker перестает создавать правила Masquerade/SNAT. В результате контейнеры полностью теряют доступ к интернету и не могут резолвить внешние DNS-имена.

Как заставить UFW корректно фильтровать трафик Docker?

Используйте утилиту ufw-docker или пропишите правила перенаправления FORWARD в /etc/ufw/after.rules в цепочку DOCKER-USER.

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