WSL2 не может получить доступ к Интернету на Windows 11

WSL2 не может получить доступ к Интернету на Windows 11

У меня установлена ​​свежая версия Windows 11 с Ubuntu 20.04 внутри wsl2.

Когда я пытаюсь выполнить обновление sudo apt updateили даже ping google.comполучаю

Временная ошибка при разрешении «archive.ubuntu.com»

и

Временный сбой в разрешении имени

ошибки соответственно.

Я пробовал:

  • Разрешил wsl через брандмауэр windows, используя «разрешить приложение через брандмауэр» и выбравC:\Windows\System32\wsl.exe

  • Добавлено входящее правило в брандмауэре для порта 3390

  • Установите сетевой профиль как «частный» (хотя я бы предпочел оставить его общедоступным, если есть способ сохранить работоспособность wsl)

  • запуск New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allowиз поиска google

EDIT: На данный момент я перепробовал все результаты Google, но решения так и не нашел. r/windows11 не позволяет мне публиковать сообщения, если только это не понедельник (тупость). Также пробовал переустановить Ubuntu на wsl, но безрезультатно.

решение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 работало до тех пор, пока я ВСЕ делал как и из доступа администратора, включая запуск моего WSL2 Kali CLI от имени администратора из панели задач Win11.

решение3

Добавление этого параметра в ваш .wslconfigфайл (в домашнем каталоге Windows) должно включить поддержку сети на виртуальных машинах WSL:

[wsl2]
networkingMode=mirrored

WSL следует остановить после внесения изменений, .wslconfigчтобы изменения вступили в силу: используйте wsl --shutdownиз командной оболочки Windows. Это относительно новая функция (обновление от сентября 2023 г.), требуется сборка 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).

Связанный контент