Forbidden
V2EX  ›  Docker

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

  •  
  •   Forbidden · Aug 17, 2022 · 1849 views
    This topic created in 1366 days ago, the information mentioned may be changed or developed.
    我为了能直接访问 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 响应第二跳了,就是容器一直没有反应

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

    按正常脑子没病都不会这样操作,我属于脑子有病,用动态端口,而且还定时换端口
    我能想出来改动最小的就是用 静态路由+upnp ,都是现成的功能,都不需要太多额外设置
    Forbidden
        4
    Forbidden  
    OP
       Aug 18, 2022
    @chuckzhou 解决了,iptables forward 链 drop 改成 accept ,能 ping 通容器了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3867 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 04:29 · PVG 12:29 · LAX 21:29 · JFK 00:29
    ♥ Do have faith in what you're doing.