第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 和带宽 |
| 观察端口带宽 | 观察端口带宽 ≥ 源端口总带宽之和 |
| 抓包设备混杂模式 | 抓包设备必须开启混杂模式才能收到所有报文 |
| 及时清理配置 | 排障完成后清理镜像配置,恢复性能 |
思考
- 如果源端口是 10 Gbps,观察端口是 1 Gbps,会出现什么问题?
- 端口镜像抓包拿到的是源端口的原始帧还是镜像后的复制帧?
- Wireshark 怎样配置才能只查看 VLAN 10 的报文?
下篇预告:第24篇:堆叠(Stack)与集群(Cluster)的区别