V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tppttw
V2EX  ›  Docker

有关 docker 默认 iptables 规则的请教

  •  
  •   tppttw · 14 天前 · 744 次点击

    背景: 宿主机 IP 为 10.0.0.1 ,容器部署在宿主机的默认网桥上,容器 A 的 ip 为 172.17.0.2 ,容器 B 的 ip 为 172.17.0.3 宿主机的端口 50000 映射到容器 A 中 已知现象: 在外部 PC 上可以通过 telnet 10.0.0.1 50000 访问到容器 A 的 50000 端口 在宿主机上可以通过 telnet 10.0.0.1 50000 访问到容器 A 的 50000 端口 在宿主机上可以通过 telnet 172.17.0.2 50000 访问到容器 A 的 50000 端口 在容器 B 中,可以通过 telnet 172.17.0.2 50000 访问到容器 A 的 50000 端口 问题是: 在容器 B 中,无法通过 telnet 10.0.0.1 50000 访问到容器 A 的 50000 端口

    iptables 表项如下

    Chain PREROUTING (policy ACCEPT 6203 packets, 511K bytes)
     pkts bytes target     prot opt in     out     source               destination
       52  3088 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3128 LOG flags 0 level 4 prefix "PREROUTING: "
     4215  189K DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
    
    Chain DOCKER (2 references)
     pkts bytes target     prot opt in     out     source               destination
        3   180 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0
       49  2964 RETURN     all  --  br-9950295a8b77 *       0.0.0.0/0            0.0.0.0/0
        2    88 DNAT       tcp  --  !br-9950295a8b77 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8800 to:172.16.0.88:80
       10   568 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:50000 to:172.17.0.2:50000
    
    

    从规则来看,理解是 docker0 中发来的包在命中 DNAT 规则前就 RETURN 了,为什么会这样呢,是鼓励容器网络中互访应该直接使用容器自身的 IP 吗?

    1 条回复    2024-09-02 19:10:25 +08:00
    julyclyde
        1
    julyclyde  
       14 天前
    你这个如下不对
    不要用 iptables 空格-L
    而要用 iptables-save 注意中间没有空格
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:30 · PVG 03:30 · LAX 12:30 · JFK 15:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.