![客户端未从某些 DHCP 服务器获取地址](https://linux22.com/image/795727/%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%9C%AA%E4%BB%8E%E6%9F%90%E4%BA%9B%20DHCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%8E%B7%E5%8F%96%E5%9C%B0%E5%9D%80.png)
我正在研究一些嵌入式设备,这些设备应通过以太网连接到大型网络(数百台设备),并且应使用 DHCP 协议进行配置。我遇到的情况是,设备在某些网络中显然获得了地址,但在其他网络中却没有。我设置了一个仅包含一个客户端、一个交换机和一个 DHCP 服务器(Ubuntu Linux)的测试网络。地址分配正确,DHCP 服务器日志显示 DORA 序列。
我尝试将同一个客户端连接到带有 DHCP 服务器的普通家用路由器(这是我的家用路由器,因此应该可以正常工作),但客户端未获取 IP 地址。这是设备的序列转储:
No. Time Source Destination Protocol Length Info
86 26.515684000 :: ff02::16 ICMPv6 90 Multicast Listener Report Message v2
Frame 86: 90 bytes on wire (720 bits), 90 bytes captured (720 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: IPv6mcast_00:00:00:16 (33:33:00:00:00:16)
Internet Protocol Version 6, Src: :: (::), Dst: ff02::16 (ff02::16)
Internet Control Message Protocol v6
No. Time Source Destination Protocol Length Info
87 26.515688000 :: ff02::1:ff91:de41 ICMPv6 78 Neighbor Solicitation for fe80::260:6eff:fe91:de41
Frame 87: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: IPv6mcast_ff:91:de:41 (33:33:ff:91:de:41)
Internet Protocol Version 6, Src: :: (::), Dst: ff02::1:ff91:de41 (ff02::1:ff91:de41)
Internet Control Message Protocol v6
No. Time Source Destination Protocol Length Info
88 26.596056000 0.0.0.0 255.255.255.255 DHCP 371 DHCP Discover - Transaction ID 0xb444e919
Frame 88: 371 bytes on wire (2968 bits), 371 bytes captured (2968 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
Message type: Boot Request (1)
Hardware type: Ethernet
Hardware address length: 6
Hops: 0
Transaction ID: 0xb444e919
Seconds elapsed: 0
Bootp flags: 0x0000 (Unicast)
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: DavicomS_91:de:41 (00:60:6e:91:de:41)
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type
Option: (57) Maximum DHCP Message Size
Option: (60) Vendor class identifier
Option: (12) Host Name
Option: (55) Parameter Request List
Option: (255) End
No. Time Source Destination Protocol Length Info
94 27.515730000 fe80::260:6eff:fe91:de41 ff02::2 ICMPv6 70 Router Solicitation from 00:60:6e:91:de:41
Frame 94: 70 bytes on wire (560 bits), 70 bytes captured (560 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: IPv6mcast_00:00:00:02 (33:33:00:00:00:02)
Internet Protocol Version 6, Src: fe80::260:6eff:fe91:de41 (fe80::260:6eff:fe91:de41), Dst: ff02::2 (ff02::2)
Internet Control Message Protocol v6
No. Time Source Destination Protocol Length Info
119 30.427837000 0.0.0.0 255.255.255.255 DHCP 371 DHCP Discover - Transaction ID 0xb444e919
Frame 119: 371 bytes on wire (2968 bits), 371 bytes captured (2968 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
Message type: Boot Request (1)
Hardware type: Ethernet
Hardware address length: 6
Hops: 0
Transaction ID: 0xb444e919
Seconds elapsed: 4
Bootp flags: 0x0000 (Unicast)
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: DavicomS_91:de:41 (00:60:6e:91:de:41)
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type
Option: (57) Maximum DHCP Message Size
Option: (60) Vendor class identifier
Option: (12) Host Name
Option: (55) Parameter Request List
Option: (255) End
No. Time Source Destination Protocol Length Info
122 30.985580000 fe80::260:6eff:fe91:de41 ff02::16 ICMPv6 90 Multicast Listener Report Message v2
Frame 122: 90 bytes on wire (720 bits), 90 bytes captured (720 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: IPv6mcast_00:00:00:16 (33:33:00:00:00:16)
Internet Protocol Version 6, Src: fe80::260:6eff:fe91:de41 (fe80::260:6eff:fe91:de41), Dst: ff02::16 (ff02::16)
Internet Control Message Protocol v6
No. Time Source Destination Protocol Length Info
127 31.525478000 fe80::260:6eff:fe91:de41 ff02::2 ICMPv6 70 Router Solicitation from 00:60:6e:91:de:41
Frame 127: 70 bytes on wire (560 bits), 70 bytes captured (560 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: IPv6mcast_00:00:00:02 (33:33:00:00:00:02)
Internet Protocol Version 6, Src: fe80::260:6eff:fe91:de41 (fe80::260:6eff:fe91:de41), Dst: ff02::2 (ff02::2)
Internet Control Message Protocol v6
No. Time Source Destination Protocol Length Info
138 35.535297000 fe80::260:6eff:fe91:de41 ff02::2 ICMPv6 70 Router Solicitation from 00:60:6e:91:de:41
Frame 138: 70 bytes on wire (560 bits), 70 bytes captured (560 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: IPv6mcast_00:00:00:02 (33:33:00:00:00:02)
Internet Protocol Version 6, Src: fe80::260:6eff:fe91:de41 (fe80::260:6eff:fe91:de41), Dst: ff02::2 (ff02::2)
Internet Control Message Protocol v6
No. Time Source Destination Protocol Length Info
142 39.405342000 0.0.0.0 255.255.255.255 DHCP 371 DHCP Discover - Transaction ID 0xb444e919
Frame 142: 371 bytes on wire (2968 bits), 371 bytes captured (2968 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
Message type: Boot Request (1)
Hardware type: Ethernet
Hardware address length: 6
Hops: 0
Transaction ID: 0xb444e919
Seconds elapsed: 13
Bootp flags: 0x0000 (Unicast)
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: DavicomS_91:de:41 (00:60:6e:91:de:41)
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type
Option: (57) Maximum DHCP Message Size
Option: (60) Vendor class identifier
Option: (12) Host Name
Option: (55) Parameter Request List
Option: (255) End
No. Time Source Destination Protocol Length Info
392 55.264802000 0.0.0.0 255.255.255.255 DHCP 371 DHCP Discover - Transaction ID 0xb444e919
Frame 392: 371 bytes on wire (2968 bits), 371 bytes captured (2968 bits) on interface 0
Ethernet II, Src: DavicomS_91:de:41 (00:60:6e:91:de:41), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)
Bootstrap Protocol
Message type: Boot Request (1)
Hardware type: Ethernet
Hardware address length: 6
Hops: 0
Transaction ID: 0xb444e919
Seconds elapsed: 29
Bootp flags: 0x0000 (Unicast)
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address: 0.0.0.0 (0.0.0.0)
Client MAC address: DavicomS_91:de:41 (00:60:6e:91:de:41)
Client hardware address padding: 00000000000000000000
Server host name not given
Boot file name not given
Magic cookie: DHCP
Option: (53) DHCP Message Type
Option: (57) Maximum DHCP Message Size
Option: (60) Vendor class identifier
Option: (12) Host Name
Option: (55) Parameter Request List
Option: (255) End
据我了解,DHCP 发现没有得到答复。这是正确的吗?你知道原因吗?
编辑:我尝试使用 wireshark 再次检查数据包,我可以看到选项选项:(53) DHCP 消息类型。通过展开它,我看到了 DHCP 发现。在我看来,这确实是 DHCP。我还使用 wireshark 检查了 Mac OS X DHCP 数据包,我仍然在数据包中看到“消息类型:启动请求 (1)”。唯一的区别是没有发送 DHCP 发现,只是发送了地址的 DHCP 请求。此外,同一个适配器在 Windows 7 下无法工作。
那么,这真的是 bootp 协议吗?你能确认吗?或者是 DHCP?为什么发送了 DHCP Discover 消息但没有返回 DHCP Offer?