Windows 10 WSL Ubuntu не может ничего пинговать

775
user3369850

Я не могу пропинговать любой веб-сайт, когда я использую WSL для Windows 10. Я использую Ubuntu 18.04 в WSL.

--- google.com ping statistics --- 14 packets transmitted, 0 received, 100% packet loss, time 38567ms 

это результат, когда я пытаюсь ping google.com Я использую Windows 10 с IPv4, отключенный IPv6. Я могу нормально пинговать google.com без wsl в моей обычной командной строке

Я использую Avast Internet Security, и когда я пингую Google из экземпляра Ubuntu / WSL, это то, что я вижу.

1 :enter image description here

Что мне нужно сделать, чтобы включить пинг в WSL

0

1 ответ на вопрос

0
Biswapriyo

Сначала немного предыстории. Нужна Windows 10 Build 17627 или выше для поддержки Firewall с подключениями WSL. Вот раздел примечаний к выпуску WSL :

Сборка 17627 (Пропустить)

WSL

  • Поддержка брандмауэра Windows для процессов WSL. [GH 1852]
    • Например, чтобы позволить процессу Python WSL прослушивать любой порт, используйте cmd с повышенными правами: netsh.exe advfirewall firewall add rule name=wsl_python dir=in action=allow program="C:\Users\<UserName>\AppData\Local\Packages\canonicalgrouplimited.ubuntuonwindows_79rhkp1fndgsc\localstate\rootfs\usr\bin\python2.7" enable=yes
    • Дополнительные сведения о том, как добавить правила брандмауэра, см. По ссылке.

На следующем шаге найдите абсолютный путь к исполняемому файлу Linux, который хочет подключиться к Интернету. Полный путь можно разделить на три части:

  1. C:\Users\UserName\AppData\Local\Packages- Путь, в котором приложения универсальной платформы Windows хранят пользовательские файлы, временные файлы и т. Д.
  2. CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs- Путь, где Ubuntu 18,04 Appx хранилище пакетов Ubuntu usersapce файлы, то есть /bin, /etc, /usrи другие.
  3. \bin\ping- pingбинарный Linux .

Отсюда весь путь:

C:\Users\UserName\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\bin\ping 

Вы можете использовать следующий скрипт PowerShell, чтобы получить этот путь. Просто введите, ubuntuкогда он просит ввести имя распространения.

$DistroName=Read-Host "Enter Distribution Name" $pacakgeName = (Get-AppxPackage *$DistroName*).PackageFamilyName $appData = [System.Environment]::ExpandEnvironmentVariables("%LocalAppData%") $InstallDir = $appData + "\Packages\" + $pacakgeName + "\LocalState\rootfs" echo $InstallDir Invoke-Item $InstallDir Read-Host -Prompt "Press any key to continue..." 

Последний шаг, добавьте правило брандмауэра. Для брандмауэра Windows выполните эту команду от имени администратора, чтобы добавить правило исходящего брандмауэра.

netsh.exe advfirewall firewall add rule name=wsl_ping dir=out action=allow program=<path_to_ping> enable=yes 

Для Avast Firewall следуйте этой инструкции от Avast Support. Откройте Настройки> Общие> Исключение и добавьте путь из предыдущего шага.

Канонические ответы:

Я запустил командную строку от имени администратора и запустил команду netsh.exe, и результат был в порядке. Затем я вошел в свою интернет-безопасность avast и добавил путь ping, чтобы разрешить все, но я все еще получаю 100% потерю пакетов, когда пытаюсь пинговать google.com на wsl ubuntu user3369850 5 лет назад 0
@ user3369850 вот обсуждение GitHub, за которым вы можете следить: https://github.com/Microsoft/WSL/issues/475 Biswapriyo 5 лет назад 0