WSL2 не отвечает на ping

Вопрос или проблема

Я использую WSL2 (Ubuntu 22.04) и Windows 11 Education 24H2.

Я проверил настройки BIOS, и виртуализация включена. Hyper-V включен, и я пытался отключать и включать его, перезагружая компьютер между изменениями. Я пытался отключить брандмауэр, и это не дало результата. Я проверил %temp%, и он не сжат.

У меня есть ноутбук в той же сети с тем же (автоматически сгенерированным) /etc/resolv.conf, который может пинговать Google в WSL2 и выполнять sudo apt-get update, поэтому не думаю, что проблема в сгенерированной конфигурации, но я попробовал изменить мой wsl.conf и resolv.conf (хотя я открыт для повторных попыток).

Я пытался установить swap=0, networkingMode=mirrored, dnsProxy=false, localhostforwarding=true, dnsTunneling=true, bestEffortDnsParsing=true, firewall=false, autoProxy=true, и они все были установлены по умолчанию. Также я изучил https://github.com/microsoft/WSL/issues/4150 этот пост и попробовал выполнить его, но не уверен, что смог успешно завершить шаги, так как было сообщение:

Remove-NetFireWallRule : No MSFT_NetFirewallRule objects found with property 'DisplayName' equal to 'WSL 2 Firewall
Unlock'.  Verify the value of the property and retry.
At line:1 char:1
+ Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (WSL 2 Firewall Unlock:String) [Remove-NetFirewallRule], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_DisplayName,Remove-NetFirewallRule

и Система не может найти указанный файл.

Однако, я думаю, что это может быть проблема с брандмауэром, а не с wsl.conf, потому что, когда я пытаюсь ping www.google.com, он говорит PING www.google.com (172.217.1.100) 56(84) байт данных. Значит, он может разрешить www.google.com в адрес, верно? Проблема лишь в том, что пакеты не проходят.

Также, если я выполняю ipconfig в Powershell, я вижу, что есть IPv4-адреса для адаптера беспроводной сети Wi-Fi, адаптера Ethernet vEthernet (Default Switch) и адаптера Ethernet vEthernet (WSL (Hyper-V firewall)), и я могу пинговать все эти адреса из PowerShell, но из WSL2 я могу успешно пинговать только адрес адаптера Ethernet vEthernet (WSL (Hyper-V firewall)).

Наконец, если я перезагружаю компьютер, а затем открываю WSL и пингую www.google.com, 2-6 пингов проходят, прежде чем они перестают доходить… и иногда еще 2-6 проходят через несколько секунд, прежде чем пакеты полностью перестают возвращаться/доставляться.

Но опять же, я пытался отключать брандмауэр Windows, и это не повлияло на возможность пинга. Я работаю над этой проблемой уже три дня и понятия не имею, в чём причина TT. Я пробовал переключиться на WSL1 ранее, и это сработало, но у меня были проблемы с установкой npx (поскольку, возможно, он путал пути Windows) :'( Также, я просто хочу использовать WSL2, потому что он должен работать, и я не понимаю, почему этого не происходит.

Ответ или решение

Теория (Theory):

Запуск Windows Subsystem for Linux 2 (WSL2) на Windows 11 может иногда сталкиваться с проблемами сетевого взаимодействия, особенно при попытке использовать пинг для проверки соединения с интернет-ресурсами. Основная причина таких проблем чаще всего связана с настройками сети и брандмауэра, особенностями виртуализации и маршрутизацией IP-пакетов между хостом и подсистемой.

WSL2 работает как полноценно изолированная виртуальная машина на базе Hyper-V. Это делает её более эффективной в сравнении с WSL1, но также привносит дополнительные сложности в сетевую конфигурацию, поскольку каждое соединение должно пройти через виртуальные сетевые интерфейсы. WSL2 использует DNS-прокси и особую маршрутизацию, чтобы обеспечить доступ к интернету и взаимодействие с внешними сетями. При этом возникают ситуации, когда нормальное функционирование подсистемы может быть заблокировано, например, некорректной работой брандмауэра или конфликтующими сетевыми правилами.

Пример (Example):

В вашем случае на ПК установлены как WSL2 с Ubuntu 22.04, так и Windows 11 Education 24H2. У вас активно используется Hyper-V, и проверка показала, что виртуализация включена в BIOS. Несмотря на то, что вы пытались выключать брандмауэр и это не повлияло на ситуацию, проблема может крыться в более сложных конфигурациях сетевых интерфейсов или в правилах брандмауэра, которые по какой-то причине остаются активны.

Вы также отметили, что WSL2 может временно "видеть" внешний адрес Google, но затем связь прерывается. Это как раз указывает на возможные проблемы с пропуском пакетов через виртуальный сетевой интерфейс. При этом ipconfig показывал, что существуют три основных адаптера, но только один из них стабильно пингуется из WSL2 — это указывает на неполадки в маршрутизации или сетевых фильтрах между другой подсистемой и вашим хостом.

Применение (Application):

Поскольку уже были проверены базовые шаги, такие как проверка гипервизора и отключение брандмауэра, следует обратить внимание на более детализированную конфигурацию сетевых настроек и маршрутизации. Вот несколько шагов, которые можно предпринять:

  1. Проверка и синхронизация сетевых настроек: Проверьте, как настроены сетевые интерфейсы и маршрутизация в вашей системе. Убедитесь, что настройки в /etc/resolv.conf соответствуют вашим потребностям, и что никаких конфликтующих правил нет.

  2. Исключение из брандмауэра: Убедитесь, что брандмауэр Windows не блокирует сетевой трафик WSL2. Создайте исключения для процессов wsl.exe и wslhost.exe.

  3. Диагностика сетевых маршрутов: Проверьте текущие маршруты в Windows и WSL2 (команды route print и ip route соответственно). Убедитесь, что IP-адреса и шлюзы настроены должным образом. Это может варьироваться в зависимости от интерфейсов, используемых для связи.

  4. Управление IP-адресами и DNS: Иногда DNS-прокси, используемый в WSL2, может неправильно обрабатывать запросы. Попробуйте временно отключить DNS-прокси и проверьте, исправляет ли это проблему.

  5. Обновление системного программного обеспечения: Убедитесь, что вы используете последние версии программного обеспечения как для WSL2, так и для Windows, включая обновления всех драйверов сетевых адаптеров, так как старые или неподдерживаемые версии могут вызывать проблемы.

  6. Анализ сетевого трафика: Используйте netsh или другие инструменты диагностики сети для анализа пакетов и поиска возможных блокировок или задержек.

  7. Переход на альтернативные решения: Если стабильный доступ через WSL2 не удается наладить, временно перейдите на WSL1 для решения временной задачи, или рассмотрите возможность использования VPN-сервисов, настройки которых также следует тщательно проверять на совместимость с вашим сетевым окружением.

Учитывая эти аспекты и тщательно проанализировав сетевую конфигурацию, вы сможете более эффективно устранить проблемы с подключением через WSL2.

Оцените материал
Добавить комментарий

Капча загружается...