Пакеты через шлюз проходят такие цепочки: PREROUTING, FORWARD, POSTROUTING и вам для каждой нужно правило. Еще нужно, что-бы была разрешена пересылка трафика. Нужно не только подменить адрес назначения (DNAT, PREROUTING), но и заменить адрес источника (SNAT, POSTROUTING), что бы Y-хост отвечал X-хосту, а не по маршруту по умолчанию, и еще не забыть про фильтрацию проходящего трафика (FORWARD).
*******************************************************
Чтобы все работало, так как описано выше, нужны такие действия: cho 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination Y...
Почему перестают работать очевидные правила iptables на хостовой машине, если на сервере запущены какие-либо docker контейнеры?
Давай разбираться.
Если коротко, то когда ты запускаешь docker контейнеры, то все начинает работать через одно место, по правилам маршрутизации самого docker’а. И плевать он хотел что у тебя там на хостовой машине было ранее сконфигурировано в плане безопасности.
Давай рассмотрим на примере как с этим можно побороться.
Вводные: На сервере крутится контейнер nginx, порты 80 и 443 смотрят в мир, то есть открыты для всех...