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

升级WSL后,WSL2 Ubuntu无法通过WSL主机IP访问Windows服务

解决WSL2升级后无法通过resolv.confIP访问Windows服务的问题

可能的原因及解决方案


1. 验证WSL主机IP的有效性

升级WSL后,NAT网络可能重置,导致/etc/resolv.conf中的nameserver IP并非当前WSL适配器的正确地址:

  • 在Windows PowerShell中执行:
    Get-NetAdapter "vEthernet (WSL)" | Get-NetIPAddress
    
    记录返回的IPv4地址,和WSL内cat /etc/resolv.conf的nameserver字段对比。如果不一致,说明resolv.conf的IP已过时。

2. 修复防火墙与端口转发规则

即使开启了WSL防火墙,升级后转发规则可能失效,需重新配置:

  • 以管理员身份运行PowerShell,执行:
    # 重置端口代理规则
    netsh interface portproxy reset all
    # 允许WSL网段(172.16.0.0/12)访问Windows所有TCP端口
    netsh advfirewall firewall add rule name="WSL2 Inbound" dir=in action=allow protocol=TCP localport=any remoteip=172.16.0.0/12
    

3. 确保Windows服务绑定所有网卡

如果Windows服务仅绑定了Wi-Fi适配器的IP(10.131.x.x),会导致WSL适配器IP无法访问:

  • 启动服务时强制绑定0.0.0.0(监听所有网卡),比如:
    # Windows终端执行
    python3 -m http.server 3457 --bind 0.0.0.0
    

4. 配置WSL静态IP(可选,避免IP动态变动)

如果频繁遇到IP变动问题,可给WSL设置静态IP:

  1. 在Windows PowerShell中查看WSL适配器的网关IP:
    Get-NetIPAddress -InterfaceAlias "vEthernet (WSL)" | Where-Object {$_.AddressFamily -eq "IPv4"}
    
  2. 在WSL的Ubuntu中编辑/etc/wsl.conf,禁用自动生成resolv.conf:
    sudo nano /etc/wsl.conf
    
    添加以下内容:
    [network]
    generateResolvConf = false
    
  3. 关闭并重启WSL:
    # Windows PowerShell执行
    wsl --shutdown
    
  4. 重新打开WSL,设置静态IP(替换为对应网段的IP和网关):
    sudo ip addr add 172.25.128.2/24 dev eth0
    sudo ip route add default via 172.25.128.1 dev eth0
    
  5. 手动更新/etc/resolv.conf:
    sudo echo "nameserver 172.25.128.1" > /etc/resolv.conf
    

5. 重置WSL网络栈

若以上方法无效,尝试重置整个WSL网络:

  • 以管理员身份运行PowerShell,执行:
    wsl --shutdown
    netsh winsock reset
    netsh int ip reset all
    ipconfig /flushdns
    
    重启电脑后再启动WSL测试。

内容的提问来源于stack exchange,提问作者lakshmi narayanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:47:25