第一部分  端口安全
端口安全是一种第2层特性,并且能够提供如下5种保护特性:
l 基于主机MAC地址允许流量
l 基于主机MAC地址限制流量
l 在期望的端口上阻塞单播扩散
l 避免MAC扩散***
l 避免MAC欺骗***
第一.  基于主机的MAC地址允许流量
端口安全能够基于主机MAC地址而允许流量。单个端口能够允许一个以上到某个特定数目的MAC地址。根据交换机型号的不同,他们所允许的最大MAC地址数也不相同。这种特性有助于规定每个端口所允许的主机数。例如,通过将用户端口限制到1个学到的MAC地址,而将会议室端口限制到10个MAC地址,将有助于避免网络的非授权访问。
通过如下步骤,将可以根据主机MAC地址来允许流量,进而启动端口安全:
步骤1:对存在问题的端口启用端口安全
步骤2:配置学习主机MAC地址
步骤3:指定安全违背行为(默认行为是永久性地关闭端口)
步骤4:如果安全违背行为准备关闭端口,就需要配置err-disable计时器,err-disable计时器是一个全局值。
配置过程
1. 配置每个端口所允许的最大MAC地址数
1) 进入全局模式  configure terminal
2) 进入接口模式  interface 接口
3) 配置接口模式
    switchport mode access|trunk
注意:一个接口使用默认模式(动态协商)不能启用端口安全
4) 设置最大MAC数
    swtichport port-security maximum 最大值
    switchport port-security vlan vlan列表 [access|voice]
可以设置每个VLAN中允许的最大MAC数,access表示为该vlan是接入vlan,voice表示该vlan是语音vlan
2.配置端口允许的MAC地址
1) 进入接口模式  interface 接口
2) 配置允许的MAC地址
手工指定:
   switchport port-security mac-address mac地址 [vlan vlan号|[access|voice]]
动态学习:交换机可以动态学习MAC地址并加入到MAC地址表中,当交换机重新启动后将丢失
粘性地址:可以动态学习或手工配置,学习后MAC地址加入到MAC地址表,如果保存配置文件,当交换机重新启动后,交换机不再需要动态学习的那些之前动态学习的地址了
          switchport port-security mac-address sticky
3. 配置安全违背行为
1) 进入接口模式   interface 接口
2) 配置违规后的动作
    switchport port-security violation protect|restrict|shutdown
    protect:保护,当安全MAC地址数量达到了端口所允许的最大MAC地址数的时候,交换机会继续工作,但将把来自新主机的数据帧丢弃,直到删    除足够数量的MAC地址使其低于最大值。
    Restrict:限制,交换机继续工作,向网络管理站(SNMP)发出一个陷阱trap通告
    Shutdown:关闭,交换机将永久性或在特定时间周期内err-disable端口,并发送一个SNMP的trap陷阱通告
    需要配置关闭模式下的err-disable计时器
    err-disable recovery cause secure-violation
    启用err-disable
    err-disable recovery interval 计时器
案例:
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 50
Switch(config-if)# switchport port-security mac-address sticky
--------------------------------------------------------------------
Switch(config)# interface f0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security mac-address 0000.0000.0008
Switch(config-if)# switchport port-security violation restrict
Switch(config)# interface f0/2
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security mac-address 0000.0000.0011
Switch(config-if)# switchport port-security violation shutdown
-----------------------------------------------------------------------
案例:
Switch(config)#int f0/1
Switch(config-if)#switchport port-security
Command rejected: Fa0/1 is not an access port.   //先启动端口安全会出现错误提示
Switch(config-if)#swit mode access
Switch(config-if)#switchport port-security         //启动端口安全
Switch(config-if)#switchport port-security maximum ?
  <1-132>  Maximum addresses
Switch(config-if)#do show mac-address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
 All    000d.6564.0280    STATIC      CPU
 All    0100.0ccc.cccc    STATIC      CPU
 All    0100.0ccc.cccd    STATIC      CPU
 All    0100.0cdd.dddd    STATIC      CPU
   1    000b.5f2c.2097    DYNAMIC     Fa0/23
   1    0010.7b35.e9b6    DYNAMIC     Fa0/1               //这是和路由器相连的地址
   1    00a1.b003.3cd7    DYNAMIC     Fa0/18
  10    000b.5f2c.2097    DYNAMIC     Fa0/23
  20    000b.5f2c.2097    DYNAMIC     Fa0/23
  30    000b.5f2c.2097    DYNAMIC     Fa0/23
  40    000b.5f2c.2097    DYNAMIC     Fa0/23
 100    000b.5f2c.2097    DYNAMIC     Fa0/23
 200    000b.5f2c.2097    DYNAMIC     Fa0/23
 201    000b.5f2c.2097    DYNAMIC     Fa0/23
 202    000b.5f2c.2097    DYNAMIC     Fa0/23
Total Mac Addresses for this criterion: 15
------------------------------------------------------------------
Switch(config-if)#switchport port-security mac-address 0010.7b35.e9b6
Switch(config-if)#switchport port-security violation shutdown
Switch#show port-security interface f0/1
Port Security              : Enabled
Port Status                : Secure-up
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 1
Total MAC Addresses        : 1
Configured MAC Addresses   : 1
Sticky MAC Addresses       : 0
Last Source Address        : 0010.7b35.e9b6
Security Violation Count   : 1
-----------------------------------------------------
Switch#show port-security
Secure Port  MaxSecureAddr  CurrentAddr  SecurityViolation  Security Action
                (Count)       (Count)          (Count)
---------------------------------------------------------------------------
      Fa0/1              1            1                  0         Shutdown
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port)     : 0
Max Addresses limit in System (excluding one mac per port) : 1024
---------------------------------------------------------------------------
Switch#show port-security address
          Secure Mac Address Table
-------------------------------------------------------------------
Vlan    Mac Address       Type                Ports   Remaining Age
                                                         (mins)
----    -----------       ----                -----   -------------
   1    0010.7b35.e9b6    SecureConfigured        Fa0/1        -
-------------------------------------------------------------------
Total Addresses in System (excluding one mac per port)     : 0
Max Addresses limit in System (excluding one mac per port) : 1024
现在我们把mac地址为00a1.b003.3cd7的主机接入到f0/1中,此时会出现如下的信息:
00:24:08: %PM-4-ERR_DISABLE: psecure-violation error detected on Fa0/1, putting
Fa0/1 in err-disable state
00:24:08: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 00a1.b003.3cd7 on port FastEthernet0/1.
00:24:09: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, chang
ed state to down
00:24:10: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down
-----------------------------------------
Switch#show port-security
Secure Port  MaxSecureAddr  CurrentAddr  SecurityViolation  Security Action
                (Count)       (Count)          (Count)
---------------------------------------------------------------------------
      Fa0/1              1            1                  1         Shutdown
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port)     : 0
Max Addresses limit in System (excluding one mac per port) : 1024
-------------------------------------------------------------------
Switch#show port-security interface f0/1
Port Security              : Enabled
Port Status                : Secure-shutdown
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 1
Total MAC Addresses        : 1
Configured MAC Addresses   : 1
Sticky MAC Addresses       : 0
Last Source Address        : 00a1.b003.3cd7
Security Violation Count   : 1
4.配置MAC地址持续时间
1) 进入接口模式  interface 接口
2) 配置持续时间
    switchport port-security aging time 时间 type absolute|inactivity
    absolute模式:当持续时间过后,安全端口上的地址将被绝对删除
    inactivity模式:在持续时间内,没有使用的端口将被删除
案例:
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# switchport port-security aging time 120
-------------------------------------------------------------------------
Switch(config-if)# switchport port-security aging time 2
Switch(config-if)# switchport port-security aging type inactivity
Switch(config-if)# switchport port-security aging static
5.验证结果
   show port-security [interface 接口] address
案例:
CCIE-LAB(V135)
题目要求:
At sw1 port 15, there is a host need to be protected. You must config this port to protect it and must use arp command to bind the host’s ip address and mac address. Mac addresses 0080.2222.3333 and ip 172.1.1.1/24.
配置:
SW1
   interface f0/15
switchport mode access
siwtchport port-security maximum 1
switchport port-security mac-address 0080.2222.3333
switchport port-security violation protect
   arp 172.1.1.1 0080.2222.3333 arpa f0/15
CCIE-LAB(V142)
题目要求:安全部分
SW1的Fa0/12连接外部Public network drop的机器,这台机器的IP ADDRESS=X.X.X.X; MAC=0000.8333.3333,保证没有其他机器可使用这个端口。(考试没给出IP Address,故没必要用arp命令)
配置:
sw1
config termi
interface f0/12
   switchport mode access
   switchport port-security
   switchport port-security maximum 1
   switchport port-security mac-address 0000.8333.3333
   switchport port-security violation protect
   no shut
CCIE-LAB(V148)
题目要求:
Configure Sw2-Fa0/2 so that it only accepts traffic from R2. If another host is attached to the port then the traffic should be dropped, but the port should remain enabled.
配置:
SW2
Interface f0/2
  Switchport mode access
  Switchport port-security
  Switchport port-securtiy mac-address R2的mac地址
  Switchport port-security maximum 1
  Switchport port-security violation protect
CCIE-LAB(yy)
题目要求:
VLAN_B need tight (high) security, configure the ports in this VLAN to physical address of the routers that are currently attached to them.
This configuration should survive the reboot of the switch. 
Log violations of this policy while allowing correct traffic to proceed.
图:
 
VLAN B---VLAN12
配置:
SW2
conf t
interface range f0/2,f0/5
   shut down
   switchport mode access
   switchport port-security
   switchport port-security maximum 1
   switchport port-security mac-address sticky
   switchport port-security violation restrict
