更新时间:2024-01-09                  
                  
                  1  DHCP-snooping配置  
1.1  DHCP-snooping 概述 
DHCP-snooping的任务就是对DHCP报文进行判断,防止伪造的DHCP服务器提供DHCP服务,维护接口上MAC地址与IP地址的对应绑定关系。根据MAC地址与IP地址的对应绑定,可以完成DAI(动态ARP监测)和IP source guard功能。DHCP-snooping功能主要包括侦听DHCP报文、动态维护MAC地址与IP地址的对应绑定表,二层交换机过滤非信任端口的不满足这种对应绑定关系的报文,防止非法用户对网络的攻击。
1.2   DHCP-snooping配置任务列表   
• 开启/关闭DHCP-snooping功能
• 在VLAN 上启动DHCP-snooping
• 在VLAN上启动DHCP防攻击功能
• 配置接口为DHCP信任接口
• 开启/关闭绑定表快速更新功能
• 在VLAN上启动DAI功能
• 配置接口为ARP监测信任接口
• 在VLAN上启动IP源地址监测功能
• 配置接口为IP源信任接口
• 配置DHCP-snooping Option82选项格式
• 配置DHCP-Snooping Option82报文策略
• 配置接口绑定关系备份的TFTP服务器
• 配置接口绑定关系备份的文件名
• 配置接口绑定关系备份检查的时间间隔
• 手工配置接口绑定
• DHCP-snooping的监控与维护
• DHCP-snooping配置示例
1.3   DHCP-snooping配置任务   
1.3.1     开启/关闭DHCP-snooping功能 
在全局配置模式下进行下列配置:
| 命令 | 目的 | 
| ip dhcp-relay snooping | 开启DHCP-snooping功能。 | 
| no ip dhcp-relay snooping | 恢复缺省设置。 | 
该命令是启动DHCP snooping功能的全局控制命令。配置该命令,则交换机侦听所有DHCP报文,形成相应的绑定关系。
注意:如果客户端是在配置该命令之前通过此交换机获取地址,则交换机不能添加相应的绑定关系。
1.3.2  在VLAN 上启动DHCP-snooping
在VLAN上启动DHCP snooping功能,则对属于整个VLAN的所有非信任物理端口收到的DHCP报文进行合法化检查。对于VLAN内的非信任物理端口收到的DHCP 响应报文将丢弃,防止用户非法伪造或者误配的DHCP服务器提供地址分配;对于非信任端口的DHCP 请求报文,如果报文发送MAC地址和报文内的硬件地址字段不匹配,认为是用户故意伪造的用于              DHCP DOS(拒绝服务)的攻击报文,交换机也将丢弃。
在全局配置模式下进行下列配置:
| 命令 | 目的 | 
| ip dhcp-relay snooping vlan vlan_id   | 在VLAN上启动DHCP snooping 功能 | 
| no ip dhcp-relay snooping vlan vlan_id  | 在VLAN上关闭DHCP snooping 功能。 | 
1.3.3  在VLAN 上启动DHCP防攻击功能
在VLAN上启动DHCP防攻击功能,配置了DHCP snooping 特定VLAN下的允许最大dhcp client用户数,执行先到先分配的原则,当vlan内的用户数达到配置的允许最大值后,就不允许新的client进行分配。
在全局配置模式下进行下列配置:
| 命令 | 目的 | 
| ip dhcp-relay snooping vlan vlan_id max-client number | 在VLAN上启动DHCP防攻击功能 | 
| no ip dhcp-relay snooping vlan vlan_id max-client | 在VLAN上关闭DHCP防攻击。 | 
1.3.4配置接口为DHCP信任接口
配置接口为DHCP信任接口,则该接口收到的DHCP报文不进行检查。
在物理接口配置模式下进行下列配置:
| 命令 | 操作 | 
| dhcp snooping trust | 配置接口为DHCP信任接口 | 
| no dhcp snooping trust | 恢复接口为DHCP非信任接口。 | 
缺省情况下接口为非信任接口。
1.3.5开启/关闭绑定表快速更新功能
默认情况下此功能关闭。没有开启此功能时,如果在一个端口下已经绑定了客户端A,相同的mac地址在其他端口的dhcp请求会被认为是伪造mac攻击,即使客户端A已经下线(没有release地址)。
开启此功能后,同一个客户端A,在其他端口上如果在发送dhcp请求报文,dhcp snooping会将原来端口上的A的绑定信息删除,不认为此行为是攻击行为。
建议在客户端会频繁更换端口的环境下,且dhcp server分配的地址租约无法改动为较短时间的时候才考虑使用此功能。
| 命令 | 操作 | 
| ip dhcp-relay snooping rapid-refresh-bind | 开启绑定表快速更新功能 | 
| no ip dhcp-relay snooping rapid-refresh-bind | 关闭绑定表快速更新功能 | 
1.3.6   在VLAN 上启动DAI功能 
在属于某个VLAN的所有物理端口进行ARP动态监测,如果该接口收到的ARP报文的源MAC和源IP地址不满足接口上配置的MAC和IP地址绑定关系,则拒绝处理该报文。接口上配置的绑定关系可以是DHCP动态绑定的,也可以是手工配置的。如果物理接口上没有配置任何MAC和IP地址绑定,则交换机拒绝转发所有ARP报文。
| 命令 | 操作 | 
| ip arp inspection vlan vlanid | 对VLAN 内的所有非信任端口启动动态ARP监测 | 
| no ip arp inspection vlan vlanid | 对VLAN 内的所有非信任端口关闭动态ARP监测 | 
1.3.7 配置接口为ARP监测信任接口
对于ARP监测信任接口,不启动ARP监测功能。接口默认为非信任接口。
在接口配置模式下进行下列配置:
| 命令 | 操作 | 
| arp inspection trust | 配置接口为ARP监测信任接口 | 
| no arp inspection trust | 恢复接口为ARP监测非信任接口 | 
1.3.8  在VLAN 上启动IP源地址监测功能
启动IP源地址监测的VLAN,属于该VLAN的所有物理端口收到的IP报文的源MAC和源IP地址不满足接口上配置的MAC和IP地址绑定关系,则该报文被拒绝处理。接口上配置的绑定关系可以是DHCP动态绑定的,也可以是手工配置的。如果此物理接口上没有配置任何MAC和IP地址绑定,则交换机拒绝转发所有该接口收到的IP报文。
在全局配置模式下进行下列配置:
| 命令 | 操作 | 
| ip verify source vlan vlanid | 对VLAN内的所有非信任接口启动报文源IP地址检查功能 | 
| no ip verify source vlan vlanid | 对VLAN内的所有接口关闭报文源IP地址检查功能 | 
 注意:如果收到的是DHCP报文(也是IP报文),则因为配置了全局snooping进行软件转发。
