编辑
2025-11-19
服务器
00

目录

1. 查看WSL版本
2. 升级WSL
3. 创建WSL配置文件
4. 查看Windows防火墙
5. 查看WSL内的WSL配置

wsl0.jpeg

本文详细介绍了当公司电脑连接VPN后,WSL中的Ubuntu实例无法访问外部网络的常见问题及其解决方案。通过修改WSL Ubuntu内部的/etc/wsl.conf文件,成功解决了网络连接和域名解析的难题,确保WSL Ubuntu在VPN环境下也能顺畅地访问外部资源。

当公司电脑连接到VPN后,WSL的Ubuntu就无法访问外部网络。

1. 查看WSL版本

cmd
> wsl --version WSL version: 2.6.1.0 Kernel version: 6.6.87.2-1 WSLg version: 1.0.66 MSRDC version: 1.2.6353 Direct3D version: 1.611.1-81528511 DXCore version: 10.0.26100.1-240331-1435.ge-release Windows version: 10.0.26200.6584

2. 升级WSL

先关闭WSL再升级。

cmd
> wsl --shutdown > wsl --upgrade

3. 创建WSL配置文件

在Windows系统下,创建C:\Users\USER_NAME\.wslconfig。内容如下:

cmd
[wsl2] networkingMode=mirrored dnsTunneling=true

再重新打开WSL的终端,看可否ping通外部网络。我可以ping通8.8.8.8,但是在sudo apt update的时候无法连接到镜像服务器。报错显示的无法解析镜像服务器的域名。

4. 查看Windows防火墙

以Admin身份打开Powershell。

powershell
PS C:\WINDOWS\system32> Get-NetFirewallHyperVVMSetting -PolicyStore ActiveStore -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' Name : {40E0AC32-46A5-438A-A0B2-2B479E8F2E90} Enabled : True DefaultInboundAction : Block DefaultOutboundAction : Allow LoopbackEnabled : True AllowHostPolicyMerge : True

如果DefaultOutboundAction的行为是Block的话就需要设置为Allow。我的是没有问题的。

Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultOutboundAction Allow

5. 查看WSL内的WSL配置

将最后一项的generateResolvConf改成true。

bash
> cat /etc/wsl.conf [automount] enabled = true root = /mnt/ options = "metadata,umask=22,fmask=11" [interop] enabled = true appendWindowsPath = true [network] generateResolvConf = false

关闭WSL并重新打开WSL的终端,网络就通了。

本文作者:潘晓可

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!