首页 文章

为DHCP客户端提供DHCP服务器的MAC [关闭]

提问于
浏览
0

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 回答

  • 0

    取自wikipedia

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

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

  • 1

    仅供参考我通过使用 brctlebtables 实用程序来过滤客户端上感兴趣的数据包,从而实现了预期的效果 .

相关问题