故障排除是网络工作的系统管理员常见的任务。专业的网络设备通常具有监控和故障排除功能,例如端口镜像。端口镜像对于分析虚拟环境中的网络流量也很有用,包括在Microsoft Hyper-V主机上的虚拟网络以及虚拟机之间的网络通信。本文将解释如何在虚拟环境中配置Microsoft Hyper-V端口镜像以分析网络通信。
端口镜像关键概念
在解释如何配置端口镜像之前,让我们先来了解关键概念、工作原理以及现有的Hyper-V配置特性。
什么是端口镜像?
端口镜像是一种功能,它允许您将源主机的网络端口的网络流量复制到第二主机的网络端口(适配器)以进一步分析此流量。主机可以是物理机、虚拟机、具有网络接口的网络设备等。在本文档中,主机是指其网络流量在此上下文中被监控的主机。源端口也称为镜像端口,目标端口也称为观察端口。端口镜像也称为交换机端口分析器(SPAN)。
类型和好处
端口镜像可以本地和远程进行,这取决于端口之间的连接模式。对于本地端口镜像,源网络端口和目标网络端口连接到同一交换机。当源和目标端口连接到不同交换机时,使用远程端口镜像。远程端口镜像可以使用VLAN标记和GRE封装,将网络流量镜像到监控端口和设备。
端口镜像的好处是可以分析和工作网络设备处理不影响的网络通信。管理员可以分析流量以识别网络上的潜在攻击,检测攻击源并提高网络安全。使用端口镜像时,无需在 working machine 的 guest operating system 中直接捕获网络流量(例如,可以是 production VM)。
请注意,端口镜像会消耗额外的网络带宽来传输镜像流量,当需要执行网络分析时,您可能需要按需启用此功能。
端口镜像与端口转发
端口镜像与端口转发不同,因为在端口镜像中,例如 TCP 数据包或 UDP 数据报等网络流量不能被重定向。流量可以镜像(复制),但原始流量的源和目的地不会改变。原始流量的副本发送到目的地以进行分析。
端口转发中,流量(如TCP数据包或UDP数据报)的目的地可以被更改,特定的数据包(或其他协议数据单元)可以到达IP网络中的另一个IP地址和端口。端口转发用于网络地址转换(NAT)以实现网络间的通信。不会创建原始流量的副本。
Hyper-V中的端口镜像
您可以使用Hyper-V中的端口镜像功能来分析连接到虚拟交换机的虚拟网络中的流量。您需要定义一个目标虚拟机,并安装诸如Wireshark之类的流量捕获软件以进行分析。您可以使用其他可用的入侵检测系统(IDS)来达到这个目的。
Hyper-V的端口镜像功能与硬件端口镜像类似,但实现在Hyper-V虚拟交换机级别。在Hyper-V虚拟交换机上,使用交换机扩展功能和端口ACL(访问列表)来设置转发和流量嗅探规则。
端口镜像仅在单个Hyper-V主机的范围内工作。如果虚拟机位于不同的Hyper-V主机上(例如,在故障转移集群中,在将虚拟机从一台主机迁移到另一台主机之后),则不能使用Hyper-V端口镜像。在这种情况下,您需要在源虚拟机迁移到的第二台Hyper-V主机上配置一个额外的目标虚拟机以进行网络分析。
为端口镜像配置做准备
您应该熟悉配置Hyper-V端口镜像的要求。
先决条件和设置条件
配置Hyper-V环境下的端口镜像的要求如下:
- 具有Hyper-V和管理权限的Windows Server 2012 R2(或更高版本)。Windows 10或更高版本的操作系统可以用作客户端操作系统。
- Hyper-V主机上的虚拟交换机。
- 至少两个虚拟机用于镜像(复制)源虚拟机到目标虚拟机的流量。
硬件和软件清单
在目标虚拟机上安装流量嗅探器(流量分析器)或入侵检测系统是必需的。这样的工具示例包括Wireshark、Microsoft Network Monitor、Ettercap和SmartSniff。
配置步骤
我们在Hyper-V主机上有两个Windows虚拟机:
- Wind0ws-VM – 源虚拟机(192.168.101.215)
- Win-VM-Dest – 目标虚拟机(192.168.101.212)
Hyper-V主机配置在Windows Server 2019上。其他受支持的Windows版本的配置是相同的。
配置虚拟交换机
您可以使用现有的虚拟交换机,也可以创建一个新的虚拟交换机。如果在Hyper-V主机上没有虚拟交换机,请创建一个新的虚拟交换机。创建虚拟交换机的步骤如下:
- 打开Hyper-V 管理器,右键点击Hyper-V主机,在上下文菜单中选择虚拟交换机管理器。
- 选择一个虚拟交换机类型,然后点击创建虚拟交换机。为此,我们使用外部交换机(桥接网络)vSwitch0。点击确定以保存设置并关闭窗口。
配置源虚拟机
一旦虚拟交换机准备就绪,您就可以配置需要监视流量的源虚拟机。
- 要打开Hyper-V 管理器中的源虚拟机设置,请右键点击虚拟机名称,然后在上下文菜单中选择设置。
- 在虚拟机设置窗口中,导航到网络适配器>高级功能。
- 在端口镜像部分,在下拉菜单中选择源作为镜像模式。此操作将启用Hyper-V端口镜像,对该VM当前连接的虚拟交换机端口进行镜像。点击确定以保存设置。
- 请记住源VM连接的虚拟交换机的名称。优点是可以为分析目标VM上所有VM的流量配置多个源VM。
下一步是配置目标虚拟机,网络流量将被镜像(复制)到这台虚拟机。
配置目标VM
推荐的做法是在目标VM上创建一个额外的网络适配器,并禁用此网络适配器上的所有网络服务以进行更精确的分析。这种方法可以在禁用不需要的网络服务和协议后获取网络流量的完整转储。
- 如果目标VM正在运行,请关闭它。
- 在Hyper-V管理器中,右键点击目标VM的名称,然后点击设置以打开目标VM的设置。
- 在虚拟机设置窗口的左侧面板中点击添加硬件,选择网络适配器,然后点击添加。
- 选择第二个虚拟网络适配器将要连接的虚拟交换机。这必须是第一个(源)虚拟机连接的同一个虚拟交换机。在我们这个案例中,这是vSwitch0。点击确定以保存设置并关闭窗口。
- 再次打开目标虚拟机的虚拟机设置。
- 在左侧面板的虚拟机硬件列表中选择为端口镜像和流量诊断创建的第二个虚拟网络适配器,然后转到网络适配器 > 高级功能。
- 在端口镜像部分,选择目标作为镜像模式以接收镜像的网络流量。点击确定。
- 启动虚拟机。
- 连接到已创建用于接收和分析流量的目标虚拟机(使用Hyper-V VMConnect或RDP)。
- 在目标Windows虚拟机中打开网络和共享中心。点击更改适配器设置。
- 选择为流量分析创建的第二个网络适配器(您可以将此适配器重命名为LAN2-SPAN以提高便利性)。
- 右键点击网络适配器并选择属性。
现在,您可以在目标虚拟机上安装和配置网络流量分析软件,如WireShark。
安装流量分析器
- 在目标虚拟机上下载并安装Wireshark。在GUI向导中,安装过程很简单,您可以使用默认设置。
- 在目标虚拟机上运行Wireshark。
- 在Wireshark窗口中双击专为端口镜像和网络流量分析创建的网络适配器(LAN2-SPAN)。
- 现在,您可以看到源虚拟机(源虚拟机的IP地址为192.168.101.215)的网络活动。让我们在源虚拟机上ping google.com。
- 我们可以看到到/从142.251.208.110的ICMP请求和回复,这是此刻google.com主机的IP地址。
- 为了方便起见,您可以启用一个过滤器,例如,选择ICMP。
这是一个基本示例。您还可以使用其他协议来监视和分析其他网络活动。
PowerShell
Windows Server操作系统还允许您使用PowerShell配置和管理Hyper-V端口镜像。
要在源和目标虚拟机上启用端口镜像,请相应地运行命令:
Set-VMNetworkAdapter -VMName Wind0ws-VM -PortMirroring Source
Set-VMNetworkAdapter -VMName Win-VM-Dest -PortMirroring Destination
要禁用虚拟机的端口镜像:
Set-VMNetworkAdapter -VMName Wind0ws-VM -PortMirroring None
要检查虚拟机端口镜像设置:
(Get-VMNetworkAdapter -VMName Wind0ws-VM).PortMirroringMode
(Get-VMNetworkAdapter -VMName Win-VM-Dest).PortMirroringMode
您可以使用以下命令来显示帮助信息:
Get-Help Set-VMNetworkAdapter
Get-Help Set-VMNetworkAdapter -full
Get-Help Set-VMNetworkAdapter -detailed
Get-Help Set-VMNetworkAdapter -examples
以下命令在配置端口镜像时可能会有用:
Add-VMNetworkAdapter
– 为虚拟机添加一个新的网络适配器
Get-NetAdapter
– 显示虚拟机的网络适配器列表
Rename-Netadapter
– 更改虚拟机网络适配器的名称
结论
配置Hyper-V端口镜像可以在Hyper-V管理器的图形用户界面或PowerShell中方便地进行。请遵循要求并记住限制,例如源目标虚拟机在单个Hyper-V主机上的位置。您可能需要在故障转移集群中的Hyper-V主机上使用流量分析工具配置附加的目标虚拟机。Wireshark是一个方便且流行的流量分析工具,但如果需要,您可以使用其他工具。