第23篇:端口镜像——用镜像抓包排查故障

一、写在前面

排查网络故障时,最有效的手段之一就是抓包分析。但在交换机环境中,你不能随便把抓包软件装到交换机上,也不能直接拔线插到 PC 上抓包。

端口镜像(Port Mirroring) 就可以解决这个问题:将交换机某个端口(源端口)的流量复制一份,发送到另一个端口(目的端口),你在目的端口接上 PC 用 Wireshark 抓包分析。


二、端口镜像的应用场景

场景 说明
故障排查 用户报上不了网,镜像用户端口抓包分析 ARP/DHCP 过程
协议分析 分析 OSPF/BGP 邻居建立过程
安全监控 把流量镜像到 IDS/IPS 设备做入侵检测
性能分析 镜像出口流量分析带宽占用
合规审计 记录特定端口的通信内容

三、华为交换机端口镜像配置

3.1 本地镜像(最常用)

拓扑

        交换机
   G0/0/1    G0/0/24
     │         │
   PC-A     PC-抓包
  (源端口)  (观察端口)

需求:把 PC-A(G0/0/1)的收发流量镜像到 G0/0/24,在 PC-抓包上用 Wireshark 抓包。

配置

[SW1] observe-port 1 interface gigabitethernet 0/0/24    ← 定义观察端口

# 方式一:镜像到端口(基于端口)
[SW1] interface gigabitethernet 0/0/1
[SW1-GigabitEthernet0/0/1] port-mirroring to observe-port 1 both
# both = 收+发双向;inbound = 只镜像接收;outbound = 只镜像发送

# 方式二:镜像到 CPU
[SW1] interface gigabitethernet 0/0/1
[SW1-GigabitEthernet0/0/1] port-mirroring to cpu

3.2 验证

[SW1] display port-mirroring
---------------------------------------------------------------------
Mirroring:
  Observe-port 1 : GigabitEthernet0/0/24
---------------------------------------------------------------------
  GigabitEthernet0/0/1   mirror to observe-port 1 (both)
---------------------------------------------------------------------

3.3 抓包操作

  1. 在 PC-抓包上打开 Wireshark
  2. 选择对应的网卡
  3. 应用过滤条件(如 arpicmpip.addr==10.0.10.1
  4. 在 PC-A 上执行 ping / 打开网页
  5. 观察抓包结果

四、远程端口镜像(RSPAN)

4.1 适用场景

本地镜像只能在同一台交换机上,如果源端口和观察端口不在同一台交换机,就需要 RSPAN(Remote Switched Port Analyzer)

          Trunk
   [SW1] ──────── [SW2]
 G0/0/1           G0/0/24
   │                │
 PC-A             PC-抓包
(镜像源)         (观察口)

4.2 配置 RSPAN

# SW1(源端交换机)
[SW1] vlan 100
[SW1-vlan100] remote-span                    ← 设为 RSPAN VLAN
[SW1] interface gigabitethernet 0/0/1
[SW1-GigabitEthernet0/0/1] port-mirroring to remote-vlan 100   ← 镜像到 RSPAN VLAN

# 中间交换机(如果有多跳)只需让 Trunk 允许 RSPAN VLAN
[SW1] interface gigabitethernet 0/0/24
[SW1-GigabitEthernet0/0/24] port trunk allow-pass vlan 100

# SW2(目的端交换机)
[SW2] vlan 100
[SW2-vlan100] remote-span
[SW2] observe-port 1 interface gigabitethernet 0/0/24
[SW2] vlan 100
[SW2-vlan100] observe-port 1 interface gigabitethernet 0/0/24   ← 从 RSPAN VLAN 提取到观察口

注意:RSPAN VLAN 不能用于普通数据转发,只作为镜像流量的"传输通道"。


五、流镜像(Flow-Based Mirroring)

5.1 适用场景

端口镜像会把端口上所有流量都复制一遍,在流量很大时会给观察端口造成压力。如果只想镜像特定流量(比如只想看 PC-A 访问某个服务器的流量),就用流镜像。

5.2 配置

# 定义 ACL 匹配目标流量
[SW1] acl 3000
[SW1-acl-adv-3000] rule 5 permit ip source 10.0.10.1 0 destination 192.168.1.100 0

# 配置流行为:镜像
[SW1] traffic behavior mirror1
[SW1-behavior-mirror1] mirroring to observe-port 1

# 配置流策略绑定
[SW1] traffic policy capture
[SW1-policy-capture] classifier acl 3000 behavior mirror1

# 应用在镜像源端口(入方向)
[SW1] interface gigabitethernet 0/0/1
[SW1-GigabitEthernet0/0/1] traffic-policy capture inbound

只镜像 PC-A(10.0.10.1)到服务器(192.168.1.100)的流量,其他流量不镜像。


六、使用 Wireshark 分析抓包

6.1 常用过滤表达式

过滤表达式 说明
arp 只看 ARP 报文
icmp 只看 Ping 报文
ip.addr==10.0.10.1 只看该 IP 的流量
tcp.port==80 只看 HTTP 流量
dns 只看 DNS 查询/响应
dhcp 只看 DHCP 交互
!arp && !icmp 排除 ARP 和 ICMP

6.2 抓包排查常见场景

场景:PC 获取不到 IP 地址

# 镜像 PC 端口
filter: dhcp or arp

# 观察 DHCP 四步交互是否完整:
# DHCP Discover → DHCP Offer → DHCP Request → DHCP ACK
# 如果只有 Discover 没有 Offer → DHCP 服务器不可达
# 如果有 Offer 但没有 Request → PC 网卡问题

场景:Ping 丢包

# 镜像两端端口
filter: icmp

# 观察:
# Request 发出但无 Reply → 对端没收到或没回复
# Request 和 Reply 都有但间隔大 → 路径延迟
# 有重复的 Request → 网络中有环路

七、注意事项

注意事项 说明
观察端口不转发数据 镜像目的端口被占用,不能同时做业务口
镜像增加 CPU 负载 大量镜像会增加交换机 CPU 占用
1 个观察口可接收多个源 一个 observe-port 可以对应多个源端口
不要镜像 Trunk 全量 会复制所有 VLAN 的流量,数据量很大
不要一直开着 排查完记得关掉,避免影响性能

关闭镜像

[SW1] interface gigabitethernet 0/0/1
[SW1-GigabitEthernet0/0/1] undo port-mirroring to observe-port 1

八、思考

  1. 端口镜像会把源端口的流量复制一份到观察端口,原端口的流量会受影响吗?
  2. 本地镜像和 RSPAN 的区别是什么?什么场景要用 RSPAN?
  3. 观察端口本身还能作为业务端口使用吗?为什么?
  4. 流镜像比端口镜像好在哪?什么场景用流镜像?
  5. RSPAN 中为什么要定义一个专门的 VLAN?
  6. 写一个完整的用例:你收到用户报"上网慢",请写出从镜像到抓包到分析的完整排查步骤。

下篇预告:第24篇《堆叠Stack与集群Cluster基础概念》——理解堆叠和集群技术的基本概念和应用场景。