1.3.9配置 接口为IP源信任接口
对于IP源地址信任接口,不启动源地址检查功能。
在接口配置模式下进行下列配置:
| 命令 | 操作 | 
| ip-source trust | 配置接口为IP源地址信任接口。 | 
| no ip-source trust | 恢复接口为IP源地址非信任接口 | 
1.3.10配置DHCP-snooping Option82选项格式
Option82选项将可以携带本地信息给服务器,帮助服务器来分配给客户端地址。
在全局模式下进行下列配置:
| 命令 | 操作 | 
| ip dhcp-relay snooping information option | 配置DHCP-snooping转发DHCP报文将携带option82选项,选项为默认格式。 | 
| no ip dhcp-relay snooping information option | 配置DHCP-snooping转发DHCP报文不携带option82选项。 | 
如果想要指定option82格式,则在全局模式下进行下列配置:
| 命令 | 操作 | 
| ip dhcp-relay snooping information option format {snmp-ifindex/manual/cm-type/hn-type[host]/hw-type/option82-customized } | 配置DHCP-snooping转发DHCP报文将携带option82选项,选项为SNMP-IFINDEX格式、手动配置格式、CM-TYPE格式、cisco格式、hw-type格式或者option82-customized格式。 | 
| no ip dhcp-relay snooping information option format {snmp-ifindex/manual/cm-type/hn-type[host]/hw-type/option82-customized} | 配置DHCP-snooping转发DHCP报文不携带option82选项。 | 
如果配置了手动模式填写option82,在接口配置模式下进行下列配置circuit-id子选项:
| 命令 | 操作 | 
| dhcp snooping information circuit-id string [STRING] | 如果配置了option82为手动格式,则配置DHCP-snooping转发DHCP报文将携带option82选项,选项内容为STRING所写的字符串。此命令在连接client的端口上配置。 | 
| dhcp snooping information circuit-id hex [xx-xx-xx-xx-xx-xx] | 如果配置了option82为手动格式,则配置DHCP-snooping转发DHCP报文将携带option82选项,选项内容为所写十六进制。此命令在连接client的端口上配置。 | 
| no dhcp snooping information circuit-id  | 删除手动配置的option82 circuit-id字符串。 | 
如果配置了手动模式填写option82,在接口配置模式下进行下列配置remote-id子选项:
| 命令 | 操作 | 
| dhcp snooping information remote-id string [STRING] | 如果配置了option82为手动格式,则配置DHCP-snooping转发DHCP报文将携带option82选项,选项内容为STRING所写的字符串。此命令在连接client的端口上配置。 | 
| dhcp snooping information remote-id hex [xx-xx-xx-xx-xx-xx] | 如果配置了option82为手动格式,则配置DHCP-snooping转发DHCP报文将携带option82选项,选项内容为所写十六进制。此命令在连接client的端口上配置。 | 
| no dhcp snooping information remote-id  | 删除手动配置的option82 remote-id字符串。 | 
如果配置了手动模式填写option82,在接口配置模式下进行下列配置vendor-specific子选项:
| 命令 | 操作 | 
| dhcp snooping information vendor-specific string STRING  | 如果配置了option82为手动格式,则配置DHCP-snooping转发DHCP报文将携带option82选项,选项内容为STRING所写的字符串。此命令在连接client的端口上配置。 | 
| dhcp snooping information vendor-specific hex [xx-xx-xx-xx-xx-xx] | 如果配置了option82为手动格式,则配置DHCP-snooping转发DHCP报文将携带option82选项,选项内容为所写十六进制。此命令在连接client的端口上配置。 | 
| no dhcp snooping information vendor-specific | 删除手动配置的option82 vendor-specific。 | 
1.3.11配置DHCP-snooping Option82报文策略
可以配置收到已经携带option82选项的dhcp请求包后采取的策略。
Drop策略:在端口模式下输入下列命令,配置丢弃包含option82选项的请求包:
| 命令 | 操作 | 
| dhcp snooping information drop | 此命令配置后,将丢弃包含option82选项的请求包。 | 
Append策略:在端口模式下输入下列命令,配置追加包含option82选项的请求包:
| 命令 | 操作 | 
| dhcp snooping information append | 端口开启追加option82选项 | 
| dhcp snooping information append first-subop9-param  { hex xx-xx-xx-xx-xx-xx | vlanip | hostname } | Option82 vendor-specific(suboption9)子选项所带的第一个参数 | 
| dhcp snooping information append second-subop9-param  { hex xx-xx-xx-xx-xx-xx | vlanip | hostname } | Option82 vendor-specific(suboption9)子选项所带的第二个参数 | 
 
