Windows 9 мин чтения

WSL нет интернета или не работает DNS: как исправить

WSL нет интернета или не работает DNS: как исправить: симптомы, причины и пошаговое исправление без лишней воды. Проверки, безопасные действия и когда нужна поддержка.

WSLWindowsDNSLinuxСеть

Симптомы

  • В WSL работает ping 8.8.8.8, но не открываются домены
  • apt update возвращает Temporary failure resolving
  • curl не может подключиться к HTTPS-сайтам
  • Интернет пропадает после включения VPN или прокси
  • Файл /etc/resolv.conf каждый раз перезаписывается

Возможные причины

  • WSL сгенерировал неверный DNS-сервер в resolv.conf
  • VPN или корпоративный прокси меняет маршруты Windows
  • Поврежден сетевой стек WSL NAT
  • Брандмауэр или антивирус блокирует vEthernet адаптер
  • Включена устаревшая конфигурация resolv.conf

Пошаговое решение

1

Проверьте, проблема в DNS или в маршрутизации

Сначала отделите DNS от полного отсутствия сети. Если ping до 8.8.8.8 работает, но ping google.com нет, сломан DNS. Если не работает даже IP-адрес, проблема в маршрутах, NAT, VPN или брандмауэре. Это определяет дальнейший путь исправления.

Команда
ping -c 4 8.8.8.8
ping -c 4 google.com
2

Перезапустите WSL и сетевой стек

Многие сбои WSL появляются после сна, смены сети или подключения VPN. Полностью остановите WSL из Windows Terminal или PowerShell. Затем откройте дистрибутив заново и повторите проверку. Это безопасный первый шаг, который не меняет файлы Linux.

Команда
wsl --shutdown
3

Проверьте текущий resolv.conf

В WSL DNS обычно хранится в /etc/resolv.conf. Если там указан недоступный адрес, домены не будут резолвиться. Проверьте nameserver и сравните его с DNS в Windows. В корпоративных сетях WSL может получить адрес, недоступный из NAT-сети.

Команда
cat /etc/resolv.conf
grep nameserver /etc/resolv.conf
4

Отключите автогенерацию resolv.conf

Если WSL каждый запуск записывает неправильный DNS, отключите генерацию resolv.conf через /etc/wsl.conf. После изменения завершите WSL командой wsl --shutdown. Затем создайте собственный resolv.conf с надежными DNS-серверами или DNS вашей организации.

Команда
sudo tee /etc/wsl.conf
[network]
generateResolvConf = false
5

Задайте DNS вручную

После отключения автогенерации удалите старый resolv.conf и создайте новый. Для домашней сети можно использовать Cloudflare или Google DNS. Для корпоративной сети лучше указать DNS, который выдает VPN, иначе внутренние домены компании не будут открываться.

Команда
sudo rm -f /etc/resolv.conf
sudo tee /etc/resolv.conf
nameserver 1.1.1.1
nameserver 8.8.8.8
6

Проверьте VPN, прокси и firewall

VPN-клиенты часто меняют маршруты и DNS только для Windows, а WSL остается в отдельной NAT-сети. Попробуйте отключить VPN, затем проверить apt update. Если без VPN все работает, настройте split tunneling, разрешите vEthernet WSL в firewall или используйте DNS VPN вручную.

Команда
ip route && cat /etc/resolv.conf
7

Сбросьте сетевые настройки Windows при полном отказе сети

Если не работает даже подключение по IP, проблема может быть в Winsock или сетевом стеке Windows. Выполните сброс от имени администратора и перезагрузите компьютер. Этот шаг влияет на сетевые настройки Windows, поэтому используйте его после простых проверок.

Команда
netsh winsock reset
netsh int ip reset

В WSL проблемы с интернетом почти всегда делятся на две группы: не работает DNS или не работает сама маршрутизация. Если IP-адреса открываются, а домены нет, не нужно переустанавливать Ubuntu. Достаточно исправить resolv.conf или настройки DNS, которые WSL получает от Windows.

