在网络设备上,MAC 地址绑定主要有两种方式:基于端口的 MAC 地址绑定和基于 IP 地址的 MAC 地址绑定(其实还有一种,就是端口、MAC 地址和 IP 地址三者同时绑定)。前者主要是在交换机上进行配置,后者既可以在交换机上配置,也可以在路由器和防火墙上进行配置。基于交换机端口绑定 MAC 地址后,就只有该 MAC 地址主机才能访问所绑定的交换机端口,防止其他主机访问该端口上的主机;基于 IP 地址的 MAC 地址绑定,则只有具有正确的MAC 地址与 IP 地址绑定关系的数据包才允许进行正常的网络通信,防止其他 IP 地址用户仿冒合法用户的 MAC 地址。如果同时进行了端口、MAC 地址和 IP 地址绑定,则只有符合三者绑定关系的数据包才能访问相应端口。

基于端口的单一MAC地址绑定的基本配置步骤

    在 Cisco 设备上为了实现基于端口的绑定,开发了一种 Port-Secruity(端口安全)的技术。因为 Cisco 的交换机、路由器和防火墙的 MAC 地址绑定方法基本上都一样,所以在此仅以Cisco交换机的MAC地址绑定配置为例进行介绍。

Cisco交换机上基于端口的MAC地址绑定的具体配置步骤如下:
(1)Switch#con t                   #进入全局配置模式  
(2)Switch(config)#int interface-id     #进入相应端口的端口配置模式  
(3)Switch(config-if)#switchport mode access       #设置以上端口为访问模式(如果确定接口已经处于access模式,则此步骤可以省略)
(4)Switch(config-if)#switchport port-security       #在以上端口上启用端口安全特性
(5)Switch(config-if)#switchport port-security mac-address mac    #把MAC地址绑定在interface-id端口上  
(6)Switch(config-if)#switchport port-security maximum value    #设置端口上可以容纳的安全地址的最大个数,一般范围是1~132(不同厂家这个数值略微有所不同),也可以不配置
(7)Switch(config-if)# switchport port-security violation {protect | restrict | shutdown} 设置处理违例的方式                                                        (8)Switch(config-if)#end                  #返回到特权模式
(9)Switch#show port-security interface  #查看交换机的端口安全端口配置,验证以上所做的配置                                                                            (10)Switch#wr                      #保存配置

    选择 protect 可选项时,则保护端口,当安全地址个数满后,安全端口将丢弃来源于非安全地址范围内的地址的所有数据包;选择 restrict 可选项时,当违例产生时,将发送一个警告通知给管理员,但非安全地址的通信仍将进行;当选择 shutdown 可选项时,当违例产生时,将关闭端口,并发送一个警告通知给管理员。默认行为是关闭端口。

【注意】当端口因为违例而被关闭后,管理员可以在全局配置模式下使用 errdisable recovery命令来将端口从错误状态中恢复过来,重新激活该端口。

    下面以 Cisco Catalyst 3550 型号交换机为例介绍基于端口的 MAC 地址绑定配置方法。示例中是指定快速以太网端口 f0/1 为安全端口,设置允许通过的源 MAC 地址数为 1,即仅 00-10-15-d10-4r-c1 这个 MAC 地址,非此源 MAC 地址的数据包通过时关闭该端口。具体配置步骤如下:

(1)Cisco3550#conf t  
(2)Cisco3550 (config)#int f0/1  
(3)Cisco3550 (config-if)#switchport mode access      #指定f0/1端口为访问模式  
(4)Cisco3550 (config-if)#switchport port-security mac-address  00-10-15-d10-4r-c1   #把MAC地址00-00-10-15-d10-4r-c1绑定在f0/1端口上
(5)Cisco3550 (config-if)#switchport port-security maximum  1    #限制 f0/1 端口允许通过的源MAC 地址数为 1,也就是仅允许源 MAC 地址为 00-10-15-d10-4r-c1 的数据包通过。当然,此处也可以不#配置,不限制允许通过的最大源MAC地址数
(6)Cisco3550 (config-if)#switchport port-security violation shutdown      #发现数据包中源MAC地址与上述配置不符时,关闭端口。

基于端口的多MAC地址绑定配置思路

    上面介绍的是一个端口对应一个 MAC 地址的绑定配置方法。如果要在一个端口上绑定多个 MAC 地址,又该如何配置呢?这时就需要用到基于 MAC 地址的扩展 ACL(访问控制列表)了。

(1)Switch#con t  #进入全局配置模式
(2)Switch(config)#mac access-list extended {access-list_name}      #以access-list_name名定义一条基于MAC地址的扩展ACL,并进入access-list 配置模式
(3)Switch(config)#{deny  |  permit} {any  |  host  source MAC address} {any  |  host  destination MAC address}      #在 access-list 配置模式下声明对任意源 MAC 地址或指定的源 MAC 地址、   对任意目的 MAC 地  #址或指定的目的 MAC 地址的报文设置允许其通过或拒绝的条件。注意这里的 MAC 地址要以 #3个点分段(每段4位)表示,下同
(4)Switch(config)#end          #退回到特权模式
(5)Switch#show access-lists [access-list_name]  #显示该访问控制列表配置,如果不指定 access-list及access-list_name参数,则显示所有访问控制列表
【说明】如果不想查看所配置的MAC ACL,则(4)和(5)两步可以省略,不执行
(6)Switch(config)#interface interface-id             #进入端口配置模式
(7)Switch(config-if )#mac access-group access-list_name in    #在以上端口上启用该扩展ACL
(8)Switch(config-if )#end
(9)Switch#copy running-config startup-config          #保存配置

     下面是一个基于端口和 MAC 地址的扩展 ACL 配置示例。示例中定义 MAC 地址为0000.1111.2222 的主机可以访问网络中的所有主机,也就是它可以访问交换机的所有端口,但只允许 MAC 地址为 2222.3333.4444 和 3333.4444.5555 这两个 MAC 地址的主机访问 MAC 地址为0000.1111.2222的主机。

(1)Switch(config)#mac access-list extended mac20       #定义一个MAC地址扩展访问控制列表并且命名该列表名为mac20
(2)Switch(config)#permit host 0000.1111.2222 any       #定义MAC地址为0001.abcd.2345的主机可以访问任意主机,也就是它可以访问连接到交换机所有其他端口上的主机
(3)Switch(config)#permit host 2222.3333.4444   3333.4444.5555 host   0000.1111.2222   #定义只允许MAC地址为2222.3333.4444或3333.4444.5555的主机才可以访问MAC地址为 0000.1111.2222的主机
(4)Switch(config)#interface fa0/1           #进入f0/1端口的端口配置模式 
(5)Switch(config-if )#mac access-group mac20 in     #在 f0/1 端口入方向上应用名为 mac20扩展访问列表

      如果不想用这个访问列表了,则可以随时在全局配置模式下删除,命令如下: 
      Switch(config)#no mac access-list extended   access-list


转载于:https://blog.51cto.com/131403/490296