端口镜像概述
端口镜像的作用主要在于一些难度较大的网络技术的学习中,我们通过抓包对报文的分析,可以更好地理解
还有的就是在网络排障的过程中,我们可以通过抓包分析数据报文的收发等状态,来判断在哪个设备节点上出现了问题
端口镜像最主要使用的技术是SPAN,所以端口镜像也被称为是SPAN或端口监听
端口镜像最重要的概念是,将一个端口的入/出/双向流量复制一份到另一个端口上,注意,这里指的是复制,而并不是直接转发。端口镜像最多只是起到分析流量的作用,并没有能力去控制流量
如下图,通过端口镜像我们可以将③的出/入/双向流量复制一份给①,从而使得网络监测系统对③端口以及下联两台PC的流量进行分析
端口镜像原理
端口镜像定义了独自属于端口镜像的会话,SPAN会话,在这个SPAN会话中有两种的端口角色,1、目的端口,2、源端口
刚刚我们说到,将一个端口的入/出/双向流量复制一份到另一个端口上,在这其中,存在着两种端口类型的概念,被复制流量的那个端口称为被监控端口,而负责分析流量的那个端口被称为监控端口
与目的端口和源端口相互结合,我们得到了一个新的概念,目的端口就是那个被监控的端口,而源端口就是那个去监控的端口,如下图所示
即源端口会复制一份流量称为镜像报文然后转发给目的端口
源端口的特性
源端口也称端口镜像中的被监控口
在SPAN会话中,无论是源端口的出/入/双向的数据,都会被监控到
通过上图我们发现,在一个SPAN会话中,有许多个源端口,也暗示着我们源端口的数量是不受限制的,但在物理层面上还是要收到设备性能的限制
1、源端口的角色有很多种,源端口可以作为二层口、三层口(no switchport)或者是AP口
2、一个端口不能同时作为源端口和目的端口
3、源端口和目的端口之间可以是跨网段通信,如源端口和目的端口所在的vlan可以相同也可以不同
目的端口的特性
目的端口也称为端口镜像中的监控口
在SPAN会话中,负责接收并分析源端口发送来的镜像报文
1、同样的,目的端口的角色也可以是二层口、三层口(no switchport)、AP口
2、与之前说的一样,目的端口也不能同时作为源端口
3、默认情况下,目的端口是不能即用来发送数据,又用来做端口镜像,这里说了默认情况,那么就说明,我们可以通过配置命令来进行改变,就是在配置时加上switch参数
端口镜像SPAN的配置
如下拓扑图,通过在交换机SW1上配置端口镜像,g0/1作为源端口,g0/2作为目的端口,实现在PC0上可以监控PC1和PC2访问外部流量的效果
基础配置:SW1和SW2之间的链路为trunk链路
SW1上
SW1(config)#int g0/1
SW1(config-if)#switchport mode trunk
SW2上
SW2(config)#int g0/1
SW2(config-if)#switchport mode trunk
因为源端口和目的端口都在SW1上,所以这里的端口镜像实验,我们都是在SW1进行配置即可
创建SPAN会话为会话1,为会话创建端口镜像的源端口g0/1,抓包方向为双向
SW1(config)#monitor session 1 source int g0/1 both
//这条命令同时做了两件事情,1、创建SPAN会话1,创建端口镜像的源端口g0/1,both表示抓包方向为双向
创建SPAN session 1的目的端口为g0/2,并配置switch参数
SW1(config)#monitor session 1 destination int g0/2 switch
端口镜像SPAN会话的配置,只需要上述的简单两步即可完成
同时也要注意在配置源端口被监控双向抓包的时候,除了both,我们还要知道只抓出流量和入流量
在原本both的位置,如果配置rx,则表示只抓包抓取入流量的数据包;如果配置为tx,则表示只抓包抓出流量的数据包
我们还可以show一下,来验证我们的配置
查看SPAN的配置
SW1(config)#show monitor session 1
远程端口镜像RSPAN
上面我们的实验配置都是在一台设备上进行端口镜像的,但是某些场景下,我们需要将其它的端口的报文镜像一份到本设备上来
这个时候就需要另外一种SPAN,就是RSPAN,RSPAN可以做到监控其它设备上的端口,即源端口和目的端口不再一台设备上
RSPAN原理
RSPAN会定义了一个专门用于传输镜像报文的vlan,叫做Remote vlan
由于Remote vlan 的存在,RSPAN中又产生三种设备的角色和功能
1、源设备,源端口所在的交换机,负责将源端口的数据复制一份,接着通过Remote vlan传递到目的设备或者是中间设备上
2、中间设备,源设备与目的设备之间并且在remote vlan上的交换机,负责将镜像报文传递到下一个中间设备或则是目的设备上
3、目的设备,目的端口所在的交换机,负责接收并分析镜像报文
RSPAN配置流程
RSPN配置大致思路,既然是交换机互联,我们就必须先将交换机与交换机之间的trunk的链路配置完成
随后需要源设备、中间设备和目的设备上定义remote vlan
接着就开始对源设备、中间设备和目的设备不同角色进行不同的配置即可
1、源设备、中间设备和目的设备上定义remote vlan,并配置交换机与交换机之间的trunk链路
SW1上
SW1(config)#int g0/2
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan all
SW1(config-if)#ex
SW1(config)#vlan 7
SW1(config-vlan)#remote-span //使vlan7称为remote-vlan
SW1(config-vlan)#ex
SW2上
SW2(config)#int range g0/1-2
SW2(config-if-range)#switchport mode trunk
SW2(config-if-range)#switchport trunk allowed vlan all
SW2(config-if-range)#ex
SW2(config)#vlan 7
SW2(config-vlan)#remote-span
SW2(config-vlan)#ex
SW3上
SW3(config)#int g0/1
SW3(config-if)#switchport trunk encapsulation dot1q
SW3(config-if)#switchport mode trunk
SW3(config-if)#switchport trunk allowed vlan all
SW2(config-if-range)#ex
SW3(config)#vlan 7
SW3(config-vlan)#remote-span
SW3(config-vlan)#ex
2、实际上,在RSPAN中,中间设备只需要允许配置trunk链路和允许全部vlan通过即可
配置源设备
SW1上
创建RSPAN会话1,并指定其为源设备
SW1(config)#monitor session 1 remote-source //指定SW1为源设备
配置g0/1为源端口,并且抓包方向为双向
SW1(config)#monitor session 1 source int g0/1 both
配置源设备复制的镜像报文应该从那个vlan出(即那个是remote vlan)和从哪个接口出,并配置输出端口可交换功能
SW1(config)#monitor session 1 destination remote vlan 7 int g0/2 switch
配置目的设备
SW3上
创建RSPAN会话1,并指定其为目的设备
SW3(config)#monitor session 1 remote-destination
配置g0/2为目的端口,并配置从哪个remote vlan接收镜像报文
SW3(config)#monitor session 1 desination remote vlan 7 int g0/2 switch