现有机器 A,单网卡地址为 addA
。
机器上有两组容器,一组使用 docker-compose 编排,网段为dockernet1
,另一组使用 docker run 运行,为 mongodb,mysql 之类的,网段为dockernet2
,暴露出的端口有 3306,27017 等。
现在发现,在不设值任何 iptables 规则的默认情况下,dockernet1
中容器的应用无法通过机器的 IP+暴露出的端口(addA:27017
)访问dockernet2
中的容器的数据库。但是如果我设值了iptables -I INPUT -p tcp -s dockernet1/16 --dport 27017 -j ACCEPT
之后,虽然可以从 dockernet1 中访问,但也会导致全网都可以访问这个端口了。
经过测试尝试,我发现了如下现象:
addA:27017
的方式访问容器中启动的数据库;addA:27017
)可以访问数据库,在其他主机也可以;iptables -I INPUT -s dockernet1/16 --dport 27017 -j ACCEPT
后,会导致全网都可以访问这个端口,即使设值了默认 DROP 掉白名单之外的链接;addA:27017
形式建立的链接,但是没有抓到任何包;请教一下大家:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.