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

WSL 网络突然不可用了,真的是得远离瘟到死

  •  
  •   kischang · 2021-10-18 16:41:23 +08:00 · 4231 次点击
    这是一个创建于 892 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前一切正常,最近也没有安装啥更新的
    突然间今天发现开发工具连不上 WSL 里的 mysql 了,遂进去检查,发现 wsl 里的网络没有了
    没有到 Ubuntu 报的是没有网络设备
    什么重置网络、重新启用 Linux 子系统,全都试了没用
    wsl 也没有 netplan 、networking 什么乱七八糟的东西,网络都是不能配置的,也不能重启相关网络服务
    真的不知道怎么操作了

    瘟到死真的是
    第 1 条附言  ·  2021-10-18 17:19:38 +08:00

    谢谢大家得帮助,我最终通过 Google + stackoverflow 解决了问题
    解决方法是 Disable swap
    在 windows 中添加如下文件 %userprofile%.wslconfig,内容是:

    [wsl2]
    swap=0
    

    但具体是因为什么原因导致的,还不清楚

    第 2 条附言  ·  2021-10-18 17:46:49 +08:00
    结帖
    找到问题的原因了,简单说就是不要启用磁盘压缩,磁盘压缩了 swap,导致了问题
    但至于为啥 swap 压缩会影响网络,不知道
    以及微软官方说的压缩只是 ntfs 4k 的问题,而非真正的文件压缩,是怎么影响到功能的,不知道


    感谢 @mxT52CRuqR6o5 提供的链接
    https://stackoverflow.com/questions/66338549/wsl2-network-unreachable
    https://github.com/microsoft/WSL/issues/5437#issuecomment-647161596
    第 3 条附言  ·  2021-10-18 18:50:44 +08:00
    感谢 @weiceshi 的讲解

    具体问题详情大家可以看#27 、#29 、#31 楼
    34 条回复    2021-10-19 22:07:32 +08:00
    string2020
        1
    string2020  
       2021-10-18 16:43:23 +08:00
    自己不会玩把
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       2021-10-18 16:45:05 +08:00   ❤️ 2
    @string2020 会玩的帮忙解决一下
    SIGEV13
        3
    SIGEV13  
       2021-10-18 16:45:40 +08:00
    用管理员 PowerShell 重启服务
    xxxx> Restart-Service LxssManager
    kischang
        4
    kischang  
    OP
       2021-10-18 16:46:09 +08:00
    @string2020 #1 我是真得不会玩了,求大佬支个招
    qq316107934
        5
    qq316107934  
       2021-10-18 16:46:16 +08:00
    vhdx 备份下,重装 WSL2 吧。(是 2 吗?还是 1 )
    SIGEV13
        6
    SIGEV13  
       2021-10-18 16:46:23 +08:00
    docker 和自带的 kubernetes 猝死的时候这么干也好用
    kischang
        7
    kischang  
    OP
       2021-10-18 16:47:50 +08:00
    @SIGEV13 #3 没用,重启系统、程序和功能里禁用 linux 再启用都没效果
    kischang
        8
    kischang  
    OP
       2021-10-18 16:50:45 +08:00
    简单列一下情况
    wsl2,Ubuntu18.04

    试过,Restart-Service LxssManager 、net stop/start LxssManager 、重启系统,无效
    试过,程序和功能,禁用 Linux 子系统再启用,无效
    试过,netsh winsock reset / netsh int ip reset all, 无效

    目前其他招还没有找到
    Tony042
        9
    Tony042  
       2021-10-18 16:53:11 +08:00
    @kischang 应该是 wsl 2 网络设置的文章,试下这个改 dns 的 https://gist.github.com/coltenkrauter/608cfe02319ce60facd76373249b8ca6
    kischang
        10
    kischang  
    OP
       2021-10-18 16:53:47 +08:00
    Restart-Service -Force -Name hns,Restart-NetAdapter -Name "vEthernet (WSL)",也试过了,无效
    kischang
        11
    kischang  
    OP
       2021-10-18 16:55:06 +08:00
    @Tony042 #9 应该跟 dns 没有管理
    现在 ifconfig,没有任何输出,连 lo 设备都没有,用 ifconfig eth0 up 起来后,也没有 ip
    hwdef
        12
    hwdef  
       2021-10-18 16:59:05 +08:00
    重启
    hwdef
        13
    hwdef  
       2021-10-18 16:59:31 +08:00
    重开
    重启
    重装

    win 三连
    kischang
        14
    kischang  
    OP
       2021-10-18 17:01:13 +08:00
    @hwdef #13 现在真的就剩重装了,但要真重装,我就直接转 Linux 了,这个 wsl bug 还是有点多
    hwdef
        15
    hwdef  
       2021-10-18 17:02:14 +08:00
    @kischang
    按照#5 说的,备份一下,重装之后导入,应该不会有什么损失。
    hwdef
        16
    hwdef  
       2021-10-18 17:02:36 +08:00
    @kischang 你搞什么 hyperv 的东西了吗,wsl2 那套都是托管在 hyperv 上。
    qq316107934
        17
    qq316107934  
       2021-10-18 17:03:37 +08:00
    @kischang 先梳理下情况吧,在 WSL 里 ping 会返回 Unreachable 吗? ifconfig 是什么情况,有分配到 IP 和对应的 interface 吗?
    在 WSL 外的宿主机,ipconfig 里有 vEthernet(WSL)相关的适配器吗?有的话到网络中心看适配器属性有没有流量。
    kischang
        18
    kischang  
    OP
       2021-10-18 17:04:23 +08:00
    @Tony042 #9 本着死马当做活马医,还是试了一下,无效
    hwdef
        19
    hwdef  
       2021-10-18 17:06:42 +08:00
    看看网络适配器里的状态,wsl 的网卡在 win 中也会有映射
    kischang
        20
    kischang  
    OP
       2021-10-18 17:15:46 +08:00
    谢谢大家得帮助,我最终通过 Google 和 stackoverflow 解决了问题
    解决方法是 Disable swap
    在 windows 得目录添加如下文件 %userprofile%\.wslconfig,内容是:
    [wsl2]
    swap=0
    kischang
        21
    kischang  
    OP
       2021-10-18 17:17:41 +08:00
    @qq316107934 #17 问题解决了,在 20 楼
    ifconfig 没有任何输出,没有任何 interface
    机器上有 wsl1 和 wsl2 两个 Ubuntu,wsl1 一直是正常得,wsl2 突然出得问题
    qq316107934
        22
    qq316107934  
       2021-10-18 17:21:16 +08:00
    @kischang 为啥 swap 会影响网络...太迷了
    hwdef
        23
    hwdef  
       2021-10-18 17:25:01 +08:00
    ???? swap 影响网卡?啥原因
    qq316107934
        25
    qq316107934  
       2021-10-18 17:35:23 +08:00
    @mxT52CRuqR6o5 看 mentioned issue 就知道有多少人被坑了...
    kischang
        26
    kischang  
    OP
       2021-10-18 17:38:14 +08:00
    @qq316107934 #22
    @hwdef #23
    嗯,not exist FIB table,试了几个答案,试到了禁用 swap 就可以了,具体原因真的是不知道,也没有找到对应 wsl 的 issue
    这是答案的链接: https://stackoverflow.com/questions/66338549/wsl2-network-unreachable
    weiceshi
        27
    weiceshi  
       2021-10-18 18:01:42 +08:00   ❤️ 8
    楼主的 %Temp% 文件夹是不是启用压缩了?
    .wslconfig 文件中两个参数的默认值如下
    swap 25% of memory size on Windows rounded up to the nearest GB
    swapFile %USERPROFILE%\AppData\Local\Temp\swap.vhdx

    所以如果 swapFile 在 wsl 中无法写入(发生最多的情况是 %TEMP% 文件夹开启压缩),那么 wsl 初始化过程中发现无法创建交换文件,所以跳过了后面的步骤,包括网络初始化
    所以解决的方案就是两种
    其中一种:就是楼上大家说的设置 swap=0,跳过 swap 创建
    另外一种:使 swapFile 可写,比如通过设置 swapFile 到其他路径,或者关闭%Temp%目录的压缩
    kischang
        28
    kischang  
    OP
       2021-10-18 18:08:23 +08:00   ❤️ 1
    @weiceshi #27 是因为这个问题,已通过禁用解决,感谢回复,很专业

    @qq316107934
    @hwdef
    终于找到这么迷幻的原因了😂
    weiceshi
        29
    weiceshi  
       2021-10-18 18:13:24 +08:00   ❤️ 4
    @kischang
    >以及微软官方说的压缩只是 ntfs 4k 的问题,而非真正的文件压缩,是怎么影响到功能的,不知道
    ntfs 压缩不是 4k 对齐的问题,是使用 LZNT1 算法的透明压缩
    >但至于为啥 swap 压缩会影响网络,不知道
    因为 Linux 的 NTFS 驱动里只有 ntfs-3g 支持透明压缩,而 Windows 不支持 FUSE,因此无法在 Windows 目录上使用 NTFS-3G
    也就是说在 WSL 的 linux 内部无法读写启动压缩的 windows 目录
    kischang
        30
    kischang  
    OP
       2021-10-18 18:21:27 +08:00
    @weiceshi #29 这个 LZNT1 的透明压缩的来源是哪里啊?
    这是我找到的关于 ntfs 压缩的解答
    https://answers.microsoft.com/zh-hans/windows/forum/all/%E5%8E%8B%E7%BC%A9%E5%86%85%E5%AE%B9%E4%BB%A5/9f1240f1-d0cd-48b2-9d6f-358be786d7a1
    weiceshi
        31
    weiceshi  
       2021-10-18 18:31:23 +08:00   ❤️ 1
    @kischang

    https://docs.microsoft.com/en-us/windows/win32/fileio/file-compression-and-decompression
    The NTFS file system volumes support file compression on an individual file basis. The file compression algorithm used by the NTFS file system is Lempel-Ziv compression. This is a lossless compression algorithm, which means that no data is lost when compressing and decompressing the file, as opposed to lossy compression algorithms such as JPEG, where some data is lost each time data compression and decompression occur.
    lb111223
        32
    lb111223  
       2021-10-19 03:42:58 +08:00
    hyper-v 好像是底层直接访问磁盘,压缩了会出现问题
    Sendya
        33
    Sendya  
       2021-10-19 11:05:45 +08:00
    比较好奇什么需求要开磁盘压缩
    hs0000t
        34
    hs0000t  
       2021-10-19 22:07:32 +08:00 via Android
    @Sendya 例如硬盘只有 128G
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1181 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:26 · PVG 02:26 · LAX 11:26 · JFK 14:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.