另外解决方案:
sw2
config terminal
show mac-address-table          //查看r2和r5的mac地址
interface f0/2
   shut
   switchport mode access
   switchport port-security
   switchport port-security maximum 1
   switchport port-security mac-address r2的mac地址
   switchport port-security violation restrict
   no shut
interface f0/5
   shut
   switchport mode access
   switchport port-security
   switchport port-security maximum 1
   switchport port-security mac-address r2的mac地址
   switchport port-security violation restrict
   no shut
案例:
CCIE-LAB(V180)
题目要求:
The customer wants to connect guest Ipphones to Sw4 f0/11-15
l He wants to protecte interface from a user connecting a PC or a hub
l He wants the interface to learning first mac-address connected and become part of the configuration
l He does not want to have to manually bring backup the interface if the encounter a security viotation,but he do to ensure that the phones’s address is the only one allowed,and be able to check eth steales violation.
配置:
sw4
   config termi
   mls qos
   interface range f0/11 –15
switchport mode access
switchport voice vlan dot1p
switchport port-security
switchport port-security mac-address sticky
switchport port-security violation restrict
mls qos trust cos
第二. 基于主机MAC地址限制流量
   对于MAC过滤的特性,它能够根据主机MAC地址来限制流量,在使用该特性的情况下,交换机能够丢弃源自所配置MAC地址的流量。通过使用这种特性,网络管理源能够防止未授权主机向网络发送流量。
注意,交换机只允许对单播的源MAC地址流量进行过滤,而不允许对多播的源MAC地址流量进行过滤。他对采用多播源MAC地址发送数据报的规范是无效的。
   交换机允许在整个VLAN或单个接口上配置单播过滤。如果数据帧采用的源MAC地址没有被指定,那么交换机就可以正常地传递数据帧。对于基于cisco IOS软件的交换机,它只支持重启之后仍然存在的单播过滤。
配置过程:
1) 进入全局模式   configure terminal
2) 配置限制MAC地址流量
    mac-address-table static MAC地址 vlan vlan号 drop
3) 验证结果
    show mac-address-table static vlan 1
案例:
switch(config)#mac-address-table static 0000.0000.0008 vlan 1 drop
switch#show mac-address-table static vlan 1
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    000d.6564.0280    STATIC      CPU
   1    0100.0ccc.cccc    STATIC      CPU
   1    0100.0ccc.cccd    STATIC      CPU
   1    0100.0cdd.dddd    STATIC      CPU
   1    0000.0000.0008    STATIC      Drop
Total Mac Addresses for this criterion: 5
第三。阻塞端口的单播或多播扩散
默认情况下,如果数据包具有未知的目标MAC地址,那么交换机将把它扩散到与接收端口的VLAN相同的VLAN中所有端口。某些端口不需要扩散功能。例如,如果某个端口只有手工分配的MAC地址,并且没有连接所配置MAC地址之外的其它任何网络设备,那么它就不需要接收扩散数据包。此外,如果端口已经学到最大数目的MAC地址,那么对于通过配置安全MAC地址或端口启用端口安全的端口,它就不必接收未知的单播扩散。
通过使用单播或多播扩散阻塞的特性,将可以避免在不必要的端口上转发单播扩散流量。通过以每个端口为基础而限制流量大小,不仅可以增加网络的安全限制,并且还可以防止网络设备徒然地处理无定向的数据包。
配置过程:
1) 进入全局模式   configure terminal
2) 进入接口模式   interface 接口
3) 配置其端口阻塞单播
    switchport block unicast
4) 配置其端口阻塞多播流量
    switchport block multicast
5) 验证结果
    show interface 接口 switchport
案例:
Switch# configure terminal
Switch(config)# interface fa0/1
Switch(config-if)# switchport block multicast
Switch(config-if)# switchport block unicast
Switch(config-if)# end
Switch#show interface f0/1 switchport
案例:
CCIE-LAB(V160)
题目要求:
在SW2种fa0/10上阻塞所有未知的组播流量
配置:
SW2
   config termi
   interface f0/10
switchport block multicast
 

第三部分  生成树模式
部署VLAN使得一个重要决定是在交换机上使用哪种生成树模式。STP模式决定了STP将如何与VLAN交互。缺省的Cisco STP模式下,每个VLAN定义一个STP。IEEE802.1Q标准是在整个交换VLAN网络中使用一个STP,但不排除在每个VLAN中实现一个STP。
>> PVST、PVST+和单生成树模式
公共生成树(CST,Commone Spanning Tree)是在IEEE802.1Q标准中规定的。CST定义了一棵用于所有VLAN的生成树,BPDU在VLAN1上传递。
按VLAN的生成树(PVST,Per-VLAN Spanning tree)是Cisco专用的一种实现方式,需要使用ISL trunk封装。在PVST中,每个VLAN一棵STP,能为每个VLAN配置不同的根交换机,并配置第2层的负载均衡。
每个VLAN一棵生成数减少了每个STP重新计算时的恢复时间,并且在下述方面增强了网络的可靠性:
* 减少整个生成树拓扑的规模
* 提高扩展性,减少收敛时间
* 提供更快的恢复过程和更强的可靠性
每个VLAN一棵生成树的缺点包括:
* 为了维护多个VLAN的多颗生成树,交换机的利用率(如CPU负载)会更高
* 为了支持各个VLAN的BPDU,需要占用更多的Trunk链路带宽
为了携带更多的信息,PVST BPDU的格式和STP/RSTP BPDU 格式已经不一样,发送的目的地址也改成了Cisco保留地址01-00-0C-CC-CC-CD,而且在VLAN  Trunk的情况下PVST  BPDU被打上了 802.1Q  VLAN
标签。所以,PVST协议并不兼容STP/RSTP协议。
PVST+是一种Cisco专用的STP模式,支持在相同网络中同时存在CST和PVST。PVST+支持802.1Q trunk并且能将多棵生成树映射成非Cisco的802.1Q交换机上的一棵生成树。PVST+在交换剂802.1Q trunk上是自动启动的。在PVST+中,如果交换机通过802.1Q trunk相连,则每个VLAN一棵STP。还支持在其运行的VLAN上提供2层的负载均衡。在网络中,可以用VLAN来创建不同的逻辑拓扑结构,以保证所有的的链路都被使用,而不会出现一条链路过载的情况。
每个生成树都有唯一的根交换机。根交换机负责向网络中其他的交换机传播与此VLAN相关的生成树信息。因为每个交换机对网络的理解是相同的,所以这个过程维护了网络拓扑
PVST+体系结构区分了3种类型的区域:
* PVST区域
* PVST+区域
* 单生成树(MST,Mono Spanning tree)区域
单生成树是非Cisco的802.1Q交换机使用的生成树实现方法,一个STP负责所有VLAN的通信。
每个区域(Zone或region)都有同种类型的交换机组成。PVST区域和PVST+的连接可以通过连通两个ISL接口实现。类似地,PVST+区域和MST区域的连接可以通过连通两个802.1Q端口实现。注意,MST和PVST区域不能通过trunk链路连接。
 
在PVST区域和PVST+区域的分界处,生成树的映射是一对一的。在MST区域和PVST+区域的分界处,MST区域的生成树映射到PVST+区域的一个PVST上。这个PVST就是CST,缺省的CST是VLAN1。
所有的PVST,除了CST都是通过隧道穿越MST区域的。隧道(Tunneling)意味着BPDU沿着MST区域内当别的单棵生成树,在整个MST区域内泛洪。
>> MISTP模式
MISTP 模式是在一些 Catalyst 交换机上 Cisco 私有的一种MST实现,能在一棵生成树实例下将VLAN进行分组。MISTP综合了PVST+支持2层负载均衡的优点和IEEE 802.1Q低CPU负载的特点。
MISTP是一种可选的运行在交换机4000和交换机6000系列上的STP模式。多实例生成树协议是通过一组网桥参数和端口参数定义的虚拟的逻辑拓扑结构。简单的说,STP/RSTP 是基于端口的,PVST/PVST+是基于 VLAN 的,而 MISTP 就是基于实例的。所谓实例就是多个VLAN的一个集合,通过多个VLAN捆绑到一个实例中去的方法可以节省通信开销和资源占用率。如果将VLAN映射到MISTP上,这个MISTP实例就变成了真正的拓扑结构。每个MISTP实例都有自己的根交换机和各自的转发状态链路组(也就是说,不同的网桥参数和端口参数)。根交换机负责向网络中所有其他交换机传播与此MISTP实例相关的信息。
在使用的时候可以把多个相同拓扑结构的VLAN 映射到一个实例里,这些VLAN在端口上转发状态将取决于对应实例在MISTP里的状态。值得注意的是网络里的所有交换机的VLAN和实例映射关系必须都一致,否则会影响网络连通性。为了检测这种错误,MISTP BPDU里除了携带实例号以外,还要携带实例对应的VLAN关系等信息。MISTP协议不处理 STP/RSTP/PVST BPDU,所以不能兼容STP/RSTP协议,甚至不能向下兼容PVST/PVST+协议,在一起组网的时候会出现环路。为了让网络能够平滑地从PVST+模式迁移到MISTP模式,Cisco在交换机产品里又做了一个可以处理PVST BPDU 的混合模式MISTP-PVST+。网络升级的时候需要先把设备都设置成MISTP-PVST+模式,然后再全部设置成MISTP模式。
MISTP 带来的好处是显而易见的。它既有 PVST 的 VLAN 认知能力和负载均衡能力,又拥有可以和SST媲美的低CPU占用率。不过,极差的向下兼容性和协议的私有性阻挡了MISTP的大范围应用。
>> MST多生成树模式(Multiple Spanning Tree)
多生成树协议MSTP(Multiple Spanning Tree Protocol)是IEEE 802.1s中定义的一种新型多实例化生成树协议。这个协议目前仍然在不断优化过程中,现在只有草案(Draft)版本可以 Cisco 已经在CatOS 7.1 版本 MSTP的支持,华为公司的三层交换机产品Quidway系列交换机也即将推出支持MSTP协议的新版本MSTP 协议精妙的地方在于把支持 MSTP 的交换机和不支持 MSTP 交换机划分成不同的区域,分别
称作 MST 域和 SST 域。在 MST 域内部运行多实例化的生成树,在 MST 域的边缘运行 RSTP 兼容的内部生成树MST(Internal Spanning Tree)。
MST域内的交换机间使用MSTP BPDU交换拓扑信息, SST 域内的交换机使用 STP/RSTP/PVST+  BPDU 交换拓扑信息。在MST域与SST域之间的边缘上,SST设备会认为对接的设备也是一台RSTP设备。而MST设备在边缘端口上的状态将取决于内部生成树的状态,也就是说端口上所有 VLAN的生成树状态将保持一致。
 
