我们需要使用 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。
关于我们该如何进行,您有什么想法吗?