docker网络(二)-----------iptables

Docker和iptables

在linux上,docker通过设置iptables规则来实现网络隔离.这属于内部实现,你也不应该插入iptables
规则来修改docker规则.但是,如果你想在docker管理之外添加自己的规则,你可能就需要了解这些细节了.

如果你的docker运行在连网的主机上,你可能想通过iptables限制对容器或者其他服务的未受权的访问.本
篇文章会介绍如何实现这些功能及需要注意的细节.

在Docker规则之前添加iptables策略

docker会添加"DOCKER-USER"和"DOCKER"两条iptables chain,这2条链会对所有入流量进行检查

所有docker的iptables规则都会加到DOCKER链中,不要手工操作这条.如果你需要在DOCKER链之前添加规则,添加到DOCKER-USER链
中.这些规则会自动应用在DOCKER链之前.

手工或通过工具添加到FORWARD链中的规则将会在Docker添加的规则之后.这意味着如果你通过docker导出了一个端口,这个端口将
会被docker导出而不管之前的防火墙配置如何.如果你想让之前添加的配置对导出的端口也生效,则需要像前面说的把它们加到DOCKER-USER
链中.

限制对Docker主机的连接

默认情况下,允许所有外部IP对Docker主机的连接.如是仅想特定的IP地址访问容器则在DOCKER-USER链中添加以下规则.比如,只允许
"192.168.1.1"访问.

$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP

你需要把ext_if替换成你的外部网卡名称,也可以允许一个网段访问.

$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP

你还可以通过"–src-range"选项来指定一段IP地址范围(记住需要同时指定-m iprange选项当使用–src-range或者–dst-range时):

$ iptables -I DOCKER-USER -m iprange -i ext_if ! --src-range 192.168.1.1-192.168.1.3 -j DROP

在路由器上运行Docker

Docker会在FORWARD链中设置DROP策略.如果你想让Docker主机运行路由功能,Docker添加的DROP规则会导致不转发任何流量.所以
你需要在DOCKER-USER链中添加ACCEPT规则

$ iptables -I DOCKER-USER -i src_if -o dst_if -j ACCEPT

阻止Docker操作iptables

通过在/etc/docker/daemon.json配置文件中设置iptables选项为false可以阻止docker操作iptables.但是这个选项对大多数用户
都不合适使用,不可能完全阻止Docker创建iptables规则,在Docker启动后操作这些会很复杂,而且很有可能会影响Docker的网络.

设置容器默认的bind地址

默认情况下,Docker daemon会在0.0.0.0地址提供服务.你可以通过"–ip"选项来指定具体的IP地址,比如你只想在内网提供服务.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

self-motivation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值