MSTP 设备内部需要维护的生成树包括若干个内部生成树 IST,个数和连接了多少个 SST 域有关。
另外,还有若干个多生成树实例MSTI(Multiple Spanning Tree Instance)确定的MSTP生成树,个数由配置了多少个实例决定。
    MSTP相对于之前的种种生成树协议而言,优势非常明显。MSTP具有 VLAN 认知能力,可以实现负载均衡,可以实现类似 RSTP 的端口状态快速切换,可以捆绑多个 VLAN 到一个实例中以降低资源占用率。最难能可贵的是MSTP可以很好地向下兼容STP/RSTP协议。而且,MSTP是IEEE标准协议,推广的阻力相对小得多。 MISTP就是Cisco对MST的私有实现:
 
快速生成树RSTP(Rapid Spanning Tree)
 
生成树协议IEEE 802.1d虽可在50秒内恢复连接,但已不能满足现代交换式网络和应用的需要,在 802.1w中定义的RSTP协议可解决802.1d的自恢复问题。快速生成树协议(RSTP)是从生成树算法的基础上发展而来的,通过配置消息来传递生成树信息,并通过优先级比较来进行计算。快速生成树能够完成生成树的所有功能,优异之处在于快速生成树减小了端口从阻塞到转发的延时,快速恢复网络的正常工作状态。它采用桥-桥握手机制,并不采用802.1d中根桥所指定的计时器。
快速生成树协议与生成树协议的区别不少:如端口状态迁移方式不同;配置消息的格式不同;拓朴改变消息的传播方式不同。
RSTP和802.1D状态对比
 
     802.1D的禁用、阻塞和监听状态在802.1W中合并为一种丢弃状态,如上表
     能够快速进入到转发状态是802.1W引入的最重要特性。传统的生成树算法在将一个端口转入到转发状态是在被动地等待网络拓扑收敛。为达到快速收敛要做的就是调整那些保守的默认参数(转发延迟和最大生存时间),这经常以网络稳定性为赌注的。RSTP可以主动地区确认一个端口是否可以安全进入转发状态而不依赖于任何定时器配置。RSTP在两个遵守RSTP的网桥之间提供一种实时的反馈机制。为让一个端口快速收敛,协议依赖两个新的参数---边缘端口和链路类型。
     RSTP的边缘端口(edge port)基本上相当于PortFast特性,不同的是边缘端口收到了一个BPDU后,立即离开边缘端口状态成为一个正常的生成树端口。此刻,边缘端口状态有一个用户配置值和一个运行值。
    RSTP链路类型(点对点或共享),只有在边缘端口上和点对点链路上能快速进入转发状态。链路类型是自动来源于端口的双工模式。一个运行于全双工模式的端口被假设为点对点的,然而一个半双工端口就被默认为共享端口。这种自动链路类型设置可以免去详细的配置。
RSTP端口角色
除了对根端口和802.1d中的指定端口进行了定义之外,但阻塞端口角色现在被分为备份和替代端口角社。备份端口,指定端口向生成树提供的路径备份。替代端口,为当前根端口所提供的根桥提供了替代路径。RSTP中新定义的端口作用使替代端口可以进行快速转换,能转发根端口的故障。
     与标准的STP中一样,网桥上收到最佳BPDU的端口成为根端口。这是按照路径开销最接近根网桥的端口,如上图。
    如果一个端口能发送最佳BPDU到其所连接的网段上,该端口被认为是一个指定端口。和802.1D一样,网桥通过连接不同的网段创建一个桥接域。一个给定网段只能有一个路径到根交换机。多条路径将在网络中产生一个环。
   替代端口和备份端口角色相当于802.1D的阻塞状态。没有成为指定端口或者根端口的端口被定义为阻塞端口。阻塞端口收到比从这个网桥上发送出去更有用的BPDU。记住一个端口一定需要接收BPDU才能停留在阻塞状态。替代端口指该端口是因为从其他网桥收到了更有用的BPDU才处于阻塞状态。
    备份端口是因为从同一网桥收到更有用的BPDU而处于阻塞状态的端口(如上图)。
RSTP定时器
RSTP 旨在尽快地将根端口和指定端口转成转发状态,以及将替代和备份端口转成阻塞状态。为防止生成转发环路, RSTP 在网桥间采用了明确的“握手”功能,以确保端口作用在网络中分配的一致性。
下图介绍了将端口转换成转发前达成的协定 / 建议握手。当链接激活时,“P1”和“P2”都成为处于放弃状态的指定端口。
 
在这种情况下,“ P1 ”将向交换机 A 发送一个建议 BPDU 。收到新 BPDU 后,交换机 A 将确认根交换机有较优根成本。因为 BPDU 包含较高的根优先级,交换机 A 在将新的根端口“ P2 ”转入转发状态前,会先启动同步机制。如果一个端口处于阻塞状态或是一个边缘端口(位于网桥 LAN 边缘或连接到终端工作站),该端口与根信息同步。
端口 3 (“ P3 ”)已满足上述要求,因为它已经是阻塞的。因此,不会对该端口采取任何行动。但是,“ P4 ”是一种指定端口,需要阻塞。一旦交换机 A 上的所有接口处于同步状态,“ P2 ”就会承认从前从根接收的建议,并可以安全地转入转发状态。在收到交换机 A 的认可后,根交换机将立即将“ P1 ”转入转发。建议 / 协定信息的类似传送波将从“ P4 ”传播至网络枝叶部分。
由于这种握手机制不依赖计时器,因此它可以快速地传播至网络边缘,并在拓扑结构变更后迅速恢复连接。如果协定并未复制建议信息,端口会转换成 802.1D 模式,并通过传统听学顺序转入转发状态。需要说明的是, 802.1w 协议只适用于点到点链接。在媒体共享的情况下, 802.1w 协议将转换成 802.1D 运行。
UplinkFast RSTP
Uplinkfast是IEEE对cisco私有的Uplinkfast机制的扩展,他不需要像cisco那样清空CAM表的所有条目,而只需要清空上游交换机中的CAM表部分条目即可,此时也不需要UplinkFast的伪多播分组生成过程。
边缘端口
边缘端口类似于以前Cisco实现的PortFast功能。新的根端口从阻塞到转发的实现:原有根端口已经知道自己不再是根端口了,进入阻塞状态。新的根端口连接的网段的指定端口处于转发状态,这个新的根端口就可以无延时地进入转发状态。非边缘指定端口从阻塞到转发:此个端口连接着其他网桥。等待进入转发状态的指定端口向下游网桥发送一个握手请求报文,若下游的网桥响应了,则这个指定端口就可以无延时地进入转发状态。 边缘端口从阻塞到转发:边缘端口直接和终端设备相连,不再连接任何网桥的端口。网桥启动后这些端口即无延时地快速进入转发状态。
RSTP拓扑变化
RSTP拓扑变化仅在边缘端口进入转发状态才会导致。当RSTP网桥检测到拓扑变化,会发生下列事件:
l 如果必要,RSTP网桥可以对其所有的非边缘指定端口和根端口上启动一个TC当型定时器(TC while timer),其时间是2倍的Hello-time
l RSTP网桥刷新所有与这些端口相关的MAC。
l 只要在端口上运行TC while定时器期间,该端口发送TC位被置位的BPDU,该定时器激活期间根端口也发送BPDU
RSTP的拓扑变化扩散处理与STP不同,当一个网桥从邻居受到一个TC位置位的BPDU的时候,发生下列事件:
l 网桥清除从其他所有端口上学习到的MAC地址(收到拓扑变化的端口除外)
l 网桥在所有指定端口和根端口上启动TC While定时器并发送TC位置位的BPDU(RSTP不再使用老式的TCN BPDU,除非有老式网桥需要被通告)
 
RSTP BPDU格式
RSTP在BPDU格式中引入了一些新变化。
 
位 含义
---------------------------------
0 拓扑变化Topology Change
1 建议
2-3 端口角色:  00:未知端口  01:替代端口  10:根端口  11:指定端口
4 学习
5 转发
6 协商
7 拓扑变化确认ACK
802.1w中网桥每隔hello时间(默认为2秒)发送一个携带当前信息的BPSU,即使他没有从根网桥收到任何BPDU。在一个指定端口上,如果在3个连续周期内没有收到hello(或者最大生存时间超时),协议信息立即超时。因为前面提到的协议修改,BPDU现在在网桥之间用来作为保持活动(keepalive)机制。一个网桥如果已经连续错过了3个BPDU,就认为自己已经丢失了到直连邻接根或指定网桥的连接。这种信息的快速老化使得错误可以被快速检测。如果一个网桥从邻居接收BPDU失败,他就能确定到邻居的连接丢失,这和802.1d相反,802.1d在根的路径中的任何一个地方都会出现问题。
     当一个网桥从它的指定或者根交换机上收到次级信息,就会立即接受它,并替代先前存储的。
 
