假设我有一个网络10.0.0.0/24,以及一个在该网络下分配地址的 DHCP 服务器。
我的问题很简单——我有一个单独的盒子,它也可以充当 DHCP 服务器。但是,我只希望它在主 DHCP 服务器关闭时提供地址,实际上充当“后备”DHCP 服务器。
回退 DHCP 服务器的概念是否存在?如果是这样,我将如何在备份服务器上设置一个?我最好的做法是持续 ping 主服务器,并在出现某些网络故障时启用备份?
这似乎有点脏,那么有没有更好的解决方案?
假设我有一个网络10.0.0.0/24,以及一个在该网络下分配地址的 DHCP 服务器。
我的问题很简单——我有一个单独的盒子,它也可以充当 DHCP 服务器。但是,我只希望它在主 DHCP 服务器关闭时提供地址,实际上充当“后备”DHCP 服务器。
回退 DHCP 服务器的概念是否存在?如果是这样,我将如何在备份服务器上设置一个?我最好的做法是持续 ping 主服务器,并在出现某些网络故障时启用备份?
这似乎有点脏,那么有没有更好的解决方案?
编辑:是的。Cown 是对的——这更像是一个服务器端的问题......
协议本身没有这样的东西。
当(或任何)DHCP 服务器通过 DHCPDISCOVER 消息听到客户端的广播(直接或通过 DHCP 中继服务)时,它可以选择使用 DHCPOFFER 消息进行响应。多个服务器可以各自发送它们的 DHCPOFFER。完全由请求的客户端来选择它,它会在 DHCPREQUEST 消息中公开它的选择,方法是在消息的相应字段中设置选择的 DHCP 服务器的地址。通常,未被选中的服务器将保持安静,并将他们刚刚提供的地址返回给他们的池。
在 DHCP 服务器之间设置故障转移机制可能有点过分。此外: ping 服务器以确定其活跃性会产生非常有限的准确性的结果。服务器的 IP 堆栈可能一直响应 ping 请求,但这并没有说明该服务器上运行的 DHCP 服务,它可能已关闭、混乱、配置错误、地址不足……
要让多个 DHCP 服务器为来自单个子网的请求提供服务,基本上有两种方法可以解决此问题:
使用一种产品,使所有相关服务器实例的租出地址状态保持同步,这样如果一台服务器出现故障,另一台服务器将不会提供已被另一台服务器租用给客户端的地址。
保持服务器实例独立运行,同时确保它们服务的地址范围不重叠。举个例子:服务器 A 将提供来自 10.0.0.[64-127] 的地址,服务器 B 提供来自 10.0.0.[128-191] 的地址。子网的其余参数和选项(路由器地址、网络地址、子网掩码、名称服务器、引导服务器、NTP 服务器等)在两台服务器上配置相同。[1]
最终,在这两种情况下,两台服务器都会 DHCPOFFER,但客户端只会 DHCPREQUEST 一个。在第一种情况下,只有一个服务器会 DHCPACK,但两个服务器都会知道租约(通过它们的专有同步机制)。在第二种情况下,每个服务器将只知道并跟踪自己的租约。
[1] 除此之外,您可能希望设置一个足够长的 DHCP 租约时间,以涵盖服务器的修复时间加上一些时间,以便客户端的租约不会过期,并且它们不必重新编号,而给他们地址的服务器正在恢复。