windows 10 WSL ubuntu 无法 ping 任何东西

windows 10 WSL ubuntu 无法 ping 任何东西

当我使用适用于 Windows 10 的 WSL 时,我无法 ping 任何网站。我在 WSL 中运行 Ubuntu 18.04。

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

这是我尝试 ping google.com 时的结果吗?我使用的是 Windows 10,带有 IPv4,已禁用 IPv6。我可以在常规命令提示符下正常 ping google.com,而无需 wsl

我正在运行 Avast 互联网安全软件,当我从 ubuntu/WSL 实例内部 ping 谷歌时,我看到的就是这样的。

1在此处输入图片描述

我需要做什么才能在 WSL 中启用 ping

答案1

首先介绍一下背景知识。需要 Windows 10内部版本 17627 或更高版本支持使用 WSL 连接的防火墙。以下是WSL 发行说明

内部版本 17627(直接跳过)

西弗吉尼亚海岸

  • Windows 防火墙支持 WSL 进程。[GH 1852]
    • 例如,要允许 WSL python 进程监听任何端口,请使用提升的 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可执行文件的绝对路径。完整路径可分为三个部分:

  1. C:\Users\UserName\AppData\Local\Packages-- 路径通用 Windows 平台应用存储用户特定文件、临时文件等。
  2. CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs-- Ubuntu 18.04 Appx 包存储 Ubuntu 用户空间文件的路径/bin,即/etc/usr等。
  3. \bin\ping-- Linuxping二进制文件。

因此整个路径是:

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 防火墙,请按照此指令来自 Avast 支持。打开设置 > 常规 > 排除并添加上一步中的路径。

规范答案:

相关内容