一、故障现象
所有WLAN用户无法通过DHCP获得IP地址。
二、逻辑拓扑图
三、DHCP原理分析
一个完整的DHCP过程,一般分为四个过程:
| 序号 | DHCP包类型 | 传送方向 | 说明 |
| 1 | DHCP Discover | 客户机–>广播 | 客户机定位DHCP服务器 |
| 2 | DHCP Offer | 广播<–服务器 | 服务器发送带配置信息的广播包 |
| 3 | DHCP Request | 客户机–>广播 | 客户机发送请求配置信息的广播包。 |
| 4 | DHCP ACK | 客户机<–服务器 | 服务器向客户机发送DHCP配置信息确认,并提供配置信息。 |
有时,我们也能收到如下一些DHCP包:
DHCP NAK:DHCP服务器向DHCP客户端发送的包,目的是说,客户端的网络地址信息不正确;或是客户端的DHCP租约到期。
DHCP Decline:客户机向服务器发送的数据包,目的是通知服务器,其所提供的IP地址已经被其他机器使用。
DHCP Release:客户机向服务器发送的数据包,目的是释放所占用的IP地址,并清除剩下的地址租约时间。
DHCP Inform:客户机向服务器发送的数据包,只请求本地配置信息;客户机已经通过其他方式配置了网络地址。
四、DHCP抓包分析
故障期间,我们AC的上联交换机(华为S3900)上做了抓包。数据如下:
数据显示:无线侧客户端的DHCP请求全部都正常透过了RFS7000,到达了RFS7000的上联交换机华为S3900,但DHCP服务器(BAS,上联于华为S3900)没有响应这些DHCP Discover。
推论:
1、 DHCP服务器故障。
2、 DHCP服务器与S3900间的链路故障。
五、推论核实及排障过程
1、 DHCP服务器工作状态
DHCP服务器工作正常,并且地址池地址资源丰富。
2、 DHCP服务器(BAS)与华为S3900之间的链路
经验证,通过RFS7000可以ping通BAS(未截图),排除物理链路故障的可能。检查S3900的配置,发现NULL0口配置了“dhcp-snooping”命令,而其他所有端口均未配置相关参数(包括S3900与BAS之间的端口)。在S3900上联DHCP服务器(BAS)的端口启用“dhcp-snooping trust”,并保存配置,故障排除。
六、总结
1、dhcp-snooping是交换网络里边经常用到的安全措施,主要目的是防止DHCP 欺骗攻击。设置了dhcp-snooping trust的端口将允许接入DHCP服务器,并正常工作。而未设置dhcp-snooping trust的端口上若接入了一台DHCP服务器,则这台DHCP服务器所发出的DHCP数据包都将被交换机过滤掉。
2、华为S3900交换机默认是关闭了dhcp-snooping功能的,但一旦启用了dhcp-snooping,则所有端口默认状态均为隐式不可信(即过滤所有DHCP服务器发送的dhcp包),必须手动将连接了合法DHCP服务器的端口设置为dhcp-snooping trust.(详见华为S3900命令手册DHCP一节)
3、案例中,处于BAS和RFS7000之间的华为S3900上启用了dhcp-snooping功能,但在与BAS上联的端口上未启用dhcp-snooping trust,故所有来自BAS(DHCP服务器)的DHCP包都被过滤掉了,因此终端无法通过DHCP获取地址信息。在S3900的上联口启用dhcp-snooping trust,故障排除。


