因此,每当我使用 VPN 时,WSL 的域解析都会出现问题。我会得到以下信息:
ping: google.com: Temporary failure in name resolution
我尝试按照这些答案中的说明进行操作WSL 上的名称解析暂时失败
具体从这部分来说:
在 WSL2 内部,创建或附加文件:/etc/wsl.conf
在文件中放入以下几行以确保你的 DNS 更改不会被破坏
echo "[network]" | sudo tee /etc/wsl.conf echo "generateResolvConf = false" | sudo tee -a /etc/wsl.conf
在 cmd 窗口中, 跑步
wsl --shutdown
启动 WSL2
在 WSL2 中运行以下命令
sudo rm -rf /etc/resolv.conf sudo cat << EOF > /etc/resolv.conf search [yourbase.domain.local] nameserver 8.8.8.8 nameserver 1.1.1.1 EOF
但是,我似乎无法编辑文件 /etc/resolv.conf,因为我会得到zsh: permission denied: /etc/resolv.conf
我也不知道 [yourbase.domain.local] 是什么意思,也不知道应该用什么来替换它。我已经搞砸了我的域名解析,现在每次我都会收到第一个错误,即使我的笔记本电脑没有连接到 VPN。我真的需要知道如何修复我修改的配置文件
编辑:使用评论中 muru 的建议,我能够使用命令修复域解析
sudo tee /etc/resolv.conf <<EOF
但是,我想知道在连接到 VPN 时是否有解决此错误的方法。因为上述链接中的任何解决方案对我来说都不起作用。
答案1
嗯,这是我以前见过的一种不同的潜在解决方案,但对某些人有用。我不再使用 Cisco VPN,所以我无法测试它,但是...
解决这个问题分为两个部分:
- 修复互联网连接
- 修复 DNS 解析
在评论中,你确认你也无法ping 8.8.8.8
,这可能意味着你还没有解决第一部分。不过,我确实看到了这个 Github 评论这ping
在某些 AnyConnect 设置下根本不起作用,所以这可能不是最好的指标。
尝试:
wget https://$(powershell.exe -c "(Resolve-DnsName -type a askubuntu.com)[0] | Select-Object -ExpandProperty IPAddress" | tr -d '\r')
这将使用 PowerShell 解析 Ask Ubuntu 的 IP 地址,然后尝试wget
从中获取。它应该会失败,但您应该会得到返回:
ERROR: cannot verify 151.101.129.69's certificate, issued by ‘CN=R3,O=Let's Encrypt,C=US’:
...
如果没有,那么你可能还没有解决联系问题。在这个问题解决之前,DNS解析肯定不会起作用。
尝试第四条命令:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
然后重试wget
上述操作。有什么不同吗?
如果没有,则尝试(按此顺序):
退出 Ubuntu
断开 AnyConnect
wsl --shutdown
来自 POwerShell启动 Ubuntu
连接到 AnyConnect
再次运行):
在 PowerShell 中:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
在 Ubuntu 中:
wget https://$(powershell.exe -c "(Resolve-DnsName -type a askubuntu.com)[0] | Select-Object -ExpandProperty IPAddress" | tr -d '\r')
如果您确实有互联网连接,请按照其余步骤尝试修复 DNS 解析。
但对于一些用户来说,这仍然是一个问题。
另请参阅这个要点为了什么可能成为更好的指南。总体信息相同,但顺序和实现略有不同。
可能的替代方案-在 WSL1 中运行 Ubuntu
如果您的 WSL 用例支持它,则 WSL1 在连接到 VPN 时通常会正常运行。您可以通过以下方式从 PowerShell 转换实例:
wsl -l -v
# Confirm distribution name, adjust commands as needed
wsl --export Ubuntu \windows\path\to\save\ubuntu.tar
wsl --set-version Ubuntu 1
或者,如果你愿意,你可以wsl --import
通过以下方式将备份到新的 WSL1 实例中wsl --import UbuntuWSL1 \location\for\instance \path\to\ubuntu.tar --version 1
答案2
就我而言,我已禁用Internet 协议版本 6 (TCP/IPv6)在WLAN 属性的网络连接设置。
配置截图:
Ping GitHub.com 成功截图: