WSL内Ubuntu没有网络了

grapher 2026-07-23 14:50 1

- WSL2 内**完全无法联网**:`ping` / `curl` 外网、`apt`、DNS 解析全部失败。


- 典型伴随症状:WSL 启动时报 **mirrored 网络模式配置失败、自动从 mirrored 回退到 NAT** 的警告(大致为 `wsl: Failed to configure network (networkingMode Mirrored), falling back to networkingMode NAT`)。


- 「宿主机 / 局域网设备访问不到 WSL 内的代理或 Vite `0.0.0.0:26011` 服务」只是这个断网故障的**表象之一**,不是问题本身。


- 排查时 `ip addr` 可见 WSL 内多出一块 `198.18.0.1/30`(eth5)的 Clash TUN 虚拟网卡。


在 WSL2 里跑 Vite dev server,已用 --host 0.0.0.0 绑定到 0.0.0.0:26011(ss 确认

LISTEN、pid 正常),但从 Windows 宿主机和局域网其它设备(手机等)都访问不到 192.168.x.x:26011。排查时

ip addr 里还发现 WSL 内多出一块异常网卡 eth5 = 198.18.0.1/30。

最新回复 (7)
  • seven 07-23 14:54
    1

    根因:

    宿主机 Clash(Mihomo / Clash.Meta 内核)开着 TUN 模式,产生 198.18.0.1/30 虚拟网卡。WSL2 以 networkingMode=mirrored 启动时要镜像宿主机网卡,Clash TUN 网卡的存在使 mirrored 初始化失败并回退到 NAT,回退过程 / 结果导致 WSL 网络整体不通。


    解决方案(用户验证有效):

    先彻底关闭并退出整个 Clash(不只是关 TUN 开关,要退出 Clash 进程,让宿主机的 198.18.0.1 TUN 网卡消失),再重进 WSL(必要时先 wsl --shutdown 再重启)。宿主机 TUN 网卡消失后,WSL 能正常建立 mirrored 网络,联网恢复。


    溯源:

    TUN 网卡随 mirrored 模式镜像进 WSL,但那次只聚焦「外部设备访问 WSL 内 Vite:26011 访问不到」这一表象,根因归到 hostAddressLoopback 未开 + Hyper-V 防火墙。后经用户确认:真实问题是 Clash TUN 导致 WSL mirrored 回退 NAT、整体断网,退出 Clash 后恢复——本条为准。

  • grapher 楼主 07-23 15:01
    2

    可以,claude使用这个分析之后推荐我先这么尝试一下,确实可以使用,不过每次都要先开WSL才能使用clash,要不然就还是在WSL内没网

  • grapher 楼主 07-23 15:03
    3

    codex分析了一堆,给我设置各种clash规则,没生效,然后我使用Claude,按照楼下的解决方案,勉强能用,但是无法把clash开机启动,必须启用WSL之后才能启用,否则就还是这个WSL没有网络的问题,AI分析也没有给出更好的方案

  • snakelis 07-23 15:15
    4

    我现在是 WSL 网络模式NAT

    ~/.bashrc 启动自动执行代理检测和开启的脚本: ~/.proxy_toggle.sh

    目前实测使用下来网络基本没问题 (用的v2rayN)


    #!/bin/bash

    WIN_IP=$(ip route | grep default | awk '{print $3}')
    PORT=10808

    nc -z "$WIN_IP" "$PORT" > /dev/null 2>&1

    if [ $? -eq 0 ]; then
    export HTTP_PROXY="http://$WIN_IP:$PORT"
    export HTTPS_PROXY="http://$WIN_IP:$PORT"
    export GROK_PROXY_URL="http://$WIN_IP:$PORT"
    unset ALL_PROXY
    unset all_proxy
    echo "Proxy ON (HTTP): $WIN_IP:$PORT"
    else
    unset http_proxy
    unset https_proxy
    unset HTTP_PROXY
    unset HTTPS_PROXY
    unset GROK_PROXY_URL
    unset ALL_PROXY
    unset all_proxy
    echo "Proxy OFF"
    fi
  • grapher 楼主 07-23 15:50
    5

    nat模式下无法使用clash的代理,要使用就要写入proxy以及win的代理端口,并且里面开启的服务外面好像访问还要写代理,感觉不如mirrored模式更方便一些,可以直接共享使用VPN的代理

  • 黎维塔是好女孩么? 07-23 15:56
    6

    让AI帮你修一下,我刚玩wsl那会也是,codex一顿操作就好了

  • snakelis 07-23 15:58
    7

    我现在宿主机、 dockerDesktop + WSL 一起用的 ,三个地方的网络和服务都能互通 ,没遇到过你说的情况 ^-^

* 帖子来源Linux.do
返回