WSL2 172.XXX.XXX.XXX IP 地址

WSL2 172.XXX.XXX.XXX IP 地址

我的 Windows 上有一台 WSL2 Kali-linux 机器。

由于某种原因,WSL2 的网络适配器存在问题。它仅显示地址为 172.xxx.xxx.xxx 的特定网络适配器。

问题是我无法直接与分配给我的其他 IP 交互。例如 - 监听特定地址。

我从事网络安全工作,因此与我的工作相关的一个场景是:

  • 获得了分配给我的 vpn 本地地址,例如 10.7.3.120(通过我的 Windows 主机配置)
  • 我在一台远程机器上运行代码,该机器应该连接回我

现在,我需要在代码中输入一个硬编码的 IP 地址:

  • 如果我对 172.1.11.11 进行硬编码,我的 wsl 将能够绑定传入连接,但远程机器不知道如何联系我
  • 如果我将 10.7.3.120 硬编码,远程机器将能够联系到我,但 wsl 不会让我绑定,因为它无法识别该地址

我希望这个场景能够正确解释这个问题。

谢谢。

答案1

我确实保留了 WSL1 和 WSL2 实例,但更多是为了在 WSL1 中更快地访问 NTFS 文件系统(当我需要它时),而不是为了网络。在网络方面,WSL2 实际上比 WSL1 更强大,但这种能力是有代价的。为了给 WSL2 一个“真正的”网络堆栈,并且仍然能够按时将其包含在 Windows 版本中,WSL 团队显然被迫在没有开箱即用桥接的情况下启动它。

不幸的是,要真正推荐您是否应该进一步在 WSL2 上运行此功能,您需要在问题中提供更多有关您要完成的任务的详细信息。“需要在远程主机上设置配置”还不足以让我继续下去。从您的问题中甚至不清楚您是通过 Windows 还是通过 Kali 连接到 VPN。

不过,与此同时,请查看关于这个话题的其他一些问题,我已经回答了这些问题并给出了建议——这里这里,以及(也与 VPN 有关,尽管标题不好) 这里

最简单的解决方案肯定是 WSL1,您会在我与此主题相关的大多数答案中看到它。

答案2

查看Wsl-IpHandler在 GitHub 上。用法很简单。我建议完整阅读 README.md,但这里有一个基本示例:

Invoke-WebRequest https://raw.githubusercontent.com/wikiped/Wsl-IpHandler/master/Install-WslIpHandlerFromGithub.ps1 | Select -ExpandProperty Content | Invoke-Expression
Install-WslIpHandler -WslInstanceName Ubuntu-22.04 -GatewayIpAddress 192.168.65.1 -WslInstanceIpAddress 192.168.65.2 -PrefixLength 29 -UseScheduledTaskOnUserLogOn -WindowsHostName windows

如果您以后不打算使用Install-WslIpHandler,您可以添加-DontModifyPsProfile标志以不修改PSProfile。

答案3

由于 WSL 2 在虚拟机中运行,因此你永远无法真正直接访问主机的物理网络适配器。(从技术上讲,你可以使用离散设备分配又称为设备直通,但不适用于消费者 Windows Hyper-V。)这意味着您无法监听主机的 IP 地址。不过,您可以使用端口转发。

即使所谓的桥接模式也无法让你访问物理接口,但它是仅次于物理接口的最好选择。这就像将另一台 PC 插入同一条网线一样。

自提出这个问题以来,WSL 2 已经获得了实验在 0.51.2 及以上版本(Windows 11 独有)中支持桥接模式。要启用它,请将以下内容添加到您的.wslconfig

[wsl2]
networkingMode = bridged
vmSwitch = My-Bridged-vSwitch

您还必须创建虚拟交换机。这意味着您需要 Hyper-V。这意味着您需要 Windows 11 Pro。

请注意,这样做严重含义。全部你的 WSL 2 发行版现在将直接暴露在任何网络上我的桥接虚拟交换机连接到。它们将使用 DHCP(或设置的任何其他机制)获取其 IP 地址。WSL本地主机绑定可能不再起作用。所有这些很可能不适用于 Wi-Fi 适配器。


对于渗透测试等,我的强的建议双启动 Linux 和 Windows,使用任何适合当前任务的版本。

相关内容