我在 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
数据包转发时仍然有效。
希望有帮助:)