配置MST
启用RSTP和MSTP
4) 进入全局模式  configure terminal
5) 进入mst配置模式
   spanning-tree mst configuration
3) 映射vlan到mst实例
   instance 实例号 vlan vlan范围
   实例号:取值为0-4094
4) 配置名称
   name 名称
5) 配置mst版本号
   revision 版本号
版本号:取值为0-65535
6) 显示pending状态
   show pending
案例:
switch(config)#spanning-tree mode mst
switch(config)#spanning-tree mst configuration
switch(config-mst)#instance 1 vlan 20 -30
switch(config-mst)#name test1
Switch(config-mst)#show current
Current MST configuration
Name      [test1]
Revision  0
Instance  Vlans mapped
--------  -----------------------------------------------------------------
0         1-19,31-4094
1         20-30
----------------------------------------------------------------------------
Switch(config-mst)#show pending
Pending MST configuration
Name      [test1]
Revision  0
Instance  Vlans mapped
--------  -----------------------------------------------------------------
0         1-19,31-4094
1         20-30
----------------------------------------------------------------------------
switch#show spanning-tree mst
###### MST00        vlans mapped:   1-19,31-4094
Bridge      address 000d.6564.0280  priority  32768 (32768 sysid 0)
Root        this switch for CST and IST
Configured  hello time 2, forward delay 15, max age 20, max hops 20
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/2            Desg FWD 2000000   128.2    Edge Shr
Fa0/3            Desg FWD 2000000   128.3    Shr
Fa0/4            Desg FWD 2000000   128.4    Shr
Fa0/18           Desg FWD 200000    128.18   P2p
Fa0/21           Desg FWD 200000    128.21   P2p
Fa0/23           Desg FWD 200000    128.23   P2p Bound(PVST)
Fa0/24           Desg FWD 200000    128.24   P2p Bound(PVST)
###### MST01        vlans mapped:   20-30
Bridge      address 000d.6564.0280  priority  32769 (32768 sysid 1)
Root        this switch for MST01
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Boun FWD 200000    128.23   P2p Bound(PVST)
Fa0/24           Boun FWD 200000    128.24   P2p Bound(PVST)
配置MST的根交换机
配置过程:
1) 进入全局模式  configure terminal
2) 配置MST根交换机
    spanning-tree mst 实例号 root primary
案例:
switch(config)#spanning-tree mst 1 root primary
Switch#show span mst 1
###### MST01        vlans mapped:   20-30
Bridge      address 000d.6564.0280  priority  24577 (24576 sysid 1)
Root        this switch for MST01
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Boun FWD 200000    128.23   P2p Bound(PVST)
Fa0/24           Boun FWD 200000    128.24   P2p Bound(PVST)
交换机优先级
配置过程:
1) 进入全局模式  configure terminal
2) 修改交换机的优先级
   spanning-tree mst 1 priority 优先级
   优先级:取值为0-61440,优先级为4096的倍数
案例:
Switch(config)#spanning-tree mst 1 priority 36864
Switch#show spanning-tree mst 1
###### MST01        vlans mapped:   20-30
Bridge      address 000d.6564.0280  priority  36865 (36864 sysid 1)
Root        this switch for MST01
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Boun FWD 200000    128.23   P2p Bound(PVST)
Fa0/24           Boun FWD 200000    128.24   P2p Bound(PVST)
配置MST的开销
1) 进入全局模式  configure terminal
2) 进入接口模式  interface 接口
3) 配置端口的MST开销
    spanning-tree mst 实例号 cost 成本
案例:
sw2(config)#show span mst 1
###### MST01        vlans mapped:   20-30
Bridge      address 000b.5f2c.2080  priority  32769 (32768 sysid 1)
Root        this switch for MST01
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Desg FWD 200000    128.23   P2p
Fa0/24           Desg FWD 200000    128.24   P2p
Sw2(config)#interface f0/23
sw2(config-if)#span mst 1 cost 20000
sw2(config-if)#do show span mst 1
###### MST01        vlans mapped:   20-30
Bridge      address 000b.5f2c.2080  priority  32769 (32768 sysid 1)
Root        this switch for MST01
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Desg FWD 200000    128.23   P2p
Fa0/24           Desg FWD 20000     128.24   P2p
端口优先级
配置过程:
1) 进入全局模式  configure terminal
2) 进入接口模式  interface 接口
3) 配置端口的优先级
    spanning-tree mst 实例号 port-priority 优先级
   优先级默认为128
案例:
sw2(config)#interface f0/24
sw2(config-if)#spann mst 1 port-priority 64
sw2(config-if)#end
sw2#show spanning mst 1
###### MST01        vlans mapped:   20-30
Bridge      address 000b.5f2c.2080  priority  32769 (32768 sysid 1)
Root        this switch for MST01
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Desg FWD 200000    128.23   P2p
Fa0/24           Desg FWD 20000      64.24   P2p
修改时间器
sw2(config)#spann mst hello-time ?
  <1-10>  number of seconds between generation of config BPDUs
sw2(config)#span mst forward-time ?
  <4-30>  number of seconds for the forward delay timer
sw2(config)#span mst max-age ?
  <6-40>  maximum number of seconds the information in a BPDU is valid
sw2#show span mst
###### MST00        vlans mapped:   1-19,31-4094
Bridge      address 000b.5f2c.2080  priority  32768 (32768 sysid 0)
Root        this switch for CST and IST
Configured  hello time 1, forward delay 15, max age 20, max hops 20
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23           Desg FWD 200000    128.23   P2p
Fa0/24           Desg FWD 200000    128.24   P2p
案例:
CCIE-LAB(V160)
题目要求:
在SW1、SW2、SW3上配置MST,要求偶数VLAN加入实例1,奇数VLAN加入实例2
配置:
SW1
   config terminal
   spanning-tree mode mst
   spanning-tree mst configuration
      instance 1 vlan 20,40,60
      instance 2 vlan 30,50,70
      name cisco
      revision 1
sw2
   config terminal
   spanning-tree mode mst
   spanning-tree mst configuration
     instance 1 vlan 20,40,60
     instance 2 vlan 30,50,70
     name cisco
     revision 1
SW3
   config terminal
   spanning-tree mode mst
   spanning-tree mst configuration
      instance 1 vlan 20,40,60
     instance 2 vlan 30,50,70
     name cisco
     revision 1
案例:
CCIE-LAB(V210)
题目要求:
配置sw1上的生成树MST,要求将除了vlan_BBX的vlan定义在实例1,vlan_BBx定义在实例2,并将实例2作为根。
Vlan 30  name vlan30
Vlan 31  name vlan31
Vlan 33  name vlan33
Vlan 44  name vlan44
Vlan 50  name vlan50
Vlan 60  name vlan60
Vlan 100 name vlan_BB1
Vlan 200 name vlan_BB2
Vlan 300 name vlan_BB3
配置:
sw1
   configure terminal
   spanning-tree mode mst
   spanning-tree mst configuration
instance 1 vlan 30,31,33,44,50,60
instance 2 vlan 100,200,300
name cisco
revision 1
   spanning mst 2 root primary
 

第三部分  访问控制
1.RACL
针对路由接口的控制通信流量的安全策略。交换机在硬件中支持包含允许和拒绝操作的RACL。RACL的配置方式与常规的ACL相同。
在交换机中,用户可以在任何路由接口中应用RACL,其中包括如下接口:
*SVI(交换虚拟接口vlan端口)
*第3层端口或路由端口
*第3层端口通道
*其它第3层接口
2.VACL
VACL又称为VLAN访问映射表,应用于VLAN中的所有通信流。VACL支持基于ethertype和MAC地址的过滤,也支持Ipv4的IP地址过滤。与基于cisco IOS的路由映射表一样,vacl中条目的顺序并非无关紧要。VACL不定义方向(进或出)。一个VACL可以用于多个VLAN中;但一个VLAN只能与一个VACL关联。
支持多种VACL操作:
* 转发(允许):这种VACL操作像通常那样转发帧。如果希望配置交换机端口分析器(SPAN)选项,必须采用带capture选项的转发操作;SPAN是一项用于将数据帧复制到监控端口的排错特性。这种VACL对于配置多个SPAN端口并连接网络监控设备(如第三方IDS设备)很有用。
* 丢弃(拒绝):流与某个ACL丢弃(拒绝)条目匹配后,将它同下一个ACL条目进行比较。如果流不予任何ACL条目匹配,且至少配置了一个针对数据包类型的ACL,则流中的数据包将被丢弃
* 重定向:VACL重定向操作对于出于监控、安全或交换的目的而重定向特定通信流很有用。
 
配置方法:
1) 定义访问控制列表(标准、扩展、命名)
a.标准访问控制列表
access-list 列表编号 deny|permit 源地址 反掩码 [log]
* 列表编号:1-99
* deny:拒绝
* permit:允许
* 源地址:控制访问的源头
* 反掩码:any 是指任意主机,host是指某台主机
* log:记录到日志文件
案例:
Switch (config)# access-list 2 deny host 171.69.198.102
Switch (config)# access-list 2 permit any
Switch(config)# end
Switch# show access-lists
Standard IP access list 2
    10 deny   171.69.198.102
    20 permit any
 
b.扩展访问控制列表
access-list 列表编号 deny|permit 协议 源地址 反掩码 [源端口] 目标地址 反掩码 [目标端口] [表达式]
* 列表编号:100-199
* 协议:IP、TCP、UDP、ICMP等,协议选项是区别标准访问列表的特征之一
* 表达式:eq 协议或端口号:等于协议或端口号
                gq 协议或端口号:小于指定的协议或端口号
                lq 协议或端口号:大于指定的协议或端口号
案例:
Switch(config)# access-list 102 deny tcp 171.69.198.0 0.0.0.255 172.20.52.0 0.0.0.255 eq telnet
Switch(config)# access-list 102 permit tcp any any
Switch(config)# end
Switch# show access-lists
Extended IP access list 102
    10 deny tcp 171.69.198.0 0.0.0.255 172.20.52.0 0.0.0.255 eq telnet
    20 permit tcp any any
c.命名访问控制列表
命名的列表允许使用超过99个标准控制列表和100个扩展控制列表。优于编号的控制列表的特点是可以删除特定的一条语句,而编号访问控制列表只能删除整个访问控制。
    Ip access-list [standard|extended] 名称
    Permit|deny 标准和扩展有所不同
案例:
Switch(config)# ip access-list extended border-list
Switch(config-ext-nacl)# no permit ip host 10.1.1.3 any
2) 定义VACL映射表
    vlan access-map 名称
a)  匹配指定的IP访问控制列表    match ip address 访问列表号
         匹配指定的mac访问控制列表   match mac address 访问控制列表
b) 指定对符合条件的流量进行何动作    action drop|forward
案例:
switch(config)#vlan access-map test
switch(config-access-map)#match ip address 101
switch(config-access-map)#action forward
3) 将VACL映射表应用到某个VLAN
    vlan filter 映射表名称 vlan-list vlan列表
案例:
    vlan filter test vlan-list 10
4) 验证结果
    show vlan access-map 名称
 
Switch#show vlan access-map
Vlan access-map "test"  10
  Match clauses:
    ip  address: 100
  Action:
    drop
Vlan access-map "test"  20
  Match clauses:
  Action:
    forward
---------------------------------------------------
show vlan filter access-map 名称 | vlan vlan号
Switch#show vlan filter
VLAN Map test is filtering VLANs:
  11-13
案例:
主机X和主机Y位于不同的VLAN,交换机B已经对这两个VLAN做了vlan间的路由
Switch(config)# ip access-list extended http
Switch(config-ext-nacl)# permit tcp host 10.1.1.32 host 10.1.1.34 eq www
Switch(config-ext-nacl)# exit
Switch(config)# vlan access-map map2 10
Switch(config-access-map)# match ip address http
Switch(config-access-map)# action drop
Switch(config-access-map)# exit
Switch(config)# ip access-list extended match_all
Switch(config-ext-nacl)# permit ip any any
Switch(config-ext-nacl)# exit
Switch(config)# vlan access-map map2 20
Switch(config-access-map)# match ip address match_all
Switch(config-access-map)# action forward
Switch(config)# vlan filter map2 vlan 1
要注意vlan间的acl和vacl之间的区别
 
3.PACL
通过控制端口级别的流量,PACL(Port ACL)端口ACL能够提供另外一种控制机制。PACL可应用于第2层交换机端口、干道端口或EtherChannel端口。
在使用PACL的时候,能够在第2层接口上应用如下的ACL:
* 标准访控(针对源IP地址)
* 扩展访控(针对源IP地址和目标IP地址以及用于第4层协议类型信息)
* MAC扩展访控(针对源和目标MAC地址,还可以使用第3层协议类型信息)
当PACL应用于trunk端口上时,ACL将过滤trunk端口上所有的vlan的流量。当PACL应用到语音vlan端口的时候,ACL将过滤数据和语音VLAN的流量。
对于PACL,通过采用IP访问控制列表,将能够过滤IP流量,通过采用MAC访问控制列表,将能够过滤非IP流量。此外,通过在接口上应用IP访问控制列表和MAC访问列表,将能够过滤相同的第2层接口上IP流量和非IP流量。
配置MAC扩展访控:
1)进入全局模式   configure terminal
2)定义mac扩展访控名称
    mac access-list extended 名称
3) 定义相应访问控制列表语句
    deny|permit [any | host 源MAC | 源MAC 源MAC掩码] [any | host 目标MAC | 目标MAC 目标MAC掩码 ] [ aarp | amber | dec-spanning | decnet-iv | diagnostic | dsm | etype-6000 | etype-8042 | lat | lavc-sca | mop-console | mop-dump | msdos | mumps | netbios | vines-echo |vines-ip | xns-idp | 0-65535] [cos cos]
4) 应用访问控制列表到第2层接口
    进入接口模式     interface 接口
    应用访控         mac access-group 访控名称 in
                 对于端口ACL而言,只有进入的方向可以加访控
5) 验证结果
    show  access-lists [列表号|名称]
    show access-group [interface 接口]
 
案例:
switch#configure terminal
switch(config)#mac access-list extended cisco
switch(config-ext-macl)#permit host 0011.abcd.abcd host 0011.1111.1111
switch(config-ext-macl)#exit
switch(config)#access-list 101 deny ip 10.10.1.0 0.0.0.255 host 10.10.2.2
switch(config)#access-list 101 permit ip any any
switch(config)#interface f0/23
switch(config-if)#switchport mode trunk
switch(config-if)#ip access-group 101 in
switch(config-if)#mac access-group cisco in
switch(config-if)#end
switch#show access-lists
switch#show access-group interface f0/23
案例:
CCIE-LAB(v133)
题目要求:
Assume that connected to port f0/15 on SW1 is a host sending Ethernet Type 6000 frames into the network configures an access-list to block only this traffic allowing other frames to enter into the network.Please use “Block_eth6000” as the name of access-list.
配置:
SW1
configure terminal
mac access-list extended Block_eth6000
   deny any any etype-6000
  permit any any
interface f0/15
  switchport mode access
  mac access-group Block_eth6000 in
第四部分 DHCP监听
      在某些情况下,***者可以将一个DHCP 服务器加入网络,令其“冒充”这个网段的DHCP 服务器。这让***者可以为缺省的网关和域名服务器(DNS 和WINS)提供错误的DHCP 信息,从而将客户端指向***的主机。这种误导让***可以成为“中间人”,获得对保密信息的访问权限,例如用户名和密码,而最终用户对***一无所知。为了防止出现这种情况,您可以使用DHCP 监听。DHCP监听是一种dhcp安全特性,他能够过滤来自网络中主机或其他设备的非信任dhcp报文。通过建立并维护dhcp监听绑定表,dhcp能够实现上述级别的安全。
      非信任DHCP消息是交换机从外部的网络、防火墙或其他非授权dhcp服务器接收到的dhcp消息,在启用dhcp监听的环境中,当从信任的区域中之外的设备传来的信息都是非信任的消息,这些非信任的消息可能是******。
      DHCP监听建立DHCP绑定表,用来过滤不可信任区域的DHCP信息,其中包括对应交换机上不信任的端口的客户端IP地址、MAC地址、端口号、VLAN编号、租用和绑定类型等消息。交换机支持在每个vlan基础上启用DHCP监听特性。通过这种特性,交换机拦截第2层VLAN域内的所有DHCP报文。
       通过这种特性,交换机能够限制用户端口(非信任端口)只能够发送dhcp请求,并且将丢弃来自用户端口的所有其它DHCP报文,例如DHCP提供(OFFER)响应报文等。DHCP监听信任端口是连接到已知合法DHCP服务器或与分布层交换机(能够提供到达DHCP服务器的路径)之间的上行链路端口。信任端口能够发送或接收所有的DHCP报文。这种情况下,交换机只允许受信任的dhcp服务器能够通过DHCP响应来分发DHCP地址。
当交换机从启用了dhcp监听的vlan中一个不信任端口接收到一个报文,交换机会比较源mac地址和dhcp客户机的硬件地址,如果匹配这个数据报文被转发,如果不匹配这个数据报将被丢弃。
交换机根据以下情况会丢弃报文:
* 当收到外网的dhcp服务器发来的DHCPOFFER, DHCPACK, DHCPNAK, DHCPLEASEQUERY报文
* 接收到非信任端口报文,源MAC和DHCP客户端硬件地址不匹配
* 接收到DHCPRELEASE或DHCPDECLINE广播信息中有dhcp绑定表中某个mac地址,但接口信息和收到的信息中的接口信息不匹配。
     如果一台支持DHCP监听的汇聚层交换机和一台插入了选项82信息的边界交换机相连,这台交换机会丢弃从非信任的端口收到的插入了选项82的报文信息,如果信任端口收到插入选项82的信息报,汇聚交换机不会为信任端口链接的设备建立DHCP监听绑定表条目。
      拥有ios12.25或更早版本的边界交换机如果插入了选项82,和它相连的汇聚交换机因为汇聚交换机的dhcp监听绑定表不完整不能使能dhcp监听功能,汇聚交换机也不能使用IP源保护和动态arp,除非你手工指定绑定表和arp的访问控制。
      在IOS 12.2(25)SE版本之后,汇聚交换机和边界交换机通过一个非信任端口相连时,通过全局模式下命令ip dhcp snooping information allow-untrusted的配置,汇聚交换机会接收从边界交换机发来的插入选项82的信息报,汇聚交换机也会学习和绑定从不信任端口相连的设备信息。
