从 Windows 通过主机名 ping WSL2

从 Windows 通过主机名 ping WSL2

启动 WSL Kali 实例后,我可以从 Windows 控制台通过 IP 对其进行 ping 操作,如下所示:

ping 172.31.37.123

但是...我该如何按名称 ping?

我已经在 中更改了 WSL 主机名/etc/hostname,但仍然无法从 Windows 控制台 ping 该名称:

ping kali1
ping kali1.local
ping kali1.localdomain

这些都不起作用。有什么想法吗?

答案1

如果你确实想通过名称从 Windows ping WSL2 虚拟网络接口的地址,你需要将其添加到视窗host 文件,而不是 Linux host 文件。

可以在 找到C:\Windows\System32\drivers\etc\hosts。您需要以管理员身份编辑它。

但是,有几个问题需要注意(无论如何,还有比 ping WSL2 接口更好的事情要做)。

首先,WSL2 地址每次重新启动时都会发生变化(无论是重新启动还是wsl --shutdown)。因此,您需要编写脚本编辑 Windows 主机文件以在每次启动 Kali 时更新它,或者手动更新它。这很麻烦(而且没有必要)。

其次,请注意,你安装的每个 WSL2 发行版都共享相同的虚拟 NIC,因此你实际上是在处理任何/全部执行此操作时,系统会检查已安装的发行版。这可能会(也可能不会)产生您期望的结果。

推荐

正如我上面提到的,真的没有必要使用pingWSL2。你想在其中访问的任何服务都可以通过 Windows 主机访问localhostForwarding。例如。在 Kali 中(假设你已安装 Python),运行:

python3 -m http.server

在您的 Windows 浏览器中,您只需打开localhost:8000

这是有效的,因为默认情况下,WSL2 将任何localhost端口转发到 WSL2(假设该端口尚未在 Windows 中绑定)。

因此,大多数服务(ping例外,因为它不使用 TCP 端口,而是 ICMP)都可以通过localhost任何方式访问。

您还可以使用 PowerShell 中的“服务/端口 ping”来验证这一点,以检查 Python3 简单服务器:

Test-NetConnection -ComputerName 127.0.0.1 -Port 8000

请注意,这将不是可以从网络上的其他设备(例如您的手机)工作。如果您需要解决方案,我可以为您提供 Super User 上的其他答案。

相关内容