Background info:
我有一套专有的嵌入式Linux网络设备,其中一个将配置为DHCP服务器,其余的将是DHCP客户端 .
我需要让客户端设备只接受来自服务器设备的DHCP租约,忽略同一LAN上其他DHCP服务器提供的任何其他租约 . 同样,我需要使服务器设备仅向这组客户端提供DHCP请求,忽略可能出现在未知网络环境中的任何其他DHCP请求 . 本质上,我需要能够在已经有DHCP服务器的网络环境中为我自己的设备提供DHCP服务 .
我的所有设备都有相同的MAC地址的前半部分,我打算用它作为过滤器 .
我正在使用包含在BusyBox中的udhcpc和udhcpd,并且由于存储空间有限,我试图避免将任何其他DHCP客户端/服务器包添加到我的设备,但我愿意修改BusyBox代码 .
我通过向udhcpd.conf添加一个选项来实现DHCP服务器限制没有问题,我将其命名为 chaddr_filter
,其中包含一个通配符MAC地址,服务器应检查"Client Hardware Address (chaddr)" . 这似乎工作正常,服务器在服务我自己时忽略来自其他设备的任何DHCP请求 .
由于DHCP数据包中缺少“服务器硬件地址”字段,客户端过滤结果是一个更大的挑战 .
So here's my question:
's the best way to pass my server'的MAC到我的udhcpc客户端?
目前看起来没有从包含服务器MAC的DHCP服务器传递的字段或选项(看起来我不能从以太网层读取它) . 我想保持符合标准,所以我正在寻找可能用于此目的的潜在DHCP选项 .
我希望我可以使用“选项54:服务器标识符”,但RFC将其定义为IP地址 .
我正在考虑将服务器的MAC放在“选项60:类标识符”或“选项43:供应商特定信息”中,是否有理由不这样做?这有更好的领域吗?
我期待着任何建议 .
2 回答
取自wikipedia
因此,您可以在客户端上过滤端口68 / udp上的传入数据包,只接受来自前半部分良好的mac地址的数据包 .
仅供参考我通过使用
brctl
和ebtables
实用程序来过滤客户端上感兴趣的数据包,从而实现了预期的效果 .