![选项 82 和 dhcpd。第二台计算机“无免费租约”](https://linux22.com/image/485788/%E9%80%89%E9%A1%B9%2082%20%E5%92%8C%20dhcpd%E3%80%82%E7%AC%AC%E4%BA%8C%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E2%80%9C%E6%97%A0%E5%85%8D%E8%B4%B9%E7%A7%9F%E7%BA%A6%E2%80%9D.png)
网络中有 DHCP 服务器(FreeBSD 7.2 上的 isc-dhcpd-server-3.0),它通过选项 82 为每个用户的每个交换机端口提供一个 IP
当用户断开一台计算机的连接并连接另一台计算机(即具有不同 MAC 地址的笔记本电脑)时,就会出现问题,然后 DHCPD 会将“...network net1:无免费租约”写入日志,因为租约文件中记录了此 IP 已由另一台 MAC 拥有。第二台计算机只有在默认租约时间(即 IIRC 最少 10 分钟,3 分钟后他通常会致电支持)或删除 dhcpd.leases 文件并重新启动 dhcpd 后才会拥有其 IP。
有没有办法完全关闭租约,因为我们在交换机端口 IP 之间有严格的绑定?
答案1
在 $former_employer,我修改了 OpenBSD dhcpd 以理解选项 82 并直接根据该选项进行地址分配。根据政策,“如果您通过连接 X 接入,则您已将地址分配给 X,如果您使用交换机连接多台计算机,那是您自己的问题”,然后只需根据该地址进行直接分配即可。
如果您开始认真考虑选项 82 分配,那么这可能值得一试。虽然不太难,但也不是一件小事。
答案2
我唯一能想到的办法就是将租约时间设置得非常短。你试图做的事情实际上与 DHCP 的初衷完全相反,所以不要指望有任何简单、无痛且实际有效的答案。
答案3
一个选项是鼓励用户在断开连接之前释放 DHCP 租约。我意识到这是一种变通方法,而不是解决方案,并且可能需要一些用户培训才能生效!
在 Windows 上,您可以使用命令“ipconfig /release” - 尽管这需要提升的权限,因此像 CPAU 这样的工具可能会有用。
在 FreeBSD 或 Linux 下,“dhclient -r”(必须运行 ISC dhclient)是释放命令。如果您使用 dhcpcd,“dhcpcd -k”应该会发送释放数据包。不过,在运行 NetworkManager 时,我还没有让它工作。同样,这些命令是特权操作。