You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从同网络其他设备Ping通Windows主机上的Ubuntu 20.04(WSL)

无法从同网络其他设备Ping通Windows主机上的Ubuntu 20.04(WSL)

看起来你碰到的是WSL默认网络架构导致的典型问题——WSL 2默认采用NAT网络模式,这会让你的Ubuntu实例处于一个和Windows主机物理网络隔离的内部子网(也就是你看到的172.22.x.x网段),同局域网的其他设备自然没法直接访问到它的IP。结合你已经做的操作(关闭防火墙、允许ICMP、设置私有网络),下面给你几个可行的解决办法:

方法一:切换到桥接模式(推荐,WSL 2支持)

这个方法能让Ubuntu直接获取和Windows主机同网段的局域网IP,其他设备就能正常Ping通了:

  1. 先关闭所有WSL实例,在Windows的PowerShell或命令提示符里运行:
    wsl --shutdown
    
  2. 打开Windows的「网络连接」(可以通过Win+X菜单选择「网络连接」,或者在控制面板里找到),找到你当前正在使用的物理网络适配器(就是ipconfig里显示的Wi-Fi项,IPv4为192.168.1.5的那个),记下它的名称(比如「Wi-Fi」)。
  3. 回到Ubuntu,创建或修改/etc/wsl.conf文件,添加以下配置:
    [network]
    generateResolvConf = false
    [wsl2]
    networkingMode=bridged
    vmSwitch=Wi-Fi  # 这里替换成你刚才记下的物理适配器名称
    
  4. 保存文件后,重新启动WSL,此时Ubuntu会自动获取同网段的IP(比如192.168.1.x),你可以用ip addr确认,之后其他设备就能Ping这个IP了。

方法二:设置Windows端口转发(临时方案)

如果不想切换网络模式,可以通过Windows的端口转发功能,把针对主机的ICMP请求转发到Ubuntu的内部IP:

  1. 确认两个关键IP:Windows主机的局域网IP(192.168.1.5)、Ubuntu的内部IP(172.22.109.12)。
  2. 以管理员身份打开PowerShell,运行以下命令添加ICMP转发规则:
    netsh interface portproxy add v4tov4 listenaddress=192.168.1.5 listenport=0 connectaddress=172.22.109.12 connectport=0 protocol=icmp
    
    注意:WSL的内部IP每次重启可能会变化,所以这个方案需要每次重启WSL后更新转发规则,适合临时使用。

额外检查项

  • 确认Windows的Hyper-V虚拟交换机管理器中,桥接模式对应的虚拟交换机已正确绑定到你的物理网卡;
  • 虽然你关闭了防火墙,但可以再检查下Windows Defender防火墙的「高级设置」,确保私有网络的入站ICMP请求规则是允许的;
  • 尝试重启WSL实例和Windows的网络适配器,有时候网络缓存会导致异常。

备注:内容来源于stack exchange,提问作者Praveesh Ramroop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:02:59