在我的情况下,如果不在 VPN 上,我的 WSL 上的互联网可以正常工作。当我连接到 VPN 时,它突然停止工作。有一个相关的讨论(在我发布的那天仍然开放)关于 WSL 上的互联网丢失而在 VPN here上。
之前针对此问题提出的此解决方案有效,但需要重新启动:
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
之前提出的另一个解决方案:
sudo nano /etc/resolv.conf
随着名称服务器更改为 8.8.8.8 或 1.1.1.1 或任何其他随机地址,它在 VPN 上对我不起作用。
解决它的方法是第二种解决方案和上面讨论的混合体:
步骤1:
在 Powershell中使用 VPN时:
ipconfig /all
搜索链接到您的 VPN 连接的适配器。通常你可以在描述中找到类似的东西
“思科 Anyconnect ...”
在该块中搜索您的 DNS 服务器的地址(对我来说,第一个 DNS 服务器不起作用,所以我选择了第二个)
第 2 步:取自 PowerShell 中的相同讨论:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
第 3 步:
在我的 WSL上使用 VPN时:
$ sudo echo "nameserver <the DNS server address from point 1>" > /etc/resolv.conf
此解决方案的缺点(与之前的解决方案一样)是您需要在每次新启动 WSL 时都执行此操作。为了让它更容易一点,可以创建一个简短的 .sh 脚本来自动化它。在您的 WSL 上:
$touch restore_internet_connection.sh
$nano restore_internet_connection.sh
将以下文本放入:
echo "nameserver <the output from point 1>" > /etc/resolv.conf
下次遇到问题时,只需重复步骤 2 并:
$sudo restore_internet_connection.sh