一个非常简单的 DHCP 服务器可以可靠地与 Windows 10 PC 和 Android 设备配合使用。它从客户端接收 DHCP Discover,回复 DHCP Offer,然后从客户端接收 DHCP Request。
但是,它不适用于使用 DHCP4 的设备。它从该设备接收 DHCP Discover,并以 DHCP Offer 回复,但从未从客户端接收 DHCP Request。Wireshark 分析证实了这一点。看来 DHCP4 客户端要么没有收到 DHCP Offer,要么完全忽略了它。
DHCP 客户端与不同路由器的 DHCP 服务器协同工作没有任何问题,因此我认为问题出在 DHCP 服务器上。
此 DHCP 服务器与典型的 DHCP 服务器有一点不同:它不使用特权端口 67 作为发送消息的源端口。我以为 DHCP 客户端不会关心对其 DHCP Discover 的回复的源端口。该协议似乎不要求从服务器发送的消息从端口 67 发送。它要求将它们发送到端口 68。
有没有专家能提供一些关于这个问题的线索?我完全控制着 DHCP 服务器,我很乐意尝试任何建议。
编辑:
请注意这个问题不是使任何运行 DHCP4 的特定设备与 DHCP 服务器协同工作。这个问题是关于如何修改 DHCP 服务器,以便它能够与所有 DHCP4 客户端协同工作。
答案1
我怀疑这是 Android 的限制(而且我也看不出在 Android 上制作 DHCP 服务器应用程序的合法用途)。请参阅RFC2131以供进一步参考。
DHCP 使用 UDP 作为传输协议。客户端发往服务器的 DHCP 消息被发送到‘DHCP 服务器’端口 (67),并且从服务器到客户端的 DHCP 消息被发送到‘DHCP 客户端’端口 (68)。