Microsoft WSL2 虚拟网络适配器设置允许 802.1Q 标记的原始以太网数据包在主机和 WSL Linux 之间传输

Microsoft WSL2 虚拟网络适配器设置允许 802.1Q 标记的原始以太网数据包在主机和 WSL Linux 之间传输

我们需要使用 Npcap 将带有 802.1Q 标签的原始以太网数据包从 Windows 发送到 WSL Linux,反之亦然。但数据包无法到达另一端。我们在 WSL2 上使用 Ubuntu-20.04。在 Linux 端,我们使用 tcpdump 检查数据包;在 Windows 端,我们使用 WireShark。

我们使用的标签不是VLAN 标记,但优先级标签(VLAN ID = 0):

VLAN_TPID=0x8100
VLAN_TCI=0x4000 (PCP=2, CFI=0, VID=0)

如果我们删除该标签,原始以太网数据包将顺利到达另一端。当我们添加它时,我们将无法在“另一端”看到数据包。因此我们怀疑虚拟网络适配器配置有问题。

我们通过以下方式找到虚拟适配器名称

PS>Get-VMNetworkAdapter -ManagementOS

Name                   IsManagementOs VMName SwitchName     MacAddress   Status IPAddresses
----                   -------------- ------ ----------     ----------   ------ -----------
Container NIC 2e844c66 True                  Default Switch 00155D1F063A {Ok}
Container NIC 46298210 True                  WSL            00155DBAC80C {Ok}

与WSL Switch对应的是Container NIC 46298210

然后,我们尝试这两个 PowerShell 命令:

PS>Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Container NIC 46298210" -Trunk -AllowedVlanIdList "0,1-255" -NativeVlanId 0

PS>Set-VMNetworkAdapter -ManagementOS -VMNetworkAdapterName "Container NIC 46298210" -IeeePriorityTag On

但是我们的 802.1Q 标记以太网数据包仍然无法穿越 Windows<->Linux。

关于我们该如何进行,您有什么想法吗?

相关内容