Docker 将 IPtables FORWARD 策略改为 DROP

Docker 将 IPtables FORWARD 策略改为 DROP

我在 Amazon Linux 2 EC2 实例上安装了 OpenVPN,需要通过它转发数据包。在我启动docker实例之前,它一直有效。然后 FORWARD 策略变为 DROP,VPN 停止工作。

[root@ip-... ~]# iptables -L FORWARD
Chain FORWARD (policy ACCEPT)                             <<< See it's ACCEPT
target     prot opt source               destination         

然后我启动docker并再次检查:

[root@ip-... ~]# systemctl start docker

[root@ip-... ~]# iptables -L
Chain FORWARD (policy DROP)                               <<<< Turned to DROP
target     prot opt source               destination         
DOCKER-USER  all  --  anywhere             anywhere            
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

我尝试制定政策,/etc/sysconfig/iptables但没有帮助。

这似乎特定于 Amazon Linux 2,我在 Ubuntu 上似乎没有遇到这个问题。

有任何想法吗?

答案1

这是一种已知行为,记录于此处:路由器上的 Docker

解决办法是添加一条ACCEPT规则到DOCKER-USER链中:

~ # iptables -I DOCKER-USER -j ACCEPT

要使此更改永久生效,您可以将其设置为/etc/sysconfig/iptables

*filter
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ACCEPT
COMMIT

这将预先创建ACCEPT规则,并且当 docker 启动并将FORWARD策略更改为DENY数据包转发时仍然有效。

希望有帮助:)

相关内容