Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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