如何configurationdocker的iptables规则DOCKER-USER限制输出?

我正在运行一个容器,我只想让它访问特定的ips。 换句话说,我想拒绝大部分目的地ips。

我已经尝试了以下内容:

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的数据包和输出数据包都将被接受。

但看来我错了。 为什么? 任何帮助是欣赏。

编辑

接受的答案显示如何configuration传入限制,然后我学会了如何configuration传出限制。

创build一个BEFORE_DOCKER表

 iptables -N BEFORE_DOCKER 

默认

 iptables -I BEFORE_DOCKER -j DROP 

Docker容器公共pipe理访问(在这里插入所有允许的IP)

 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 

Docker容器限制局域网访问(在这里插入您的局域网IP范围或多个IP)

 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 

最后一步是将其作为FORWARD链上的第一个表格插入。

 iptables -I FORWARD -i docker0 -j BEFORE_DOCKER 

创build一个默认规则为REJECT的BEFORE_DOCKER表,下一步是将其作为FORWARD链上的第一个表插入。

创build一个BEFORE_DOCKER表

 iptables -N BEFORE_DOCKER 

默认

 iptables -I BEFORE_DOCKER -j DROP 

Docker容器公共pipe理访问(在这里插入所有允许的IP)

 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 

Docker容器限制局域网访问(在这里插入您的局域网IP范围或多个IP)

 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 

最后一步是将其作为FORWARD链上的第一个表格插入。

 iptables -I FORWARD -o docker0 -j BEFORE_DOCKER 

希望它会帮助!