微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

希望它会有所帮助!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