我正在做 DHCP 中继 POC。我的设置如下。
DHCP 客户端(VX-works) ----------- DHCP 中继----------- DHCP 服务器 (VXworks)
在此设置中,DHCP 客户端正在发送 DICOVER 数据包,但中继代理没有收到数据包。我查看了代码,发现在套接字上应用了 Berkeley Packet Filtering (BPF)。DHCP 中继只是丢弃数据包而不将其转发到服务器。
为了进一步调试,我从代码中删除了 BPF 过滤器和校验和验证部分。
现在,DHCP 中继正在转发数据包,但数据包不是 DHCP 服务器所期望的。DHCP 中继正在正确地将数据包从广播更改为单播。服务器端收到的帧、以太网报头、IP 报头和 UDP 报头都是正确的(我在 Wireshark 日志中检查过),但引导协议选项字段不正确。
我还在客户端捕获了 Wireshark 日志。客户端正在按预期发送 DICOVER 数据包。
如果您需要更多信息,请发表评论。
Realy : 基于 ISC dhcrelay(4.3.1P1) Linux (3.14 kernel)
提前致谢。
编辑:下面是在 DHCP 客户端捕获的单个数据包的十六进制转储。
ff ff ff ff ff ff 00 20 61 1e 9e 14 08 00 45 00
01 1a 4f fe 40 00 20 11 09 d6 00 00 00 00 ff ff
ff ff 00 44 00 43 01 06 fd 9b 01 01 06 00 00 ae
af 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 20 61 1e 9e 14 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 02
4e 37 04 0f 06 03 01 ff