Print

WX6112E作为DHCP server用户手机无法获取地址经验案例

2017-12-18发表

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通网关。


修改网关掩码和地址池掩码一致即可解决问题。