# 交换机端口镜像及其工作原理

Canonical: https://www.nsecsoft.com/technet/150.html

Language: zh-CN

Updated: 2020-10-26T09:39:19Z

端口镜像（portMirroring\)把交换机一个或多个端口（VLAN）的数据镜像到一个或多个端口的方法。在一 \[…\]

端口镜像（port Mirroring)把交换机一个或多个端口（VLAN）的数据镜像到一个或多个端口的方法。

在一些交换机中，我们可以通过对交换机的配置来实现将某个端口上的数据包，拷贝一份到另外一个端口上，这个过程就是端口镜像，如下图：

[![switchmirror](<https://www.nsecsoft.com/technet/wp-content/uploads/2015/02/switchmirror.jpg>)](https://www.nsecsoft.com/technet/wp-content/uploads/2015/02/switchmirror.jpg)

交换机端口镜像原理  
端口1为镜像端口，端口2为被镜像端口，因为通过端口1可以看到端口2的流量，所以我们也称端口1为监控端口，而端口2为被监控端口。  
市面上，绝大多数交换机（如cisco产品)的某个口被设置为镜像端口后，接到该端口的主机将无法发送数据包到网内其他机器，变成了单向接受模式。这类情况，并不利于监控，因为系统无发发送封包到客户机，而导致无法对客户机进行控制。不过Ping32针对此类情况有专门的解决手段，如碰到此类情况，用户可以咨询我公司技术人员。  
不过仍然有部分交换机除外，比如：Ping32客户常用的性价比不错的中低端的交换机TP-Link SF-2005（200多块适合20台以下用户使用）或TP-Link 2428web（700元左右，适合60多台电脑的用户使用），因为其价格便宜、功能实用、性价比相对大品牌的网管交换机更高，所以我们一般建议客户购买这两款交换机进行监控。  
注：如果网络监控的电脑超过了20台建议用TP-Link2428web这款性能更好的网管交换机，该交换机的背板带宽，转化数据包的速度比TPLink-SF2005高很多，而且还有两个千兆端口可以做为监控使用。如果使用其它品牌的交换机只要支持端口镜像功能的话也同样可以用于Ping32的监控。小贴士：一些常用的tp-link端口镜像交换机型号  
端口镜像的目的  
由于部署 IDS 产品需要监听网络流量（网络分析仪同样也需要），但是在目前广泛采用的交换网络中监听所有流量有相当大的困难，因此需要通过配置交换机来把一个或多个端口（VLAN）的数据转发到某一个端口来实现对网络的监听。  
端口镜像的功能  
监视到进出网络的所有数据包，供安装了监控软件的管理服务器抓取数据,如网吧需提供此功能把数据发往公安部门审查。而企业出于信息安全、保护公司机密的需要，也迫切需要网络中有一个端口能提供这种实时监控功能。在企业中用端口镜像功能，可以很好的对企业内部的网络数据进行监控管理，在网络出现故障的时候，可以做到很好地故障定位。一般通过配置端口镜像，安装Ping32监控上网行为管理软件就可以实现对整个网络的监控了。  
(备注：交换机把某一个端口接收或发送的数据帧完全相同的复制给另一个端口；其中被复制的端口称为镜像源端口，复制的端口称为镜像目的端口。)  
端口镜像通常有以下几种别名：  
Port Mirroring 通常指允许把一个端口的流量复制到另外一个端口，同时这个端口不能再传输数据。  
Monitoring Port 监控端口  
Spanning Port 通常指允许把所有端口的流量复制到另外一个端口，同时这个端口不能再传输数据。SPAN port常见于Cisco产换机中，SPAN 通常指Switch Port ANalyzer。思科的交换机SPAN端口不支持传输数据。这些流量就可以被一个特殊的设备监控，它对发现和修理故障有很大的帮助。  
端口镜像工作原理：SPAN(Switched Port Analyzer)的作用主要是为了给某种网络分析器提供网络数据流。  
它既可以实现一个VLAN中若干个源端口向一个监控端口镜像数据，也可以从若干个VLAN向一个临控端口镜像数据。源端口的5号端口上流转的所有数据流均被镜像至10号监控端口，而数据分析设备通过监控端口接收了所有来自5号端口的数据流。值得注意的是，源端口和镜像端口必须位于同一台交换机上(但也有例外，如Catalyst 6000系列交换机)；而且SPAN并不会影响源端口的数据交换，它只是将源端口发送或接收的数据包副本发送到监控端口。  
在SPAN任务过程中，用户可以通过参数控制，来指明需要监控的数据流种类；还可以将一个或多个端、口、一个或多个VLAN作为源端口，并将从这些端口中发送或接收的单向或双向数据流传送至监控端口。在Catalyst 4006交换机中，最多可以配置6个单向的SPAN任务：2个输入数据流监控、4个输出数据流监控。一个双向SPAN任务实际上包含一个单向输入和一个单向输出。而且不仅仅二层交换端口可作为源端口，Catalyst 4006上的三层路由端口也可设置为源端口。  
SPAN 任务不会影响交换机的正常工作。当一个SPAN任务被建立后，根据交换机所处的不同的状态或操作，任务会处于激活或非激活状态，同时系统会将其记入日志。通过&ldquo;show monitor session&rdquo;命令可显示SPAN的当前状态。  
如果遇到系统重新启动的情况，在目的端口初始化结束之前，SPAN任务将处于非激活状态。目的端口(监控端口)可以是交换机上的任意一个交换或路由端口。当一个目的端口处于激活状态时，任何发送到该端口且与SPAN任务无关的数据包将会被丢弃。  
一个目的端口只能处于一个SPAN任务中。当一个端口被配制成目的端口后就不能再成为源端口，同时冗余链路端口也不能成为SPAN的目的端口。特别需要指出的是，如果一个 Trunk端口被配置成为SPAN的目的端口，则其Trunk功能也将自动停止。  
源端口又可以称作被监控端口。在一个SPAN任务中，可以有一个或多个源端口，而且可以根据用户需要设置为输入方向、输出方向或双向，但无论哪种情况，在一个SPAN任务中，所有源端口的被监控方向都必须是一致的。在Catalyst 4006交换机上的VLAN也可以整体设置为源端口，这意味着被指定VLAN中的所有端口均为当前SPAN任务中的源端口。  
Trunk端口可以单独设为源端口，也可以与非Trunk端口一起被设置为源端口，但要注意的是，在监控端口不会识别来自Trunk端口针对不同VLAN的数据封装格式，换句话说，在监控端口收到的数据包将无法辨明是来自哪个VLAN。  
SPAN数据流主要分为三类：  
(1)输入数据流(Ingress SPAN)：指被源端口接收进来，其数据副本发送至监控端口的数据流  
(2)输出数据流(Egress SPAN)：指从源端口发送出去，其数据副本发送至监控端口的数据流  
(3)双向数据流(Both SPAN)：即为以上两种的综合。  
基于VLAN的SPAN是以一个或几个VLAN作为监控对象，其中的所有端口均为源端口，与基于端口的SPAN类似，基于VLAN的SPAN也分为输入数据流、输出数据流和双向数据流监控三种类型。  
在配置基于VLAN的SPAN任务过程中，应注意几点：  
(1)Trunk端口可以包含在源端口中  
(2)针对双向SPAN任务，如果在源VLAN中的两个源端口之间有数据交换，则每一个数据包将有两个副本被转发至镜像端口  
(3)对有多个源VLAN的SPAN任务来说，如果某个源VLAN被删除掉，则该VLAN也将从源VLAN列表中删除  
(4)处于非激活状态的VLAN无法参与SPAN任务；  
(5)对于一个设置为输入数据流监控的源VLAN来说，来自其他VLAN的路由信息数据包不会被镜像；此外，从设置为输出数据流监控的VLAN向其他VLAN发送出的路由信息数据包也同样不会被镜像。换句话说，基于VLAN的SPAN任务只对进出二层交换端口的数据包进行镜像，而不镜像VLAN之间的路由信息。  
所有网间传输的非路由数据包，包括组播包和BPDU(桥接协议数据单元)包，都可以使用SPAN任务进行镜像。  
在一些SPAN任务的配置下，会出现同一个SPAN源端口数据包的多个副本被发送到 SPAN监控端口的情况。正像前面提到的那样，在一个双向SPAN任务中，假设a1和a2为源端口，d1为目的端口，如果a1与a2之间有数据包传输，则在a1传向a2的数据包将会被传送到d1两次，反之亦然。  
镜像端口建立方法  
Cisco CATALYST交换机端口监听配置  
Cisco CATALYST交换机分为两 种，在CATALYST家族中称侦听端口为分析端 口(analysis port)。1、Catalyst 2900XL/3500XL/2950系列交换机端口监听配置 (基于CLI);  
以下命令配置端口监听：port monitor;  
例 如，F0/1和F0/2、F0/3同属VLAN1，F0/1监听F0/2、F0/3端口：;  
interface FastEthernet0/1  
port monitor FastEthernet0/2  
port monitor FastEthernet0/3  
port monitor VLAN1  
2、Catalyst 4000，5000 and 6000系列交换机端口监听配 置 (基于IOS)  
以下命令配置端口监听： set span  
例如，模块1中端口1和端口2同属VLAN1，端口3在VLAN2，端口4和5在VLAN2，端口2监听端 口1和3、4、5，  
set span 1/1，1/3-5 1/2

2950/3550/3750格式如下：  
#monitor session number source interface mod\_number/port\_number both  
#monitor session number destination interface mod\_mnumber/port\_number  
//rx–>指明是进端口得流量，tx–>出端口得流量 both 进出得流量  
for example:  
第一条镜像，将第一模块中的源端口为1-10的镜像到端口12上面；  
#monitor session 1 source interface 1/1-10 both  
#monitor session 1 destination interface 1/12  
第二条镜像，将第二模块中的源端口为13-20的镜像到端口24上面；  
#monitor session 2 source interface 2/13-20 both  
#monitor session 2 destination interface 2/24  
当有多条镜像、多个模块时改变其中的参数即可。  
Catalyst 2950 3550不支持port monitor  
C2950#configure terminal  
C2950(config)#  
C2950(config)#monitor session 1 source interface fastEthernet 0/2  
!— Interface fa 0/2 is configured as source port.  
C2950(config)#monitor session 1 destination interface fastEthernet 0/3  
!— Interface fa0/3 is configured as destination port.  
华为交换机端口镜像配置简单介绍  
『环境配置参数』  
1\. PC1接在交换机E0/1端口，IP地址1.1.1.1/24  
2\. PC2接在交换机E0/2端口，IP地址2.2.2.2/24  
3\. E0/24为交换机上行端口  
4\. Server接在交换机E0/8端口，该端口作为镜像端口  
『组网需求』  
1.通过交换机端口镜像的功能使用server对两台pc的业务报文进行监控。  
2.按照镜像的不同方式进行配置：  
1)基于端口的镜像  
2)基于流的镜像  
二、 数据配置步骤『端口镜像的数据流程』  
基于端口的镜像是把被镜像端口的进出数据报文完全拷贝一份到镜像端口，这样来进行流量观测或者故障定位。  
【3026等交换机镜像】  
S2008/S2016/S2026/S2403H/S3026等交换机支持的都是基于端口的镜像，有两种方法：  
方法一  
1\. 配置镜像（观测）端口  
\[SwitchA\]monitor-port e0/8  
2\. 配置被镜像端口  
\[SwitchA\]port mirror Ethernet 0/1 to Ethernet 0/2  
方法二  
1\. 可以一次性定义镜像和被镜像端口  
\[SwitchA\]port mirror Ethernet 0/1 to Ethernet 0/2 observing-port Ethernet 0/8  
【8016交换机端口镜像配置】  
1.假设8016交换机镜像端口为E1/0/15，被镜像端口为E1/0/0，设置端口1/0/15为端口镜像的观测端口。  
\[SwitchA\] port monitor ethernet 1/0/15  
2.设置端口1/0/0为被镜像端口，对其输入输出数据都进行镜像。  
\[SwitchA\] port mirroring ethernet 1/0/0 both ethernet 1/0/15  
也可以通过两个不同的端口，对输入和输出的数据分别镜像  
1\. 设置E1/0/15和E2/0/0为镜像（观测）端口  
\[SwitchA\] port monitor ethernet 1/0/15  
2.设置端口1/0/0为被镜像端口，分别使用E1/0/15和E2/0/0对输入和输出数据进行镜像。  
\[SwitchA\] port mirroring gigabitethernet 1/0/0 ingress ethernet 1/0/15  
\[SwitchA\] port mirroring gigabitethernet 1/0/0 egress ethernet 2/0/0  
『基于流镜像的数据流程』  
基于流镜像的交换机针对某些流进行镜像，每个连接都有两个方向的数据流，对于交换机来说这两个数据流是要分开镜像的。  
【3500/3026E/3026F/3050】  
〖基于三层流的镜像〗  
1\. 定义一条扩展访问控制列表  
\[SwitchA\]acl num 100  
2\. 定义一条规则报文源地址为1.1.1.1/32去往所有目的地址  
\[SwitchA-acl-adv-101\]rule 0 permit ip source 1.1.1.1 0 destination any  
3\. 定义一条规则报文源地址为所有源地址目的地址为1.1.1.1/32  
\[SwitchA-acl-adv-101\]rule 1 permit ip source any destination 1.1.1.1 0  
4.将符合上述ACL规则的报文镜像到E0/8端口  
\[SwitchA\]mirrored-to ip-group 100 interface e0/8  
〖基于二层流的镜像〗  
1.定义一个ACL  
\[SwitchA\]acl num 200  
2.定义一个规则从E0/1发送至其它所有端口的数据包  
\[SwitchA\]rule 0 permit ingress interface Ethernet0/1 egress interface Ethernet0/2  
3.定义一个规则从其它所有端口到E0/1端口的数据包  
\[SwitchA\]rule 1 permit ingress interface Ethernet0/2 egress interface Ethernet0/1  
4.将符合上述ACL的数据包镜像到E0/8  
\[SwitchA\]mirrored-to link-group 200 interface e0/8  
【5516/6506/6503/6506R】  
目前该三款产品支持对入端口流量进行镜像  
1.定义镜像端口  
\[SwitchA\]monitor-port Ethernet 3/0/2  
2.定义被镜像端口  
\[SwitchA\]mirroring-port Ethernet 3/0/1 inbound  
【补充说明】  
1\. 镜像一般都可以实现高速率端口镜像低速率端口，例如1000M端口可以镜像100M端口，反之则无法实现  
2\. 8016支持跨单板端口镜像  
三、 测试验证在观测端口上通过工具软件可以看到被镜像端口的相应的报文，可以进行流量观测或者故障定位  
注意！在此提醒一下各位，相同型号不同版本的设备，配置方法有时是有差异的，最终还是要以版本对应的操作手册为准。其它品牌的交换机如何镜像参照相关的交换机说明文档配置正确即可，在此就不一一列出来了。  
有效正确的配置好交换机的端口镜像才可以正常的使用Ping32上网监控管理软件，一般配置镜像只要把总出口的数据镜像到对应的Ping32服务器所连交换机的那个口就可以了，即我们说的一对一的端口镜像，如果没有特殊的需要，大家不要做多对一的端口镜像，即把多个源端口的数据镜像到一个口上，因为一般情况下，只要把总出口的数据镜像到Ping32上就可以实现对整个网络的监控管理了。
