Linux 如何配置docker';s iptables规则DOCKER-USER限制输出?

Linux 如何配置docker';s iptables规则DOCKER-USER限制输出?,linux,docker,networking,iptables,Linux,Docker,Networking,Iptables,我正在运行一个容器,我只允许它访问特定的IP。换句话说,我想拒绝大多数目标IP 我尝试了以下方法: iptables -I DOCKER-USER -o custom-interface ! -d xxx.xxx.xxx.xxx -j REJECT 但是它拒绝了所有的连接,我不能ping xxx.xxx.xxx.xxx 这真的很奇怪,我想我只是通过自定义接口阻止了输出数据包,它不会到达xxx.xxx.xxx.xxx。因此,将到达xxx.xxx.xxx.xxx的所有传入数据包和输出数据包都被接受

我正在运行一个容器,我只允许它访问特定的IP。换句话说,我想拒绝大多数目标IP

我尝试了以下方法:

iptables -I DOCKER-USER -o custom-interface ! -d xxx.xxx.xxx.xxx -j REJECT
但是它拒绝了所有的连接,我不能
ping xxx.xxx.xxx.xxx

这真的很奇怪,我想我只是通过自定义接口阻止了输出数据包,它不会到达xxx.xxx.xxx.xxx。因此,将到达xxx.xxx.xxx.xxx的所有传入数据包和输出数据包都被接受

但似乎我错了。为什么?任何帮助都将不胜感激

编辑 接受的答案显示了如何配置传入限制,然后我学习了如何配置传出限制

创建BEFORE_DOCKER表 违约 Docker容器公共管理访问(在此处插入所有允许的IP) Docker容器限制LAN访问(在此处插入LAN IP范围或多个IP) 最后一步是将其作为正向链上的第一个表插入。
创建一个BEFORE_DOCKER表,默认规则为REJECT,下一步是将其作为正向链上的第一个表插入

创建BEFORE_DOCKER表 违约 Docker容器公共管理访问(在此处插入所有允许的IP) Docker容器限制LAN访问(在此处插入LAN IP范围或多个IP) 最后一步是将其作为正向链上的第一个表插入。
希望这会有帮助

根据[1],您应该使用
DOCKER-USER
链:

Docker的所有iptables规则都添加到
Docker
链中。请勿手动操纵此链。如果需要添加在Docker规则之前加载的规则,请将它们添加到
Docker-USER
链中。这些规则在Docker自动创建任何规则之前应用

例如,如果要阻止
docker0
接口中的所有容器访问
example.com
,可以执行以下操作:

iptables-I DOCKER-USER-d example.com-I docker0-j拒绝

[1]

我就是不明白你的答案。。。似乎可以配置一个iptable来控制哪些外部IP可以访问容器。但我想控制的是容器可以访问哪些外部IP。它只是直径。好的,尽管你给出了关于传入限制的答案。我还学习了如何配置传出限制,谢谢。
iptables -N BEFORE_DOCKER
iptables -I BEFORE_DOCKER -j DROP
iptables -I BEFORE_DOCKER -o eth0 -d 172.114.1.23 -j ACCEPT
iptables -I BEFORE_DOCKER -o eth0 -d 10.129.172.12 -j ACCEPT
iptables -I BEFORE_DOCKER -o eth1 -d 192.168.10.1 -j ACCEPT
iptables -I BEFORE_DOCKER -o eth1 -d 192.168.10.2 -j ACCEPT
iptables -I FORWARD -i docker0 -j BEFORE_DOCKER
iptables -N BEFORE_DOCKER
iptables -I BEFORE_DOCKER -j DROP
iptables -I BEFORE_DOCKER -i eth0 -s 172.114.1.23 -j ACCEPT
iptables -I BEFORE_DOCKER -i eth0 -s 10.129.172.12 -j ACCEPT
iptables -I BEFORE_DOCKER -i eth1 -s 192.168.10.1 -j ACCEPT
iptables -I BEFORE_DOCKER -i eth1 -s 192.168.10.2 -j ACCEPT
iptables -I FORWARD -o docker0 -j BEFORE_DOCKER