选项82
      当DHCP Relay Agent将客户端的DHCP包转发到DHCP服务器时,可以插入一些选项信息,以便DHCP服务器能更精确的得知PC客户端的信息,从而能更灵活按相应策略分配IP地址和IP地址需要的租约时间。该选项信息的选项号为82,故又称为Option 82,相关标准文档为RFC 3046。Option 82是对DHCP选项的扩展应用,这个新的选项被称为:DHCP relay agent information option(中继代理信息选项),当向一个DHCP中继代理传输客户端发起的DHCP请求时被中继代理嵌入到客户端的DHCP报文中,当服务器识别到中继代理信息选项后就会根据选项中的信息执行IP地址的分配和策略的实施。
     在一些大型的网络环境中,DHCP服务可以集中管理IP地址指派给大批用户,当交换机的选项82使能后,用户设备可以通过身份鉴定由交换机访问网络(除其mac地址),局域网中多个用户主机通过具有独特的身份鉴定(选项82)由交换机的同一端口访问网络。
 
如上图,因为DHCP服务器和DHCP客户端不在同一网络或子网中,交换机配置DHCP的中继代理,通过ip help-address命令使能在dhcp服务器和客户端之间广播转发和传送dhcp消息。
1. 主机(DHCP客户端)发出DHCP请求消息,并广播到网络中
2. 交换机收到这条DHCP REQUEST消息,将选项82插入这个消息报中,默认情况下,RemoteID子选项是交换机的mac地址,CircuitID子选项是接收到消息的端口标示符,这些参数是可以配置的。
3. 如果中继代理的IP地址有配置,交换机会添加这个IP地址到DHCP包中
4. 交换机转发带有选项82的DHCP REQUEST报到DHCP服务器
5. DHCP服务器收到这个信息后,如果DHCP服务器启用了选项82,服务器使用RemoteID、CircuitID或者两个子选项来分配IP地址和应用相应的策略。DHCP服务器标识选项82到DHCP回应消息。
6. DHCP服务器单播DHCP REPLY到交换机(DHCP中继代理),交换机将选项字段剥去后发送给客户端。
         “中继信息”选项被定义为一个包含一个或多个“子选项”的单独的DHCP选项,并传送可被中继代理识别的信息。Option 82选项如同一个“容器”选项,为中继代理分配的特定的子选项在DHCP报文中提供了数据空间。
CircuitID子选项(SUBOPTION)帧格式
       子选项类型(1字节)
       长度(1字节)
      电路ID类型
     长度(电路ID)
 
    其中电路ID子选项中的端口字段,端口号是从3开始的,比如对于一个24口10/100M的交换机,fa0/1端口在子选项中端口字段表示为3,fa0/2端口表示为4……
RemoteID子选项帧格式
     当交换机使能DHCP SNOOPING和ip dhcp snooping information option命令后,circuitID子选项和remoteID子选项采用以上的帧格式(默认格式)
    当我们全局模式下使能dhcp 监听,用户全局模式使用命令ip dhcp snooping information option format remote-id和接口模式下使用ip dhcp snooping vlan information option format-type circuit-id string命令配置了remoteID和circuiteID子选项后,circuiteID和remoteID子选项的帧格式有所变化:
circuitID子选项帧格式:
*circute类型为1
*长度是可变的,根据用户配置的字符串扩展
 
remoteID子选项帧格式
* remote类型为1
*长度是可变的,根据用户配置的字符串扩展
 
配置DHCP 监听
默认配置:
特性                 默认配置
------------------------------------------
DHCP SERVER                   启用,但需要配置
DHCP中继代理                   启用
DHCP包转发地址              没有配置
核实中继代理信息             启用
DHCP中继代理转发策略    代替现行的DHCP中继代理信息
DHCP监听                           未启用
选项82                                 启用
不信任端口是否接收DHCP监听选项      未启用
限速                 未配置
信任状态        不信任状态
VLAN的DHCP监听         未启用
DHCP监听MAC地址验证 启用
DHCP绑定表         启用
DHCP监听绑定表         启用,但需要配置
 
 
配置DHCP snooping
1) 进入全局模式   configure terminal
2) 启用dhcp监听
   ip dhcp snooping
3) 在vlan上启用dhcp 监听,如果在vlan上不启用,dhcp监听是不激活的
   ip dhcp snooping vlan vlan范围
4) 是否插入选项82
   ip dhcp snooping information option
5) 配置remoteID子选项(可选)
   ip dhcp snooping information option format remote-id [string 字符串|主机名]
6) 配置汇聚交换机接收从边界交换机发来的带有选项82的数据包(可选)
   ip dhcp snooping information option allow-untrusted
7) 进入接口模式   interface 接口
8) 指定为信任端口(可选)
   ip dhcp snooping trust
9) 配置circuiteID子选项(可选)
   ip dhcp snooping vlan vlan号information option format-type circuit-id string 字符串
10) 设置限速
   ip dhcp snooping limit rate 速率
   速率:指定每秒传输包数,取值为1-2048
11) 验证结果
   show ip dhcp snooping    //查看dhcp监听状态
   show ip dhcp snooping binding    //查看dhcp监听绑定表
 
 
案例:
switch#config terminal
switch(config)#ip dhcp snooping
switch(config)#ip dhcp snooping vlan 10
switch(config)#interface f0/1
switch(config-if)#ip dhcp snooping trust
switch(config-if)#switch access vlan 10
switch(config-if)#interface f0/2
switch(config-if)#switch access vlan 10
switch(config-if)#interface f0/3
switch(config-if)#switch access vlan 10
---------------------------------------------------
配置与交换机f0/1相连的路由器r1为dhcp服务器
r1(config)#interface f0/1
r1(config-if)#ip address 192.168.1.1 255.255.255.0
r1(config)#ip dhcp execlude 192.168.1.1
r1(config)#ip dhcp pool cisco
r1(dhcp-config)#network 192.168.1.2 255.255.255.0
r1(dhcp-config)#default-route 192.168.1.1
---------------------------------------------------
配置与交换机f0/2相连的路由器r2模拟为主机,从dhcp服务器获得ip
r2(config)#no ip routing
r2(config)#int f0/0
r2(config-if)#ip address dhcp
------------------------------------------------------
配置与交换机f0/3相连的路由器r3模拟为主机,ip地址配置为dhcp服务器地址,作为***者
---------------------------------------------------------
验证:
Switch#show ip dhcp snoopi bind
MacAddress          IpAddress      Lease(sec)  Type          VLAN  Interface
------------        -----------   ----------  ---------  ------- ------------
00:10:7B:3C:01:DA 192.168.1.2      85781    dhcp-snooping  10    FastEthernet0/4
Total number of bindings: 2
----------------------------------------------------------------------------
Switch#show ip dhcp snoopi
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
10
Insertion of option 82 is disabled
Option 82 on untrusted port is not allowed
Verification of hwaddr field is enabled
Interface                    Trusted     Rate limit (pps)
------------------------     -------     ----------------
FastEthernet0/1              yes         unlimited
 
 
配置DHCP监听的绑定表代理
1) 进入全局模式   configure terminal
2) 指定绑定表代理和数据库文件位置(可选)
   ip dhcp snooping database flash:/文件名|tftp://文件名|ftp://用户名:密码@主机/文件名|http://[[用户名:密码]@]主机名|主机地址/目录/文件.tar
3) 指定绑定表数据库传输超时时间
   ip dhcp snooping database timeout 秒数
秒数:取值为0-86400,默认为300秒
4) 值定绑定表数据库写入延迟时间
   ip dhcp snooping database write-delay 秒数
秒数:取值为15-86400,默认为300秒(15分钟)
5) 进入特权模式    end
6) 手工值定绑定表条目
   ip dhcp snooping binding mac地址 vlan vlan号 IP地址 interface 接口 expiry 秒数
   expiry:这条静态条目到期的时间,取值为1-4294967295
7) 验证结果
show ip dhcp snooping database
第五部分  IP源保护(IP Source Guard)
IPSG提供检测机制来确保单个接口所接收到的数据包能够被各个接口所接收。如果检查成功通过,那么就将许可数据包;否则就会发生违背策略的活动。IPSG不仅能够确保第2层网络中终端设备的IP地址不会被劫持,而且还能确保非授权设备不能通过自己指定IP地址的方式来访问网络或导致网络崩溃及瘫痪。
在DHCP监听绑定表或静态IP源绑定的帮助下,IPSG能够获得有效的源端口信息。在不信任端口上启用dhcp snooping和ip源保护之后,交换机将阻止除了dhcp数据包之外的所有流量。一旦DHCP服务器分配了IP地址,那么就更新dhcp绑定表。IPSG然后会自动在接口加载基于端口的vlan访控(PACL)。这样将客户端流量限定到绑定表中所配置的源IP地址。对于来自源IP绑定之外的其他源IP地址的主机端口的流量,将会被过滤。
IP源保护只支持第2层端口,其中包括介入access和干道trunk接口。对于不信任端口(第2层),存在以下两种级别的IP流量安全过滤:
* 源IP地址过滤:根据源IP地址对IP流量进行过滤,只有当源IP地址与IP源绑定条目匹配,IP流量才允许通过。
当端口创建、修改、删除新的IP源绑定条目的时候,IP源地址过滤器将发生变化。为了能够反映IP源绑定的变更,端口PACL将被重新修改并重新应用到端口上。
默认情况下,如果端口没有任何IP源绑定配置的情况下启用了ip源保护,默认的PACL将拒绝端口的所有流量。如果你取消了IP源保护,端口的ACL也会从接口上移除。
* 源IP和MAC地址过滤:根据源IP地址和MAC地址对IP流量进行过滤,只有当源IP地址和MAC地址与IP源绑定条目匹配,IP流量才允许通过。
当以IP和MAC地址作为过滤的时候,为了确保DHCP协议能够正常的工作,还必须启用DHCP监听选项82,对于没有选项82的数据,交换机不能确定用于转发DHCP服务器响应的客户端主机端口。相反地,DHCP服务器响应将被丢弃,客户机也不能获得ip地址
交换机使用端口安全来过滤源maC地址,所以端口上的端口安全的违规处理将关闭。
配置过程:
注意:
1. 在某个VLAN上启用基于源IP地址的IP源保护之前,必须先启用DHCP监听功能
2. 如果是在TRUNK接口上对于多个VLAN启用IP源保护,必须在所有的VLAN上启用DHCP监听,同时要应用基于源IP过滤策略在所有的VLAN
3. 启用基于源ip和mac地址的IP源保护之前,必须启用DHCP监听和端口安全(Port security)
4. 在私有vlan上启用基于源ip和mac地址的IP源保护,端口安全是不支持的
5. IP源保护不支持以太通道(EthenChannel)
6. 在启用了802.x认证的情况下,也可以使用这种特性。
配置:
1) 进入全局模式    configure terminal
2) 进入接口模式    interface 接口
3) 启用IP源保护
    基于源IP地址的      ip verify source
    基于源IP和MAC地址的    ip verify source port-security
    注意:dhcp服务器必须支持选项82,或者客户端没有分配到IP地址。同时MAC地址不能被学习为安全地址