Самая частая причина — WSL автоматически создает /etc/resolv.conf на основе сетевых настроек Windows, но получает адрес DNS, который недоступен из Linux-дистрибутива. Такое часто происходит после VPN, корпоративного прокси, сна ноутбука или смены Wi-Fi сети. Иногда Windows уже использует новый DNS, а запущенный дистрибутив WSL продолжает жить со старой конфигурацией.

Если вы вручную задаете DNS, помните о внутренних корпоративных доменах. Публичные DNS вроде 1.1.1.1 и 8.8.8.8 не знают адреса внутренних сервисов компании. Для рабочей сети лучше использовать DNS, который выдает VPN-клиент, иначе npm, apt и браузер смогут открывать внешние сайты, но не найдут внутренние репозитории, registry или корпоративные API.

После каждого изменения выполняйте wsl --shutdown из Windows, иначе WSL может продолжать использовать старую сетевую конфигурацию. Простое закрытие окна терминала не всегда завершает виртуальную машину WSL: фоновые процессы могут удерживать старый NAT и старый DNS.

Как отличить DNS от полного отказа сети

Начните с двух проверок внутри дистрибутива: ping -c 4 8.8.8.8 и ping -c 4 google.com. Если IP-адрес отвечает, а доменное имя нет, проблема почти наверняка в DNS. Если не отвечает даже IP-адрес, смотрите маршруты, VPN, firewall, сетевой адаптер vEthernet и состояние WSL NAT.

Команда cat /etc/resolv.conf покажет, какой DNS сейчас использует Linux. Если там адрес из корпоративной сети, который доступен только Windows, WSL может не достучаться до него через NAT. Если файл каждый раз меняется после перезапуска, значит автогенерация DNS все еще включена.

Что учитывать с VPN и прокси

VPN-клиенты часто перехватывают DNS и маршруты только в Windows. WSL при этом остается в отдельной виртуальной сети, поэтому видит другой default route и другой набор DNS-серверов. Если проблема появляется только после включения VPN, проверьте настройки split tunneling, разрешения firewall для vEthernet WSL и DNS, который выдает VPN.

Корпоративный прокси может ломать не только DNS, но и HTTPS-доступ к пакетным менеджерам. Если DNS уже исправлен, но apt update, curl или git clone продолжают падать на TLS или proxy error, проверьте переменные HTTP_PROXY, HTTPS_PROXY, настройки сертификатов и правила организации.

Когда нужен сброс сетевого стека

Сброс netsh winsock reset и netsh int ip reset стоит использовать только после простых проверок. Эти команды меняют сетевые настройки Windows и требуют перезагрузки, поэтому сначала безопаснее выполнить wsl --shutdown, перезапустить VPN, проверить /etc/resolv.conf и временно задать DNS вручную.

Если после сброса сеть работает до следующего подключения VPN, причина не в WSL, а в конфликте политик VPN, firewall или DNS. В таком случае фиксируйте рабочую конфигурацию и передавайте администратору конкретные данные: DNS из Windows, DNS из WSL, таблицу маршрутов и текст ошибки из apt или curl.

Быстрая проверка

  • ping 8.8.8.8 работает, но google.com нет: проблема DNS.
  • Не работает даже 8.8.8.8: проблема маршрутов, NAT или firewall.
  • После VPN ломается apt update: проверьте DNS VPN и split tunneling.
  • resolv.conf меняется после перезапуска: отключите generateResolvConf.
  • После правки DNS выполнен wsl --shutdown.
  • В корпоративной сети используются DNS и proxy, подходящие для внутренних доменов.

Что сохранить для диагностики

  • Содержимое /etc/resolv.conf до и после исправления.
  • Вывод ip route внутри WSL.
  • DNS-серверы из Windows: Get-DnsClientServerAddress.
  • Текст ошибки из apt update, curl или git clone.
  • Название VPN-клиента и включен ли split tunneling.

Источники

  1. learn.microsoft.com — проверено 04.06.2026
  2. learn.microsoft.com — проверено 04.06.2026
  3. learn.microsoft.com — проверено 04.06.2026
  4. manpages.ubuntu.com — проверено 04.06.2026