centos 7.6, iptables v1.4.21, Docker версия 19.03.1, сборка 74b1e89
Контейнер A и контейнер B были созданы на одном интерфейсе виртуального моста, поэтому они находятся в одном и том же su bnet. В целях тестирования другой контейнер C вставил два правила следующим образом:
iptables -I DOCKER-USER 1 -p tcp -s 172.20.0.5 --dport 2181 -j DROP
iptables -I DOCKER-USER 1 -p tcp -d 172.20.0.5 --sport 2181 -j DROP
iptables -L -n
Chain DOCKER-USER (1 references)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 172.20.0.5 tcp spt:2181
DROP tcp -- 172.20.0.5 0.0.0.0/0 tcp dpt:2181
RETURN all -- anywhere anywhere
Но они не имеют никакого эффекта. Работают те же правила: ubuntu 18.04, iptables v1.6.1, Docker версия 19.03.8 build afacb8b7f0
Я использовал "iptables -L -n -v -t nat" и "iptables -L -n -v -t фильтр "для отслеживания курса маршрутизации пакетов данных и обнаружил:
в Ubuntu 18.04, эти пакеты go через цепочку правил" forward"в таблице" filter", который ссылается на пользовательскую цепочку правил" DOCKER -USER ".
в centos 7.6, цепочка правил" prerouting, output, postrouting"в таблице" nat", поэтому они не блокируют передачу пакетов между контейнером A и контейнером B.
Любые подсказки?