5) 进入全局模式,添加静态的IP源绑定
    ip source binding mac地址 vlan vlan号 ip地址 interface 接口
6) 验证结果
    show ip verify source [interface 接口]
    show ip source binding [ip地址] [mac地址] [interface 接口] [vlan vlan号] [dhcp snooping|static]
案例:
    我们接着上部分试验继续
Switch(config)#interface f0/2
Switch(config-if)#switchport port-security
Switch(config-if)#ip verify source port-security
Switch(config)#interface f0/3
Switch(config-if)#switchport port-security
Switch(config-if)#ip verify source port-security
Switch(config-if)#exit
Switch(config)#ip source binding 00e0.1e60.7c86 vlan 10 192.168.1.1 interface f0/1
Switch(config)#end 
Switch#show ip source bind
MacAddress       IpAddress     Lease(sec)  Type           VLAN    Interface
----------      -----------  ----------  -------------  ----  ----------------
00:10:7B:3C:01:DA   192.168.1.2   85535    dhcp-snooping  10    fastEthernet0/2
00:E0:1E:60:7C:86  192.168.1.1    infinite    static       10    fastEthernet0/1
Total number of bindings: 3
----------------------------------------------------------------
Switch#show ip verify source
Interface  Filter-type  Filter-mode  IP-address       Mac-address        Vlan
--------- ----------   -----------  ---------------  -------------  ----------
Fa0/2      ip-mac       active       192.168.1.2      permit-all         10 
Fa0/3      ip-mac       active       deny-all          permit-all         10
 
第六部分  动态ARP检测
  DAI(Dynamic ARP Inspection)动态ARP检测是一种能够验证网络中ARP地址解析协议数据报的安全特性。通过DAI,网络管理员能够拦截、记录和丢弃具有无效MAC地址/IP地址绑定的ARP数据包。
 
  如上图,主机A、主机B、主机C连接到交换机中相同的网络或同一个vlan中。主机A需要与主机B进行通信,主机A广播ARP请求通过主机B的IP地址(IB)来获得主机B的MAC地址。因为ARP请求是以广播的形式传送,交换机和主机B收到主机A发出的ARP请求之后,会在自己的ARP缓存中创建或更新主机A的MAC地址(MA)和IP地址(IA),然后主机B一单播得形式发送ARP响应,交换机和主机A收到ARP响应之后,主机A将更新自己的ARP缓存,将主机B的IP地址和MAC地址对应。
  主机C破坏交换机的ARP缓存,主机C发送伪造的ARP响应(将自己的MAC地址代替真实主机的MAC地址,比如主机C用自己的MAC地址(MC)替代主机B发给主机A的MAC地址(MB)),使得主机A(或主机B)的IP地址和主机C的MAC地址(MC)对应,主机C以中间人的身份发起***。这样造成主机A不能拥有主机B真实的MAC地址的ARP条目,同样,主机B也认为主机C的MAC地址是映射到主机A  IP地址的真实地址。对于主机A和主机B之间的通信,都会被发往主机C,主机C能够在阅读内容后进行流量的重定向。
动态ARP检测是一个安全特性,通过DAI,网络管理员能够检测、拦截、记录和丢弃具有无效MAC地址/IP地址绑定的ARP数据包。能够预防“中间人”的***。
  动态ARP检测只会转发合法的ARP请求和响应包,他会:
* 检测不信任的端口上的所有ARP请求和响应包
* 在更新本地的ARP缓存和转发ARP数据包到目的地之前,会检测是否是合法的IP和MAC地址对应内容。
* 如果确认是不合法的数据包,他会丢弃数据包并记录这个违规的行为。
  动态ARP检测依据一个信任的数据库(如手工配置或dhcp监听绑定表)中合法的IP对应MAC地址的条目来判断数据包的合法性。这个数据库可以手工指定配置或者在vlan中启用了dhcp监听动态学习建立。如果ARP数据包是在信任端口上接收到的,交换机不会做任何检测直接转发ARP数据包。如果是从不信任端口上接收到ARP数据包,交换机只会转发合法的数据包。
在DHCP服务器存在的环境下,可以在每个VLAN中启用DHCP监听和ip arp inspection vlan命令来启用动态ARP检测。如果没有DHCP环境,用户需要使用arp 访问列表手工配置IP地址来启用动态ARP检测合法的数据包。
接口信任状态和网络安全
  如果ARP数据包是在信任端口上接收到的,交换机不会做任何检测直接转发ARP数据包。如果是从不信任端口上接收到ARP数据包,交换机只会转发合法的数据包。
  在一个典型的网络中,交换机中所有连接主机的端口配置为不信任端口,所有交换机与交换机相连的端口配置为信任端口。如下图,交换机A和交换机B运行动态ARP检测,主机1和主机2需要从连接到交换机A的dhcp服务器来获得IP地址,交换机1建立主机1和主机2的IP和MAC地址的绑定信息,交换机B建立主机2的IP和MAC地址的绑定信息。如果交换机A和交换机B连接的端口设置为不信任端口,从主机1发出的ARP数据包到达交换机B时,会被交换机B丢弃,这样主机1和主机2的联系就中断了。
 
配置过程:
默认配置:
特性             默认配置
-----------------------------------------
动态ARP检测          所有vlan中不启用
接口信任状态          所有接口是不信任
进入ARP数据包流量限制  不信任端口:15 pps信任端口:没有限制
没有dhcp环境下的arp访控  没有定义
合法核实          没有核实允许
日志缓冲          所有拒绝和丢弃arp数据包的行为都会被记录日志的缓冲大小为32系统信息数被限制为5秒钟一次
每个vlan的日志          所有的拒绝和丢弃的行为都被记录
配置DHCP环境的DAI
1) 配置相应的DHCP监听和IP源保护
2) 进入全局模式   configure terminal
3) 在指定的vlan上启用动态ARP检测
ip arp inspection vlan vlan范围
4) 进入接口模式   interface 接口
5) 指定信任端口
ip arp inspection trust
6) 验证结果
show ip arp inspection
show ip arp inspection database
show ip arp inspection vlan vlan号
show ip arp inspection statistes vlan vlan号
案例:
 
swA#config terminal
swA(config)#ip dhcp snooping
swA(config)#ip dhcp snooping vlan 10
swA(config)#ip arp inspection vlan 10
swA(config)#interface f0/1
swA(config-if)#ip dhcp snooping trust
swA(config-if)#switch access vlan 10
swA(config-if)#interface f0/2
swA(config-if)#switch access vlan 10
swA(config)#interface f0/23
swA(config-if)#ip arp inspection trust
--------------------------------------------------
swB#config terminal
swB(config)#ip dhcp snooping
swB(config)#ip dhcp snooping vlan 10
swB(config)#ip arp inspection vlan 10
swB(config-if)#interface f0/3
swB(config-if)#switch access vlan 10
swB(config)#interface f0/23
swB(config-if)#ip arp inspection trust
swB(config-if)#ip dhcp snooping trust
-----------------------------------------------------------
与交换机A fa0/1相连的路由器扮演dhcp服务器的角色
dhcpserver#conf ter
dhcpserver(config)#ip dhcp excluded-address 192.168.1.1
dhcpserver(config)#ip dhcp pool cisco
dhcpserver(dhcp-config)#network 192.168.1.0 255.255.255.0
dhcpserver(dhcp-config)#default-route 192.168.1.1
-------------------------------------------------------------
与交换机A fa0/2相连的路由器扮演主机1的角色
host1(config)#no ip routing
host1(config)#int e0
host1(config-if)#ip address dhcp
-------------------------------------------------------------
与交换机B fa0/3相连的路由器扮演主机2的角色
host2(config)#no ip routing
host2(config)#int f0/0
host2(config-if)#ip address dhcp
------------------------------------------------------------
SWA#show ip dhcp snoo bind
MacAddress      IpAddress        Lease(sec)  Type        VLAN  Interface
-------------  --------------  ----------  ----------  ----  ----------------
00:E0:1E:60:7C:86  192.168.1.2   83702     dhcp-snooping  10   FastEthernet0/2
Total number of bindings: 1
-------------------------------------------------------------------------
SWA#show ip arp inspection
Source Mac Validation      : Disabled
Destination Mac Validation : Disabled
IP Address Validation      : Disabled
 Vlan     Configuration    Operation   ACL Match          Static ACL
 ----     -------------    ---------   ---------          ----------
   10     Enabled            Active                        
 Vlan     ACL Logging      DHCP Logging
 ----     -----------      ------------
   10     Deny               Deny 
 Vlan      Forwarded        Dropped     DHCP Drops      ACL Drops
 ----      ---------        -------     ----------      ---------
   10              0              0              0              0
 Vlan   DHCP Permits    ACL Permits   Source MAC Failures
 ----   ------------    -----------   -------------------
   10              0              0                     0
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
         
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
   10                   0                        0                       0
