Проблема проявляется только с WSL второй версии, т.к. первая работает на localhost – грубо говоря. Вторая версия при каждом старте машины создает отдельный виртуальный сетевой интерфейс и назначает IP адрес случайным образом.
Загляните в документацию Microsoft и там буде дан совет: отключите или корректно настройте свои антивирусы и … собственно это всё.
Читая всякие обсуждения на стековерфлоу, гитхабе найдете кучу всяких советов, скриптов, набор команд, по типу вот этих:
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
Но это вам не поможет.
Что делать?
Отбросить панику и проанализировать всю ситуацию.
Запускаем в WSL команду apt update и видим, что система не может отрезолвить имена. Выполняем команду: nslookup google.com – ответ будет тот же. Но если запустить ping 8.8.8.8 – пакеты улетают и прилетаю. Делаем вывод: WSL2 имеет доступ к интернет, но нет доступа к DNS. Имена не резолвятся. Следовательно – нужно правильно настроить доступ по 53 порту.
Проблема в 99% случаях в локальном файрволле. Да, да. Именно в нем.
И так, если у вас стоит антивирус, который контролирует сетевой трафик – ковыряйте его. В случае Windows Defender Firewall смотрите его настройки. Там должно быть Inbound Rules:
HNS Container Networking – DNS (UDP-In)
HNS Container Networking – ICS DNS (TCP-In)
По умолчанию, при запуске WSL2, когда создается виртуальный интерфейс, система в WDF создает нужные правила. Если их нет, то тушите машину командой wsl –shutdown и стартуйте ее снова. Правила будут автоматически созданы системой.
В случае стороннего ПО система этого сделать не может, поэтому настройте правила руками или смотрите уровень контроля антивирусом трафика по 53 порту.