Сначала немного предыстории. Нужна Windows 10 Build 17627 или выше для поддержки Firewall с подключениями WSL. Вот раздел примечаний к выпуску WSL:
Сборка 17627 (Пропустить)
WSL
- Поддержка брандмауэра Windows для процессов WSL. [GH 1852]
- Например, чтобы позволить процессу Python WSL прослушивать любой порт, используйте расширенный брандмауэр advdirefirewall для Windows 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, который хочет подключиться к Интернету. Полный путь можно разделить на три части:
C:\Users\UserName\AppData\Local\Packages
- путь, в котором приложения универсальной платформы Windows хранят пользовательские файлы, временные файлы и т.д.
CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
- путь, в котором пакет Ubuntu 18.04 Appx хранит файлы Ubuntu usersapce, т. Е. /bin
Bin, /etc
, /usr
и другие.
\bin\ping
- бинарный файл Linux ping
.
Отсюда весь путь:
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. Откройте Настройки> Общие> Исключение и добавьте путь из предыдущего шага.
Канонические ответы: