阻止docker工访问特定的IP
我希望我的EC2实例具有基于IAM的权限,但不希望该实例上的docker容器具有相同的权限。 我相信它应该足以阻止访问魔术IP 169.254.169.254
。 是否足够运行: iptables -I DOCKER -s 169.254.169.254 -j DROP
我是否也需要使用--icc=false
或者--iptables=false
configuration我的--icc=false
守护进程?
最后得到这个工作,你需要在主机上添加这个规则:
1)当出站到169.254.169.254
端口80或443时丢弃docker桥包。
sudo iptables -I FORWARD -i docker0 -d 169.254.169.254 \ -p tcp -m multiport --dports 80,443 -j DROP
现在,如果我尝试在容器内连接:
$ sudo docker run -it ubuntu bash root@8dc525dc5a04:/# curl -I https://www.google.com HTTP/1.1 200 OK root@8dc525dc5a04:/# curl -I http://169.254.169.254/ # <-- hangs indefinitely, which is what we want
到特殊IP的连接仍然在主机上工作,但不能从容器内部工作。
注意:我的用例是针对Google Compute Engine,并阻止Docker容器访问169.254.169.254
上的元数据服务器,同时允许针对同一IP的DNS和其他查询。 您的里程可能在AWS上有所不同。