1.3.12手工配置接口绑定
对于不使用DHCP获取地址的主机,在交换机接口上可以手工配置添加绑定条目以是主机正常访问网络。使用该命令的no命令可以删除绑定条目。
注意:手工配置的绑定条目比动态配置的绑定条目优先级要高,如果配置条目的MAC地址与动态配置条目的MAC地址相同,则手工配置的更新动态配置条目。接口绑定条目以MAC地址为唯一索引。
在全局配置模式下进行下列配置:
| 命令 | 操作 | 
| ip source binding MAC IP interface name vlan-id | 手工配置接口绑定。 | 
| no ip source binding MAC IP vlan-id | 删除接口绑定条目 | 
1.3.13 DHCP-snooping的监控与维护
请在管理态下进行下列操作:
| 命令 | 操作 | 
| show ip dhcp-relay snooping | 显示DHCP-snooping的配置信息 | 
| show ip dhcp-relay snooping binding | 显示在接口生效的地址绑定条目 | 
| show ip dhcp-relay snooping binding all | 显示DHCP snooping生成的所有绑定条目 | 
| [ no ] debug ip dhcp-relay [ snooping | binding | event | all ] | 开启/关闭DHCP relay snooping/绑定/事件开关 | 
显示运行dhcp snooping功能的配置信息:
| switch#show ip dhcp-relay snooping  ip dhcp-relay snooping vlan 3 ip arp inspection vlan 3 DHCP Snooping trust interface:   GigaEthernet1/1 ARP Inspect interface:   GigaEthernet1/11 | 
显示dhcp-relay snooping绑定信息:
| switch#show ip dhcp-relay snooping binding Hardware Address    IP Address      remainder time Type           VLAN    interface                   00:e0:0f:26:23:89   192.2.2.101     86400     DHCP_SN        3       GigaEthernet1/3       | 
显示dhcp-relay snooping所有绑定信息:
| switch#show ip dhcp-relay snooping binding all Hardware Address    IP Address      remainder time Type           VLAN    interface                   00:e0:0f:32:1c:59   192.2.2.1       infinite     MANUAL         1       GigaEthernet1/2           00:e0:0f:26:23:89   192.2.2.101     86400     DHCP_SN        3       GigaEthernet1/3 | 
 调试dhcp-relay snooping信息:
