我有一个基于微控制器的设备,带有引导加载程序和应用程序。该设备有一个以太网适配器。引导加载程序使用 IP/UDP 来刷新应用程序映像。该应用程序具有功能齐全的 TCP/IP 堆栈。
两个组件都使用 DHCP 获取 IP 地址。奇怪的是,两者在 DHCP 过程中得到的结果不同。两个 DHCP 客户端都配置为使用具有相同 MAC 地址的 DHCPDISCOVER 消息。
DHCP 服务器应在 DHCPOFFER 中发送什么?当 IP 地址未在其他地方分配时,它是否应为相同的 MAC 地址提供相同的 IP 地址?编辑:最后一次地址分配是在10秒前。
DHCP 服务器在 Linux 主机上运行。我该如何配置这样的设备以便监控和了解此行为?
编辑:我无法控制 DHCP 服务器配置。管理员希望保留完全控制权。
引导加载程序或应用程序中是否存在其他 DHCP 设置,这些设置可能会影响 DHCP 结果?
答案1
这取决于您的租约时间设置。如果租约时间足够长,那么您的应用将获得相同的地址。
但是如果您想要保证,则请在服务器上为您的 Mac 声明固定地址。
如果你使用 dhcpd,那么类似这样的操作:
host foo {
hardware ethernet 00:11:22:33:44:55;
fixed-address 1.2.3.4;
}
实际上是的,有一种方法可以通过设置选项 (50) 在 DHCPDISCOVERY 中建议 IP requested IP address
。但我不知道服务器是否承认这一点。
还有选项(51)IP address lease time
,可以在引导加载程序中使用以建议更长的周期,但我也不确定服务器响应。
更多信息rfc2131
答案2
当 DHCP 客户端发送 DHCPDISCOVER 时,服务器应丢弃 DHCP 注册。有些服务器会获得相同的 IP 地址。这没有错,但甚至没有必要。
要保留 DHCP 地址,客户端必须发送带有缓存 IP 配置的 DHCPACQUIRE。DHCP 服务器将确认或拒绝。在这种情况下,发送 DHCPDISCOVER 是个坏主意。