[求助]宿主机无法 ping 通 docker 的 ubuntu 容器 - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
zcion

[求助]宿主机无法 ping 通 docker 的 ubuntu 容器

  •  
  •   zcion Apr 3, 2025 2684 views
    This topic created in 408 days ago, the information mentioned may be changed or developed.

    环境

    windows11 wsl2 + docker desktop + ubuntu22.04

    docker 拉取的 ubuntu 镜像是在原有 ubuntu22.04 的基础上自己 apt install 了一些常用工具的镜像。

    问题

    通过 docker 创建 ubuntu 容器 ubuntu_b,以下是其网络配置信息: Imgur

    在宿主机中(wsl2 环境) ping ubuntu_b 的 ip ( 172.17.0.3 )无法 ping 通,但 ping 其网关( 172.17.0.1 )却 ping 的通.

    宿主机( 172.20.166.206 ) ping ubuntu_ 容器: Imgur

    同时用 tcpdump 抓包: Imgur

    宿主机 ping 网关能通: Imgur

    但在 ubuntu_b 中 ping 宿主机能够 ping 通: Imgur

    ubuntu_b 中 ping 另一台 ubuntu 容器 ubuntu_c( 172.17.0.2 )也能够 ping 通,并且两者相互 ping 的通。 Imgur

    尝试

    自己查看了一些信息,也问了 deepseek ,主要还是说防火墙问题,但以上宿主机和 ubuntu 容器的防火墙都是默认接收所有流量的状态(这里贴的是 ubuntu_c 的,ubuntu_b 没有配置 root 权限无法查看,不过不影响问题的发生,ubuntu_c 同样有以上的问题): Imgur

    求大佬解答一下!!!

    13 replies    2025-04-04 01:33:48 +08:00
    ThreeSidedCoin
        1
    ThreeSidedCoin  
       Apr 3, 2025
    桥接网络?
    zcion
        2
    zcion  
    OP
       Apr 3, 2025
    @ThreeSidedCoin 是的,网络模式用的是默认设置
    hwdq0012
        3
    hwdq0012  
       Apr 3, 2025
    wsl 默认是 nat
    docker 默认也是 nat
    docker 运行在 wsl 中(如果设置了 docker 和 wsl2 集成的话

    host pin 子网 ubuntu ping 不通 是正常的
    子网的 ubuntu ping Host 能 ping 能 ping 通,说明子网路由正确


    wsl -l -v 可以看到一个 docker desktop 的实例, 你是在 docker desktop 里操作的吗
    如果是,我觉得 wsl ping 不通 contianer 是因为 docker 和 wsl 都是 hyper v 的 平级的虚拟网络子网
    zcion
        4
    zcion  
    OP
       Apr 3, 2025
    @hwdq0012 wsl -l -v 默认用的是 ubuntu22.04 的,并没有用 docker-desktop.
    docker-desktop 里也是设置的 ubuntu22.04 distros (settings->Resources->WSL integration).
    不理解为啥说宿主机 ping 不通容器 ip 是正常,我的理解是,两者都能够 ping 通容器网关(172.17.0.1),那正常来说外部也应该 ping 的通内部
    求解答
    hwdq0012
        5
    hwdq0012  
       Apr 3, 2025
    @zcion
    你说的 wsl 里 ping 不通 ubuntu 是 在哪个 wsl 里操作的
    你可以在 windows 下用 tracert 172.17.0.3 看看路由是怎么跑的
    zcion
        6
    zcion  
    OP
       Apr 3, 2025
    @hwdq0012
    在 ubuntu22.04 里操作的,当时安装 wsl2 用的这个
    ![Imgur]( )

    windows 中 tracert 的结果:
    ![Imgur]( )

    附带 wsl2 中 traceroute 的结果:
    ![Imgur]( )

    突然想起来,因为之前的某些缘故重新卸载在安装过 wsl 过,之后它的网关就有两个了,在 windows 中 ipconfig 的结果:
    ![Imgur]( )

    感谢大佬解答
    yinmin
        7
    yinmin  
       Apr 3, 2025
    docker 28.0 的 iptables 防火墙规则改了,默认不允许 ip forward 到容器里了。

    你试试在 docker host 里加一条防火墙规则:

    iptables -I DOCKER-USER -d 172.17.0.0/24 -j ACCEPT
    yinmin
        8
    yinmin  
       Apr 3, 2025
    我可能知道原因了,你的 windows 路由有问题。另外:172.30.0.1 不是你的 docker ,是你宽带电信营运商的某台服务器。你完全关闭 docker 和 wsl2 ,或者换一台别的电脑,然后 ping 172.30.0.1 也能 ping 通。
    bingfengfeifei
        9
    bingfengfeifei  
       Apr 3, 2025
    没用过这种环境,你可以先在 wsl2 环境中 排查下。
    使用 ip route 命令看下路由表发出来,然后 ip neigh 命令看看 arp 是否通了,MAC 获取到没。
    然后看下 cat /proc/sys/net/ipv4/ip_forward 看下 ip 转发开了没
    以及看下 ip link ,docker 用的什么接口
    看下 brctl show 网桥
    laminux29
        10
    laminux29  
       Apr 3, 2025
    wsl2 + docker desktop ,你这 Debuff 拉满了。VMware Workstation 也有网络问题。

    想要稳定,建议找台大内存的 x99 洋垃圾,安装 PVE 。
    XuHuan1025
        11
    XuHuan1025  
       Apr 3, 2025
    wsl2 遇到过很多问题 还是 vmwarre 好
    512357301
        12
    512357301  
       Apr 4, 2025 via Android
    [两者都能够 ping 通容器网关(172.17.0.1),那正常来说外部也应该 ping 的通内部]
    你这很明显有点想当然了,你的容器在 nat 内部,宿主机怎么可能访问到它。。。,除非开启端口转发,否则 nat 网络无解,别说 docker 了,虚拟机也是这样的逻辑啊。
    另外去复习或者学习下网络拓扑的入门知识吧。
    再另外,建议用虚拟机搞 docker 吧,wsl 坑挺多,不如虚拟机。
    siweipancc
        13
    siweipancc  
       Apr 4, 2025 via iPhone
    ……你要是不懂网络可以换成 mirror 网络模式
    About     Help     Advertise     Blog     API     FAQ     Solana     1051 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 61ms UTC 23:16 PVG 07:16 LAX 16:16 JFK 19:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86