| switch#debug ip dhcp-relay all DHCPR: receive l2 packet from vlan 3, diID: 3 DHCPR: DHCP packet len 277 DHCPR: add binding on interface GigaEthernet1/3 DHCPR: send packet continue DHCPR: receive l2 packet from vlan 3, diID: 1 DHCPR: DHCP packet len 300 DHCPR: send packet continue DHCPR: receive l2 packet from vlan 3, diID: 3 DHCPR: DHCP packet len 289 DHCPR: send packet continue DHCPR: receive l2 packet from vlan 3, diID: 1 DHCPR: DHCP packet len 300 DHCPR: update binding on interface GigaEthernet1/3  DHCPR:  IP address: 192.2.2.101, lease time 86400 seconds DHCPR: send packet continue | 
1.3.14 DHCP-snooping配置示例 
示例网络连接如图1:
 

配置Switch:
(1)开启连接Private Network A的VLAN 1的DHCP-snooping
    Switch_config#ip dhcp-relay snooping
Switch_config#ip dhcp-relay snooping vlan 1
(2)开启连接Private Network B的VLAN 2的DHCP-snooping
Switch_config#ip dhcp-relay snooping
Switch_config#ip dhcp-relay snooping vlan 2
(3)配置DHCP服务器连接端口为DHCP 信任端口
  Switch_config_g1/1#dhcp snooping trust
(4)手动配置option82选项实例:
interface GigaEthernet1/1
  dhcp snooping information circuit-id hex 00-01-00-05
  dhcp snooping information remote-id hex 00-e0-0f-13-1a-50
  dhcp snooping information vendor-specific hex 00-00-0c-f8-0d-01-0b-78-69-61-6f-6d-69-6e-37-31-31-34
  dhcp snooping information append
  dhcp snooping information append first-subop9-param hex 61-62-63-61-62-63
!
interface GigaEthernet1/2
  dhcp snooping trust
  arp inspection trust
  ip-source trust
!
!
!
ip dhcp-relay snooping
ip dhcp-relay snooping vlan  1-100
ip arp inspection vlan  1
ip verify source vlan  1
ip dhcp-relay snooping information option format manual