背景资料:
我有一组专有的嵌入式 Linux 网络设备,其中一个将配置为 DHCP 服务器,其余的将是 DHCP 客户端。
我需要让客户端设备只接受来自服务器设备的 DHCP 租约,而忽略同一 LAN 上其他 DHCP 服务器提供的任何其他租约。同样,我需要使服务器设备仅向这组客户端提供 DHCP 请求,而忽略可能出现在未知网络环境中的任何其他 DHCP 请求。本质上,我需要能够在可能已经有 DHCP 服务器的网络环境中为我自己的设备提供 DHCP 服务。
我所有的设备都具有相同的 MAC 地址的前半部分,我打算将其用作过滤器。
我正在使用 BusyBox 中包含的 udhcpc 和 udhcpd,并且由于存储可用性有限,我试图避免将任何其他 DHCP 客户端/服务器包添加到我的设备,但我愿意修改 BusyBox 代码。
通过向 udhcpd.conf 添加一个选项,我可以轻松实现 DHCP 服务器限制,我称之为chaddr_filter
,其中包含服务器应检查“客户端硬件地址 (chaddr)”的通配符 MAC 地址。这似乎工作得很好,服务器在为我自己的设备提供服务时忽略了来自其他设备的任何 DHCP 请求。
由于 DHCP 数据包中缺少“服务器硬件地址”字段,客户端过滤成为更大的挑战。
所以这是我的问题:
将服务器的 MAC 传递给 udhcpc 客户端的最佳方式是什么?
目前看起来没有从 DHCP 服务器传递的包含服务器 MAC 的字段或选项(看起来我无法从以太网层读取它)。我想保持符合标准,因此我正在研究可能用于此目的的潜在 DHCP 选项。
我希望我可以使用“选项 54:服务器标识符”,但 RFC 将其定义为 IP 地址。
我正在考虑将服务器的 MAC 放在“选项 60:类标识符”或“选项 43:供应商特定信息”中,有什么理由不应该这样做吗?有没有更好的领域呢?
我期待任何建议。