linux – 如何配置docker的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的传入数据包和输出数据包都是可接受的.

但似乎我错了.为什么?任何帮助都很感激.

编辑

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

创建BEFORE_DOCKER表

iptables -N BEFORE_DOCKER

iptables -I BEFORE_DOCKER -j DROP

Docker容器公共管理员访问权限(在此处插入所有允许的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容器受限制的LAN访问(在此插入您的LAN 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

解决方法:

使用认规则REJECT创建BEFORE_DOCKER表,下一步是将其作为FORWARD链上的第一个表插入.

创建BEFORE_DOCKER表

iptables -N BEFORE_DOCKER

iptables -I BEFORE_DOCKER -j DROP

Docker容器公共管理员访问权限(在此处插入所有允许的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容器受限制的LAN访问(在此插入您的LAN 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

希望它会有所帮助!!

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...