第23篇:端口镜像——用镜像抓包排障实战

关键词:端口镜像、镜像、观察端口、源端口、远程镜像、Wireshark、抓包、镜像组


一、引言

网络出现疑难杂症时,最直接有效的排查手段就是"抓包"。通过抓包可以真实再现网络中的数据报文,让网络工程师能够在不影响业务的情况下"破开"网络报文的黑盒。端口镜像(Port Mirroring)就是把指定端口的报文复制一份发送到另一个抓包设备的端口,让抓包设备或笔记本能够采集这些报文。本文将系统讲解端口镜像的原理、配置方法和实战抓包排障技巧。

二、核心概念

2.1 端口镜像的基本概念

概念 说明
源端口(Source Port) 被镜像的端口,其报文会被复制
观察端口(Observation Port) 接收镜像报文的端口,连接抓包设备
报文复制 源端口报文的复制不影响原报文转发
镜像方向 入方向(Inbound)、出方向(Outbound)、双向(Both)

2.2 端口镜像的类型

类型 说明 适用场景
本地端口镜像 源端口和观察端口在同一台设备 单台设备抓包
远程端口镜像(ERSPAN) 通过二层/三层专用通道把镜像报文传送到远端 跨设备抓包
流镜像 对特定业务流的报文进行镜像 特定流量抓包

2.3 华为端口镜像架构

华为镜像配置基于"观察端口 + 镜像组"模型:

组件 说明
观察端口 通过 observe-port 命令创建,绑定一个物理端口
镜像方向 在源端口上通过 port-mirroring to observe-port N { both \| inbound \| outbound } 指定

三、技术细节

3.1 本地端口镜像的配置流程

本地端口镜像的配置流程 - 图示

3.2 镜像方向选择

方向 命令 说明
入方向 port-mirroring to observe-port N inbound 镜像源端口进入交换机的报文
出方向 port-mirroring to observe-port N outbound 镜像源端口发出交换机的报文
双向 port-mirroring to observe-port N both 同时镜像进出报文

3.3 远程端口镜像

当源端口和观察端口不在同一台设备时,需要使用远程镜像,远程镜像分为二层远程镜像和三层远程镜像,其中三层远程镜像功能需加载插件模块支持,应用较少:

远程端口镜像 - 图示

注意:远程镜像的配置方式因 VRP 版本不同而有所差异,部分 S 系列交换机要求配置中间二层隧道,部分 CloudEngine 交换机支持基于 GRE 隧道的 远程镜像。本文以本地镜像为主,远程镜像仅作概念说明。

四、实战配置/案例分析

4.1 案例一:本地端口镜像配置

需求:在接入交换机上镜像 GE0/0/1 端口的所有报文到 GE0/0/24,使用 Wireshark 抓包分析。

# 1. 配置观察端口(绑定 GE0/0/24)
[SW] observe-port 1 interface GigabitEthernet 0/0/24

# 2. 在源端口上配置双向镜像
[SW] interface GigabitEthernet 0/0/1
[SW-GigabitEthernet0/0/1] port-mirroring to observe-port 1 both
[SW-GigabitEthernet0/0/1] quit

# 3. 验证
<SW> display observe-port
  Index   : 1
  Interface: GigabitEthernet0/0/24

<SW> display port-mirroring
  Observe port mirroring:
  MirroringPort         Direction        ObservePort : Interface
  GE0/0/1               Inbound                    1 : GE0/0/24               
                        Outbound                   1 : GE0/0/24 

Wireshark 抓包: 1. 笔记本连接 GE0/0/24 2. 【可选】笔记本网卡设置为混杂模式(Promiscuous Mode) 3. 启动 Wireshark,选择对应网卡开始抓包 4. 过滤特定协议:icmp、http、dns 等

关于混杂模式::在 CSMA/CD 网络中,每一块网卡都会接受到其他所有主机数据通信的信息, 但是只有目的地址标记为自身的数据包才会被保存下来,送往高层进行处理,而其他的都会被简单的丢弃, 如果设置为混杂模式之后,在网卡收到目标地址为其他的主机的数据包时,则不会再丢弃该数据包。

混杂模式一般不需要单独手动设置。 Wireshark 在开始抓包时,会自动将网卡置为混杂模式(Promiscuous Mode),抓包结束后自动恢复。

4.2 案例二:远程镜像场景示意

场景:在交换机 A 上配置源端口镜像,监控设备Server通过交换机 B 与交换机 A 相连。现在希望Server能够远程对换机 A 的源端口流量进行监控。

说明:华为不同 VRP 版本对远程镜像的支持差异较大。以下示例给出基于二层 VLAN 转发的远程镜像简化思路,仅供参考。实际配置时建议参考对应设备型号的产品文档。

