网络是通的,但无法连接到 docker 网络

2022-08-17 22:22:16 +08:00
 Forbidden
我为了能直接访问 docker 内部,我在路由器上加了静态路由,172.17.0.0/16 指向宿主机
A 是宿主系统 PhotonOS4/debian11(192.168.10.2),
B 是容器(172.17.0.2),C 是 win10(192.168.10.3)
AB 能互 ping ,AC 能互 ping ,
BC 之间刚开始能互 ping ,但是什么都没动过了 1 天就连不上了,B 能 pingC ,但 C 不能 pingB
重启了宿主 A ,重启了服务,没有变化
traceroute 能看到 A 响应第二跳了,就是容器一直没有反应

奇了个怪,以前也搞过这样的操作也没问题,而且这不是跨主机访问容器的方法吗,怎么失效了?
1196 次点击
所在节点    Docker
4 条回复
chuckzhou
2022-08-17 23:33:09 +08:00
缺省 B 在 NAT 后面,C 肯定是 ping 不到 B 的。
你看看是不是 masquerade 又被 docker engine 自动打开了。
还有 net.ipv4.ip_forward 是不是 1 ?
chuckzhou
2022-08-17 23:35:20 +08:00
而且访问容器基本不这么做。正常就是用 -p 把业务端口暴露出来就行了。
Forbidden
2022-08-18 09:53:28 +08:00
@chuckzhou net.ipv4.ip_forward = 1 ,开 /关 masquerade 都试了,都不行

按正常脑子没病都不会这样操作,我属于脑子有病,用动态端口,而且还定时换端口
我能想出来改动最小的就是用 静态路由+upnp ,都是现成的功能,都不需要太多额外设置
Forbidden
2022-08-18 10:34:18 +08:00
@chuckzhou 解决了,iptables forward 链 drop 改成 accept ,能 ping 通容器了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX