Networking 提供DHCP服务器';s MAC到DHCP客户端

Networking 提供DHCP服务器';s MAC到DHCP客户端,networking,embedded-linux,dhcp,Networking,Embedded Linux,Dhcp,背景信息: 我有一套专有的嵌入式linux网络设备,其中一个将配置为DHCP服务器,其余将配置为DHCP客户端 我需要让客户端设备只接受来自服务器设备的DHCP租约,忽略同一LAN上其他DHCP服务器提供的任何其他租约。类似地,我需要使服务器设备只向这组客户端提供DHCP请求,忽略可能出现在未知网络环境中的任何其他DHCP请求。基本上,我需要能够在可能已经有DHCP服务器的网络环境中为我自己的设备提供DHCP服务 我的所有设备都具有相同的MAC地址的前半部分,我打算将其用作过滤器 我正在使用Bu

背景信息:

我有一套专有的嵌入式linux网络设备,其中一个将配置为DHCP服务器,其余将配置为DHCP客户端

我需要让客户端设备只接受来自服务器设备的DHCP租约,忽略同一LAN上其他DHCP服务器提供的任何其他租约。类似地,我需要使服务器设备只向这组客户端提供DHCP请求,忽略可能出现在未知网络环境中的任何其他DHCP请求。基本上,我需要能够在可能已经有DHCP服务器的网络环境中为我自己的设备提供DHCP服务

我的所有设备都具有相同的MAC地址的前半部分,我打算将其用作过滤器

我正在使用BusyBox中包含的udhcpc和udhcpd,由于存储可用性有限,我试图避免向我的设备添加任何其他DHCP客户端/服务器包,但我愿意修改BusyBox代码

通过向udhcpd.conf添加一个选项,我在实现DHCP服务器限制时没有遇到任何问题,我称之为
chaddr\u filter
,其中包含一个通配符的MAC地址,服务器应根据该地址检查“客户机硬件地址(chaddr)”。这似乎工作得很好,服务器在为我自己的设备提供服务时会忽略来自其他设备的任何DHCP请求

由于DHCP数据包中缺少“服务器硬件地址”字段,客户端过滤是一个更大的挑战

所以我的问题是:

将服务器的MAC传送到udhcpc客户端的最佳方式是什么

目前,似乎没有从包含服务器MAC的DHCP服务器传递任何字段或选项(看起来我无法从以太网层读取)。我希望保持符合标准,因此我正在寻找可能用于此目的的DHCP选项

我希望可以使用“选项54:服务器标识符”,但RFC将其定义为IP地址

我正在考虑将服务器的MAC放在“选项60:类标识符”或“选项43:供应商特定信息”中,有什么理由我不这样做吗?有更好的领域吗

我期待任何建议。

摘自

DHCP使用IANA为BOOTP:destination分配的相同两个端口 UDP端口67用于向服务器发送数据,UDP端口68用于发送数据 给客户。DHCP通信本质上是无连接的


因此,您可以在客户端上筛选端口68/udp上的传入数据包,只接受来自前半部分良好的mac地址的数据包。

FYI通过使用
brctl
ebtables
实用程序筛选客户端上感兴趣的数据包,可以达到预期效果。

谢谢,这是一个好建议,我确实有“iptables”可用,但我还没有找到如何使用它来按MAC地址过滤。我会认为这是一个潜在的选择,并会给它一些想法。