数码资讯
使用iptables限制与docker容器的外部连接的步骤?
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
我的目标是将对docker容器的访问限制为几个公共IP地址.是否有一个简单,可重复的过程来实现我的目标?在使用Docker的默认选项时,只了解iptables的基础知识,我发现它非常困难.
我想运行一个容器,使其对公共Internet可见,但只允许来自选定主机的连接.我希望设置REJECT的默认INPUT策略,然后只允许来自我的主机的连接.但是Docker的NAT规则和链条阻碍了我的INPUT规则被忽略了.
鉴于以下假设,有人可以举例说明如何实现我的目标吗?
>在eth0上托管公共IP 80.80.80.80
>在eth1上托管专用IP 192.168.1.10
> docker run -d -p 3306:3306 mysql
>阻止与主机/容器3306的所有连接,但主机4.4.4.4和8.8.8.8除外
我很乐意将容器绑定到只有本地的ip地址,但需要有关如何正确设置iptables转发规则的说明,这些规则在docker进程和主机重启后仍然存在.
谢谢!
使用docker的防火墙规则时要记住两件事:>为避免您的规则被docker破坏,请使用DOCKER-USER链
> Docker在nat表的PREROUTING链中执行端口映射.这发生在过滤规则之前,因此–dest和–dport将看到容器的内部IP和端口.要访问原始目标,可以使用-m conntrack –ctorigdstport.
例如:
iptables -A DOCKER-USER -i eth0 -s 8.8.8.8 -p tcp -m conntrack --ctorigdstport 3306 -j ACCEPT iptables -A DOCKER-USER -i eth0 -s 4.4.4.4 -p tcp -m conntrack --ctorigdstport 3306 -j ACCEPT iptables -A DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 3306 -j DROP
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。