WX6112E的机框作为DHCP server,用户采用本地转发模式。现场测试手机都获取不到地址,但是电脑获取地址正常。电脑获取地址后无法ping通网关。
手机MAC地址:20ab-3727-0f8e 电脑MAC:c417-fed1-88b6
在交换主控上收集debug信息对比,如下:
手机debug信息
DHCPServer: Receive DHCPDISCOVER from 20AB-3727-0F8E.
*Nov 28 10:26:58:643 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_PACKET:
Rx, interface Vlan-interface85
Message type: request
Hardware type: 1, Hardware address length: 6
Hops: 0, Transaction ID: 1973605646
Seconds: 51, Broadcast flag: 0
Client IP address: 0.0.0.0 Your IP address: 0.0.0.0
Server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0
Client hardware address: 20ab-3727-0f8e
Server host name: Not Configured, Boot file name: Not Configured
DHCP message type: DHCP Discover
*Nov 28 10:26:58:643 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_EVENT:
DHCPServer: Assign used lease from global pool.
*Nov 28 10:26:58:644 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_PACKET:
Tx, interface Vlan-interface85
Message type: reply
Hardware type: 1, Hardware address length: 6
Hops: 0, Transaction ID: 1973605646
Seconds: 0, Broadcast flag: 0
Client IP address: 0.0.0.0 Your IP address: 172.85.2.175
Server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0
Client hardware address: 20ab-3727-0f8e
Server host name: Not Configured, Boot file name: Not Configured
DHCP message type: DHCP Offer
再无其他信息
电脑debug信息
*Nov 28 10:25:45:818 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_EVENT:
DHCPServer: Receive DHCPREQUEST from C417-FED1-88B6.
*Nov 28 10:25:45:818 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_PACKET:
Rx, interface Vlan-interface85
Message type: request
Hardware type: 1, Hardware address length: 6
Hops: 0, Transaction ID: 2613464159
Seconds: 0, Broadcast flag: 1
Client IP address: 0.0.0.0 Your IP address: 0.0.0.0
Server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0
Client hardware address: c417-fed1-88b6
Server host name: Not Configured, Boot file name: Not Configured
DHCP message type: DHCP Request
*Nov 28 10:25:45:819 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_EVENT:
DHCPServer: Acknowledge the DHCPREQUEST message.
*Nov 28 10:25:45:819 2017 AHJH-WX6112E-B DHCPSD/7/DHCPS_PACKET:
Tx, interface Vlan-interface85
Message type: reply
Hardware type: 1, Hardware address length: 6
Hops: 0, Transaction ID: 2613464159
Seconds: 0, Broadcast flag: 1
Client IP address: 0.0.0.0 Your IP address: 172.85.2.160
Server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0
Client hardware address: c417-fed1-88b6
Server host name: Not Configured, Boot file name: Not Configured
DHCP message type: DHCP Ack
从上述信息可以看出,手机获取地址的过程中,电脑没有收到dhcp requst报文。电脑获取的过程中正常,达到了最后的dhcp ack过程。
查看设备的配置:
interface Vlan-interface85
ip address 172.85.0.1 255.255.255.0
#
dhcp server ip-pool vlan85pool
network 172.85.0.0 mask 255.255.0.0
gateway-list 172.85.0.1
dns-list 61.132.163.68 202.102.192.68
expired day 7
发现网关的地址掩码和地址池的掩码不一样。那为什么电脑可以正常获取电脑呢?我们对比两个debug信息发现。电脑和手机发送报文的Broadcast flag字段数值不一样。flag字段代表dhcp报文类型不同。如果flag为1,代表终端要求dhcp服务器回复的dhcp offer为广播报文,如果flag为0,代表终端要求dhcp服务器回复的dhcp offer为单播报文。同理dhcp requst的flag字段和dhcp discover字段的flag字段一样。
电脑发送的报文的Broadcast flag字段为1,和dhcp服务器交互的dhcp报文都是广播报文。因本地转发,dhcp server和电脑之间的链路,vlan都已经打通,广播可达,所以pc能获取到地址。手机发送的报文的Broadcast flag字段为0,发送给dhcp服务器的dhcp discover报文是广播报文,服务器回复的offer报文是单播报文。因dhcp server上172.85.0.1 地址掩码错误的配置成了24位,与172.85.2.175地址不是同网段,导致报文无法二层可达,最终手机无法获取地址。因网关地址和172.85.2.160地址也不是同网段,所以电脑无法ping通网关。
修改网关掩码和地址池掩码一致即可解决问题。