Правило iptables, вставленное контейнером, не работает на centos 7.6, но работает на ubuntu 18.04 - PullRequest
0 голосов
/ 22 марта 2020

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.

Любые подсказки?

...