【发布时间】:2018-01-11 20:26:32
【问题描述】:
我正在运行一个容器,我只想允许它访问特定的 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 表
iptables -N BEFORE_DOCKER
默认
iptables -I BEFORE_DOCKER -j DROP
Docker Containers 公共管理员访问权限(在此处插入所有允许的 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 Containers Restricted LAN Access(在此处插入您的 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
【问题讨论】:
标签: linux docker networking iptables