某局点使用S7506E-NP交换机,软件版本为Release 7577,设备作为DHCP服务器,通过VLAN三层接口为终端分配地址。接口配置主、从IP地址,业务要求终端动态获取从IP所在网段的地址。
| 项目 | 模拟器配置 |
|---|---|
| DHCP服务器主IP | 10.1.1.1/24 |
| DHCP服务器从IP | 10.1.2.1/24 |
| DHCP地址池 | aa |
| 地址池主网段 | 10.1.1.0/24 |
| 地址池从网段 | 10.1.2.0/24 |
| 客户端 | VLAN-interface10通过DHCP获取地址 |
From 0.0.0.0 port 68, interface Vlan-interface100
Message type: REQUEST (1)
Client IP address: 0.0.0.0 Your IP address: 0.0.0.0
Relay agent IP address: 0.0.0.0
Client hardware address: aaaa-aaaa-aaaa
DHCP message type: DHCPREQUEST (3)
Receive a DHCPREQUEST message for 192.0.2.1 from Vlan-interface100;
The server identifier is (none).
Client was rebooted.
Lease 203.0.113.1 does not match the network.
Failed to find the lease for 192.0.2.1.
其中,REQUEST (1)为BOOTP报文头的操作类型,具体DHCP消息类型以DHCPREQUEST (3)为准。日志提示租约网段匹配异常及未找到本次请求的匹配租约,不等于整个地址池没有空闲地址。
客户在VLAN三层接口配置主、从IP地址,并在DHCP地址池中配置对应主、从网段,希望终端仅获取从IP所在网段的地址。同时,测试终端无法正常获取DHCP地址。
过程分析:
1.分析客户端请求报文。
服务器已收到测试终端的DHCPREQUEST,说明至少该请求已经到达DHCP处理模块。
报文中客户端IP地址为0.0.0.0,未携带服务器标识,且日志提示“Client was rebooted”,符合客户端处于INIT-REBOOT阶段、确认缓存地址的特征。
所提供日志片段未展示此前的DHCPDISCOVER,但不能据此认定终端在整个测试期间均未发送Discover。直接发送确认旧地址的DHCPREQUEST属于正常协议行为,本身不能作为故障根因。
应在终端抓包,核对Option 50中的请求地址,并结合客户端MAC、Option 61及事务ID关联完整交互。特别是日志中申请地址与异常租约地址不一致,不能直接将异常租约地址认定为客户端请求地址。
2.检查租约与地址池状态。
“Failed to find the lease”表示此次请求未找到匹配租约,不等于整个地址池没有空闲地址。若目标网段为/30,扣除网络地址、广播地址及网关后,通常仅剩一个终端地址,需要重点确认该地址是否已被占用或排除。
3.分析现有配置是否满足分配需求。
接口配置中的sub表示接口从IP,地址池配置中的secondary表示池内从网段,两者属于不同配置对象。
普通动态分配时,服务器优先从地址池主网段选择地址;主网段无可分配地址后,再从从网段选择。因此,仅配置接口从IP及地址池从网段,不能保证终端直接获取从网段地址。
本次采用保留主、从网段,并在系统视图将主网段全部地址禁止动态分配的方式进行验证。
4.搭建模拟环境并验证。
服务器配置如下,互连业务接口已配置为二层Access接口并加入VLAN 10:
system-view
dhcp enable
dhcp server ip-pool aa
network 10.1.1.0 mask 255.255.255.0
gateway-list 10.1.1.1
network 10.1.2.0 mask 255.255.255.0 secondary
gateway-list 10.1.2.1
quit
quit
dhcp server forbidden-ip 10.1.1.0 10.1.1.255
interface Vlan-interface10
ip address 10.1.1.1 255.255.255.0
ip address 10.1.2.1 255.255.255.0 sub
dhcp select server
dhcp server apply ip-pool aa
quit
return
客户端在VLAN-interface10下配置自动获取地址:
system-view
interface Vlan-interface10
ip address dhcp-alloc
quit
Return在服务器用户视图开启调试:
terminal monitor
terminal debugging
debugging dhcp server packet
debugging dhcp server event本次实测关键日志节选如下,省略时间戳及无关字段:
From 0.0.0.0 port 68, interface Vlan-interface10
Message type: REQUEST (1)
Client IP address: 0.0.0.0 Your IP address: 0.0.0.0
DHCP message type: DHCPDISCOVER (1)
Receive a DHCPDISCOVER message from Vlan-interface10.
Add a conflict IP 10.1.2.1.
Send an ICMP echo request to 10.1.2.2.
Send a DHCPOFFER message on Vlan-interface10.
服务器收到Discover后,将自身从IP地址10.1.2.1记录为冲突地址,随后对候选地址10.1.2.2进行ICMP冲突探测并发送Offer。客户端最终成功获取10.1.2.2/24。
实测证明:在当前模拟器环境中,主网段全部地址被禁止动态分配后,客户端可以获取从网段地址。所列日志节选截至Offer阶段,客户端获取结果由实际接口地址确认。
建议先保存原客户端状态和日志,再在测试终端释放旧地址、重新获取,并同步抓包确认从Discover开始的交互。
2.采用已验证的主网段全局排除方式