使用端口镜像 HP-2610 到 Hyper-V 的单向流量

使用端口镜像 HP-2610 到 Hyper-V 的单向流量

我有一个 Hyper-V 盒,它可以记录 IP 电话的通话,并具有以下连接功能:

  1. 接入端口(本机 VLAN 42)上的 PBX,插入交换机上的端口 22(它没有 VLAN 设置,因此我们设置本机接入 VLAN,以便其所有流量都在 VLAN 42 上)。
  2. 混合端口上的电话(本机 VLAN 1 用于工作站,标记为 42 用于电话)
  3. Hyper-V 计算机上用于客户虚拟机的专用 NIC
  4. Hyper-V 机器上的专用 NIC,用于监控交换机上的端口 21。
  5. 在 Hyper-V 上启用端口镜像

HP ProCurve 2610-24 交换机配置如下:

mirror-port 21
vlan 1
  name "DEFAULT"
  untagged 1-17,19-21,23-28
  no untagged 18,22
exit
vlan 42
  name "VOICE"
  untagged 22
  tagged 1-20,23,26
exit
interface 22
  monitor
exit

我已经在 Hyper-V 主机上启用了监控:

  1. 在 Hyper-V 主机上,创建一个名为 Monitor 的新虚拟交换机,它物理连接到专用监控 NIC(也为一般流量创建一个单独的交换机)。
  2. 启用扩展 Microsoft NDIS Capture。
  3. $portFeature=Get-VMSystemSwitchExtensionPortFeature -FeatureName "Ethernet Switch Port Security Settings"
  4. $portFeature.SettingData.MonitorMode = 2
  5. Add-VMSwitchExtensionPortFeature -ExternalPort -SwitchName Monitor -VMSwitchExtensionFeature $portFeature
  6. 创建新的虚拟机,添加以下虚拟网卡:
    1. 连接到客户虚拟交换机的用于一般数据流量的网卡
    2. 连接到监控虚拟交换机的流量监控网卡
  7. 在客户虚拟机的监视虚拟网卡下,进入Advanced Features,将端口镜像模式设置为Destination

当我在客户监控虚拟机上运行 wire-shark 时,我只看到从 PBX(源)到电话(目的地)的单向流量,而不是从电话到 PBX 的单向流量。

原则上,由于 PBX 可以发送/接收未标记的数据(在端口 22 上显示),因此这应该在端口监视端口上逐字显示为未标记的数据帧(对于本机 VLAN 42),还是我搞错了方向?

我已经完成了相同的 Hyper-V 设置,但使用的是 Cisco,并且没有出现任何问题,运行正常。

不确定这是我做错了什么,还是 Windows 出了问题,或者是 HP 的问题。非常感谢指点。

答案1

根据上述配置,端口镜像是正确的(HP 在其 25xx 和 26xx 型号上声明,无论被监控的端口是否设置为未标记,其监控都会保留 VLAN 标记 - 请注意,这是用于端口监控的,不确定新型号上的 VLAN 类型是否不同,因为无法在此固件上进行测试)。

我的初始步骤是使用默认监控设置来捕获虚拟机上的流量:

// On Hyper-V host, create a new virtual switch called Monitor, this
// physically connects to the dedicated monitoring NIC (create a separate switch for general traffic also).
// Also Enable extension Microsoft NDIS Capture for this NIC.
$portFeature=Get-VMSystemSwitchExtensionPortFeature -FeatureName "Ethernet Switch Port Security Settings"
$portFeature.SettingData.MonitorMode = 2
Add-VMSwitchExtensionPortFeature -ExternalPort -SwitchName Monitor -VMSwitchExtensionFeature $portFeature
// final step i did through GUI => Under the monitor virtual network adapter
// of the guest VM, go to Advanced Features, and set the port mirror mode to Destination.

我可以看到我获得了所有从 PBX 出来的未标记帧(它没有标记帧的概念)。

然后,我尝试将中继设置为交换机以接收标记的 42 和本机 vlan 42 Set-VMNetworkAdapterVlan -VMName MonitorVM -VMNetworkAdapterName Monitor -Trunk -Allowed VlanIdList 813 -NativeVlanId 42,此时发现我不再接收 PBX 数据(未标记的帧)。

在网上阅读后我发现Hyper-V 将未标记(VLAN 已禁用)定义为 VLAN ID 0

将主干设置为虚拟机接受带标签的 42 帧和未带标签的帧(重命名界面以便我只能针对该界面):

$a = Get-VMNetworkAdapter -vmname MonitorVM
$a[1] -NewName Monitor // referenced the monitor NIC, you will need to search array to check
Set-VMNetworkAdapterVlan -VMName MonitorVM -VMNetworkAdapterName Monitor -Trunk -Allowed VlanIdList 813 -NativeVlanId 0

然后我就能看到双向交通了!

答案2

我无法评论 ProCurve 设置,但由于您在 HV 上有一个专用 NIC 用于监控,您是否也需要在虚拟交换机上进行额外的镜像配置?此时流量可以像往常一样传递到 VM。

您是否能够确认 ProCurve 是否正确镜像流量并且至少到达专用 NIC?

答案3

谢谢你的帖子,它对我帮助很大。

我可以确认这也解决了我的情况。我注意到 PowerShell 中的代码片段有点错误(可能是由于某些格式问题),这是我使用的脚本

#Get all network interface reference for a virtual machine
$a = Get-VMNetworkAdapter -vmname testmirror

# Visualize all the virtual network adapters to identify by virtual switch name
$a 

#Rename the cards so you can distinguish them, in my situation
#first one is the LAN card and second one is the one connected
#to the SPAN port of the switck
rename-VMNetworkAdapter -VMNetworkAdapter $a[0] -newname "LAN"
rename-VMNetworkAdapter -VMNetworkAdapter $a[1] -newname "LAN_Mirror"

#Finally enable trunking on mirror port
Set-VMNetworkAdapterVlan -VMName testmirror -VMNetworkAdapterName LAN_Mirror -Trunk -AllowedVlanIdList 1-100 -NativeVlanId 0

相关内容