二层远程端口镜像将镜像报文转发到监控设备的过程:

在二层远程端口镜像中,镜像报文会通过VLAN10转发到中间设备SW-B。SW-B是没有任何镜像配置的,镜像报文只能通过一般二层通信流程转发到Server。而且,由于镜像报文的目的MAC与原始报文目的MAC相同,不是监控设备的MAC,也就是说,镜像报文不能通过MAC表进行转发,而是依赖未知单播的处理流程——广播方式进行转发。只要VLAN10对应的MAC表中不包含镜像报文目的MAC对应的表项,镜像报文就可以通过广播方式转发到Server。

# ============ 接入交换机 A(源端口所在) ============
# 1. 创建远程观察 VLAN
[SW-A] vlan 10
[SW-A-vlan4094] quit

# 2.配置接口GE0/0/24为二层远程观察端口(对接SW-B),二层远程镜像VLAN为VLAN 10
[SW-A] observe-port 1 interface gigabitethernet 0/0/24 vlan 10

# 3. 源端口接入镜像
[SW-A] interface GigabitEthernet 0/0/1
[SW-A-GigabitEthernet0/0/1] port-mirroring to observe-port 1 inbound
[SW-A-GigabitEthernet0/0/1] quit

# ============ 核心交换机 B(观察端口所在) ============
# 1. 创建二层远程镜像VLAN,并关闭MAC学习功能
[SW-B] vlan 10
[SW-B-vlan10] mac-address learning disable
[SW-B-vlan10] quit

# 2. 对接SW-A端口配置Trunk模式并允许vlan 10通过
[SW-B] interface gigabitethernet 0/0/2
[SW-B-GigabitEthernet0/0/2] port link-type trunk
[SW-B-GigabitEthernet0/0/2] port trunk allow-pass vlan 10
[SW-B-GigabitEthernet0/0/2] return

#  3. 对接监控设备Server端口加入vlan 10
[SW-B] interface gigabitethernet 0/0/1
[SW-B-GigabitEthernet0/0/1] port link-type access
[SW-B-GigabitEthernet0/0/1] port default vlan 10
[SW-B-GigabitEthernet0/0/1] quit

提示:上述示例命令在不同 VRP 版本下可能存在差异;实际部署前需参考具体设备版本的产品文档。

4.3 案例三:配置端口镜像排查 ARP 欺骗

故障现象:某办公室用户频繁掉网,怀疑是 ARP 欺骗。

排查步骤:

# 步骤1:在接入交换机上配置端口镜像
[SW] observe-port 1 interface GigabitEthernet 0/0/24
[SW] interface GigabitEthernet 0/0/1
[SW-GigabitEthernet0/0/1] port-mirroring to observe-port 1 both
[SW-GigabitEthernet0/0/1] quit

# 步骤2:将抓包笔记本接入 GE0/0/24,打开 Wireshark
# 输入过滤协议:arp
# 观察 ARP 报文

# 步骤3:分析抓包内容
# 发现某 MAC 地址(CC:CC:CC:CC:CC:CC)频繁发送 ARP Reply
# 自称自己拥有 IP 192.168.10.1(网关地址)
# 但真实的网关 MAC 应为 AA:AA:AA:AA:AA:AA

# 步骤4:定位攻击源
<SW> display mac-address CC-CC-CC-CC-CC-CC
MAC Address    VLAN   MAC Type  Interface
CC-CC-CC-CC-CC-CC   10    Dynamic   GigabitEthernet0/0/15

# 步骤5:到 GE0/0/15 端口对应的工位排查
# 发现一台感染木马的 PC,关闭该 PC 的网络连接

# 步骤6:清理配置,恢复网络
[SW] interface GigabitEthernet 0/0/1
[SW-GigabitEthernet0/0/1] undo port-mirroring
[SW-GigabitEthernet0/0/1] quit
[SW] undo observe-port 1

五、总结

镜像类型 配置复杂度 多设备 适用场景
本地端口镜像 低 否 单台设备抓包
远程 VLAN 镜像 中 是 远端集中抓包
流镜像 中 可选 特定流量精细抓包
注意事项 说明
镜像影响性能 镜像会占用额外的 CPU 和带宽
观察端口带宽 观察端口带宽 ≥ 源端口总带宽之和
抓包设备混杂模式 抓包设备必须开启混杂模式才能收到所有报文
及时清理配置 排障完成后清理镜像配置,恢复性能

思考

  1. 如果源端口是 10 Gbps,观察端口是 1 Gbps,会出现什么问题?
  2. 端口镜像抓包拿到的是源端口的原始帧还是镜像后的复制帧?
  3. Wireshark 怎样配置才能只查看 VLAN 10 的报文?

下篇预告:第24篇:堆叠(Stack)与集群(Cluster)的区别