初始数据:
1.两个 DHCP 服务器:
第一的: 描述:Debian GNU/Linux 6.0.10 (squeeze) 发行版:6.0.10 代号:squeeze
第二 NAME=“Debian GNU/Linux” VERSION_ID=“8” VERSION=“8 (jessie)” ID=debian
2.一个网络,比方说 192.168.0.0/24
3.两个接口 192.168.0.1 和 192.168.0.2,每个 DHCP 服务器一个。两者都在工作并提供来自同一个子网的地址,但第一个 dhcp 的池是 .10-.20 网关 ip.1,第二个 ip.21-.31 的池是网关 ip.2
4.任务 - 该网络中的设备应从 DHCP #2 而不是 DHCP #1 接收地址。为什么这样?主要任务是从一个系统迁移到另一个系统,因此我不能简单地断开所有设备的连接 - 其中那些正在工作的设备必须保持工作状态。这是酒店里的电视迁移。
5.我尝试过什么?我的想法是手动增加对来自客户端的 DHCP 请求的 DCHP #1 的响应延迟。
6.DHCP #1 上使用的命令: tc qdisc add dev eth1 root 句柄 1: prio tc qdisc add dev eth1 Parent 1:3 句柄 30: netem 延迟 500ms tc filter add dev eth1 protocol ip Parent 1:0 prio 3 u32 \ match ip sport 67 0xffff flowid 1:3 tc 过滤器添加 dev eth1 协议 ip 父级 1:0 prio 3 u32 \ 匹配 ip dport 68 0xffff flowid 1:3
7.结果:从设备 ping DHCP #1,我看到延迟超过 500 毫秒,但是当我执行设备的反驳并在两台 DHCP 服务器上发出“tcpdump -n -i eth1 portrange 67-68”命令或命令“tail -f”时/var/log/syslog”了解更多详细信息,我发现 DHCP #1 的回复速度比 DHCP #2 更快。
我将非常感谢您的想法和线索、还能做什么或其他解决方案。谢谢你!
答案1
即使 DHCP 服务器不可用,DHCP 服务器发出的 IP 也不会失效。因此,除非故事中有更多内容您没有添加到您的问题中,否则这应该不会太困难。
- 所有设备都从服务器 #1 请求 IP,并通过有效租约(例如 1 小时)获取它。
- 关闭 DHCP 服务器 #1。所有设备仍保留在池 #1 中。
- 50% 的租约到期后(本例中为 30 分钟),设备将尝试续订租约。由于服务器已关闭,续订将失败,但设备将继续使用其有效的池 1 IP 地址。
- 87.5% 的租约到期后(剩余租约 7.5 分钟),客户端将执行 DHCPDISCOVER 并接受新的租约。此时,它应该从 DHCP 服务器 #2 获取有效地址并获取池 2 中的 IP 地址。
- 租约期满后,您的所有客户都应位于 pool2 中。