------------------------------------------------------------------------
SWA#show ip arp inspection statistics vlan 10
 Vlan      Forwarded        Dropped     DHCP Drops      ACL Drops
 ----      ---------        -------     ----------      ---------
   10              0              0              0              0
 Vlan   DHCP Permits    ACL Permits   Source MAC Failures
 ----   ------------    -----------   -------------------
   10              0              0                     0
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
   10                   0                        0                       0
-------------------------------------------------------------------------
SWA#show ip arp inspection inter
 Interface        Trust State     Rate (pps)    Burst Interval
 ---------------  -----------     ----------    --------------
 Fa0/1            Untrusted               15                 1
 Fa0/2            Untrusted               15                 1
 Fa0/3            Untrusted               15                 1
 Fa0/4            Untrusted               15                 1
 Fa0/5            Untrusted               15                 1
 Fa0/6            Untrusted               15                 1
 Fa0/7            Untrusted               15                 1
 Fa0/8            Untrusted               15                 1
 Fa0/9            Untrusted               15                 1
 Fa0/10           Untrusted               15                 1
 Fa0/11           Untrusted               15                 1
 Fa0/12           Untrusted               15                 1
 Fa0/13           Untrusted               15                 1
 Fa0/14           Untrusted               15                 1
 Fa0/15           Untrusted               15                 1
 Fa0/16           Untrusted               15                 1
 Fa0/17           Untrusted               15                 1
 Fa0/18           Untrusted               15                 1
 Fa0/19           Untrusted               15                 1
 Fa0/20           Untrusted               15                 1
 Fa0/21           Untrusted               15                 1
 Fa0/22           Untrusted               15                 1
 Fa0/23           Trusted               None               N/A
 Fa0/24           Untrusted               15                 1
 Gi0/1            Untrusted               15                 1
 Gi0/2            Untrusted               15                 1
 Po13             Untrusted               15                 1
 Po14             Untrusted               15                 1
--------------------------------------------------------------
SWB#show ip arp inspection vlan 10
Source Mac Validation      : Disabled
Destination Mac Validation : Disabled
IP Address Validation      : Disabled
 Vlan     Configuration    Operation   ACL Match          Static ACL
 ----     -------------    ---------   ---------          ----------
   10     Enabled          Active                        
 Vlan     ACL Logging      DHCP Logging
 ----     -----------      ------------
   10     Deny             Deny 
-------------------------------------------------------------------
SWA#show ip arp inspection statistics
 Vlan      Forwarded        Dropped     DHCP Drops      ACL Drops
 ----      ---------        -------     ----------      ---------
   10             13             45             45              0
 Vlan   DHCP Permits    ACL Permits   Source MAC Failures
 ----   ------------    -----------   -------------------
   10              1              0                     0
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
   10                   0                        0                       0
-----------------------------------------------------------------------
检测***
我们将主机2模拟为***者,将主机2的IP地址配置为主机1的IP地址
Rack11SW2#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
14:36:50: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/3, vlan 10.([0013.1a7f.8c21/192.168.1.2/0000.0000.0000/11.11.36.6/14:36:49 UTC Mon Mar 1 1993]).
14:36:51: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 10.([0013.1a7f.8c21/192.168.1.2/000d.bde6.a880/192.168.1.200/14:36:50 UTC Mon Mar 1 1993]).
14:36:55: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/3, vlan 10.([0013.1a7f.8c21/192.168.1.2/000d.bde6.a880/192.168.1.200/14:36:54 UTC Mon Mar 1 1993]).
Success rate is 0 percent (0/5)
----------------------------------------------------------------------------
SWB#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.2             0   Incomplete      ARPA  
配置非DHCP环境的动态ARP检测
1) 进入全局模式  configure terminal
2) 定义arp的访问控制列表
arp access-list 访控名称
3) 定义允许列表内容
permit ip host 发送者IP地址 mac host 发送者MAC地址
4) 将arp访控应用到指定的vlan
ip arp inspection filter arp访控名称 vlan vlan范围 [static]
static:使用这个参数,访控将使用隐含的deny语句来拒绝arp数据包
5) 验证结果
show arp access-list
案例:
 
如图,把交换机A上相连的dhcp服务器去除,交换机B也配置了动态ARP检测。如果我们把交换机A的端口1配置为信任端口,因为信任端口是不会对arp数据包做任何的检测,这样交换机B或者主机2对交换机A和主机1会造成arp的***。这样交换机A的端口1配置为非信任端口,但为了主机2和主机1之间通信,必须在交换机A上应用一个arp访问控制列表允许主机2访问。如果主机2的IP地址不是静态的,必须将交换机A和交换机B在第3层上分隔开,两者之间添加路由器来路由两者之间的数据包。
SwA#config terminal
SWA(config)#arp access-list cisco
SWA(config-arp-nacl)#permit ip host 192.168.1.3 mac host 0013.1a7f.8c21
SWA(config-arp-nacl)#exit
SWA(config)#int f0/23
SWA(config-if)#no ip arp inspection trust
SWA(config-if)#end
SWA(config)#ip arp inspection filter cisco vlan 10
--------------------------------------------------------------------------
SWA#show arp access-list
ARP access list cisco
permit ip host 192.168.1.3 mac host 0013.1a7f.8c21
-------------------------------------------------------------------------
SWA#show ip arp inspection
Source Mac Validation      : Disabled
Destination Mac Validation : Disabled
IP Address Validation      : Disabled
 Vlan     Configuration    Operation   ACL Match          Static ACL
 ----     -------------    ---------   ---------          ----------
   10     Enabled             Active      cisco              No
 Vlan     ACL Logging      DHCP Logging
 ----     -----------      ------------
   10     Deny             Deny 
 Vlan      Forwarded        Dropped     DHCP Drops      ACL Drops
 ----      ---------        -------     ----------      ---------
   10             21             45             45              0
 Vlan   DHCP Permits    ACL Permits   Source MAC Failures
 ----   ------------    -----------   -------------------
   10              9              0                     0
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
         
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
   10                   0                        0                       0
配置ARP数据包的流量限制
当进入的ARP数据包超过了配置的流量限定,交换机会将这个端口进入到err-disable状态。这个端口一直保持这种状态到err-disable恢复时间到期
1) 进入全局模式  configure terminal
2) 进入接口模式  interface 接口
3) 配置ARP数据包的流量限制
   ip arp inspection limit rate 每秒包数 [burst interval 秒数]
   PPS:每秒多少数据包,取值为0-2048,非信任端口上默认为每秒15数据包,信任端口上没有流量限制
   Burst interval:突发时间间隔,取值为1-15
4) 配置使能端口err-disable状态的恢复
   errdisable recovery cause arp-inspection interval 秒数
默认情况下,err-disable恢复是关闭的,恢复时间为300秒,取值为30-86400
5) 验证结果
   show ip arp inspection interface
SWA# show ip arp inspection interface f0/23
 Interface        Trust State     Rate (pps)    Burst Interval
 ---------------  -----------     ----------    --------------
 Fa0/23           Untrusted              200                 5
合法性的检查
网络管理员能够根据IP对应MAC地址的绑定的合法性来拦截、记录和丢弃具有无效MAC地址/IP地址绑定的ARP数据包。交换机能够配置以目标的MAC地址、IP地址和源MAC地址来作为核实的依据。
1) 进入全局模式   configure terminal
2) 配置合法性的检查依据
   ip arp inspection validate [src-mac|dst-mac|ip]
3) 验证结果
SWA#show ip arp inspection statistics vlan 10
 Vlan      Forwarded        Dropped     DHCP Drops      ACL Drops
 ----      ---------        -------     ----------      ---------
   10              0              0              0              0
 Vlan   DHCP Permits    ACL Permits   Source MAC Failures
 ----   ------------    -----------   -------------------
   10              0              0                     0
 Vlan   Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
 ----   -----------------   ----------------------   ---------------------
   10                   0                        0                       0
配置日志的缓冲
1) 进入全局模式  configure terminal
2) 配置日志缓冲
ip arp inspection log-buffer entrie 条数 | logs 数目 interval 秒数
entrie 数目:指定日志缓冲的条目个数,取值为0-1024
logs 数目 interval 秒数:在指定的时间间隔内,产生系统信息的条目数目
3) 指定记录日志的类型,默认情况下,所有拒绝和丢弃的行为都会被记录。
ip arp inspection vlan vlan值 logging acl-match [matchlog] | dhcp-bindings [all|none|permit]
acl-match:记录符合arp 访控列表条目permit或deny的内容
dhcp-bindings:记录匹配dhcp绑定表的内容
4) 验证结果
show ip arp inspection log
案例:
SWA(config)#ip arp inspection log-buffer entrie 15
SWA(config)#ip arp inspection log-buffer logs 100 interval 60000
SWA#show ip arp inspection log 
Total Log Buffer Size : 15
Syslog rate : 100 entries per 60000 seconds.
Interface   Vlan  Sender MAC      Sender IP    Num Pkts   Reason       Time
----------  ----  --------------  ----------  -------  -----------  ----
Fa0/3       10    0013.1a7f.8c21  192.168.1.3         1  DHCP Deny    15:59:31 UTC Mon Mar 1 1993