WSL2 無法在 Windows 11 上存取網際網路

WSL2 無法在 Windows 11 上存取網際網路

我全新安裝了 Windows 11,並在 wsl2 內安裝了 ubuntu 20.04。

當我嘗試執行更新sudo apt update甚至ping google.com我得到

暫時無法解析“archive.ubuntu.com”

名稱解析暫時失敗

分別出現錯誤。

我試過了:

  • 使用“允許應用程式通過防火牆”並選擇允許 wsl 通過 Windows firefallC:\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 月更新),需要建置 2​​2H2(我僅在 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)。

相關內容