从 WSL (Ubuntu) 连接 Hyper-V VM

Teg*_*juh 10 windows-subsystem-for-linux

我在 Hyper-V 上创建了一个带有 2 个网络适配器的 VM。

  1. 静态 ip 的NAT 开关
  2. 外部交换机(用于访问互联网)

从我的命令行,我能够使用 Nat Switch IP 连接到 VM,但是从 WSL Bash 我无法连接 IP NatSwitch,但能够连接 ExternalSwitch IP。

为什么?

Hob*_*Pet 13

不幸的是,这是预期的行为。(截至 2021 年 1 月 29 日)

WSL2 使用 Hyper-V 虚拟交换机、vEthernet (WSL)虚拟网络适配器,提供只能从 VM 和主机访问的内部类型 Hyper-V 网络。Hyper-V 计算机具有不同的虚拟网络适配器,例如vEthernet(默认交换机)。如果设置为内部,则为未连接到 WSL 的不同 NAT 网络(子网)。这就像主机拥有 3 个 NIC 和一根电缆(电缆 1),连接到仅存在于该适配器/电缆上的子网上的 WSL,另一根电缆(电缆 2)连接到具有该 NIC 上完全不同的子网的 Hyper-V 来宾。

在此输入图像描述

在另一种情况下,Hyper-V 来宾与主机共享子网(“与第三条电缆/NIC 相同的子网。”),因此它被路由回虚拟机。参见红色标签。

在此输入图像描述

此 GitHub 问题中有一个解决方法,使用从 WSL 到来宾 VM 的端口转发。


小智 10

我这样做了,它对我有用。

Get-NetIPInterface | where {$_.InterfaceAlias -eq 'vEthernet (WSL)' -or $_.InterfaceAlias -eq 'vEthernet (Default Switch)'} | Set-NetIPInterface -Forwarding Enabled
Run Code Online (Sandbox Code Playgroud)

从这里得到的