我全新安装了 Windows 11,并且在 wsl2 中安装了 ubuntu 20.04。
当我尝试执行更新sudo apt update
,甚至ping google.com
我得到
暂时无法解析“archive.ubuntu.com”
和
名称解析暂时失败
错误。
我试过了:
使用“允许应用程序通过防火墙”并选择允许 wsl 通过 Windows Firefall
C:\Windows\System32\wsl.exe
在防火墙中为端口 3390 添加了入站规则
将网络配置文件设置为“私有”(如果有办法让 wsl 保持正常工作,我更愿意将其保持公开)
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
从谷歌搜索运行
编辑:此时我已经尝试了所有谷歌搜索结果,但仍然没有解决方案。除非是星期一,否则 r/windows11 不会让我发帖(愚蠢)。还尝试在 wsl 上重新安装 ubuntu,但无济于事。
答案1
造成这一问题的原因不止一个。
文章 WSL2 网络问题和 Win 10 快速启动 建议在 Windows 中禁用快速启动:
其他
解释
切换网络(例如在工作和家庭之间)会使 WSL 感到困惑。解决方案是运行.bat
包含以下内容的文件:
wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
netsh winsock reset
shutdown /r
还有另一个
解释
是 Windows 自动生成一个resolv.conf
具有错误名称服务器的文件。
为了防止这种情况发生,请运行以下命令:
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf
答案2
只是想提醒大家,Win11 似乎对管理员访问权限非常严格,甚至将 .bat 文件放在 C: 上
话虽如此,只要我以管理员身份执行所有操作,将 etc/resolv.conf 重写为 8.8.8.8 就可以起作用,包括对我来说,从 Win11 任务栏以管理员身份启动我的 WSL2 Kali CLI。
答案3
将此设置添加到您的.wslconfig
文件(在您的 Windows 主目录中)应该可以在 WSL 虚拟机中启用网络支持:
[wsl2]
networkingMode=mirrored
更改后应停止 WSL.wslconfig
以使更改生效:wsl --shutdown
从 Windows 命令 shell 使用。这是一个相对较新的功能(2023 年 9 月更新),需要版本 22H2(我只在 Windows 11 上测试过它,但可能在最新的 Windows 10 上有效)。详细信息和其他相关配置设置在此处:
https://learn.microsoft.com/en-us/windows/wsl/networking。
要使用最新的 WSL2 子系统,wsl --update
可能需要运行。
在旧版本的 Windows 上,我能够可靠使用且在 Windows 运行 VPN 时也有效的唯一解决方案是使用“wsl-vpnkit”(https://github.com/sakai135/wsl-vpnkit)。