我正在运行一个容器,我想只允许它访问特定的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
希望它会有所帮助!!