这是一个关于冗余DHCP服务器的规范问题。


在同一LAN上是否可以有多个DHCP服务器?这样做的含义是什么?


如果有多个DHCP服务器可用怎么办?我的客户如何知道要使用哪个客户?
如何让DHCP服务器为多个子网/网段提供地址?
如何配置多个DHCP服务器为同一子网提供地址。


评论

该问题背后的想法是为所有使我更普通的用户发疯的“我如何拥有一个以上的DHCP服务器”问题给出明确的答案。这有望成为我们的规范答案之一(meta.serverfault.com/questions/1986/…)

#1 楼

我假设基本的知识是DHCP的作用以及如何在此答案中配置您选择的DHCP服务器,但是在我们讨论同一网络上的多个DHCP服务器之前,首先让我们快速回顾一下客户端如何接收IP地址从DHCP最基本的级别。

简单的DHCP使用DORA原理工作。


发现-客户端在与其连接的本地网段上广播消息,以发现可用的消息DHCP服务器。
要约-已正确配置的DHCP服务器从客户端接收请求,并从其可用地址池中为其提供地址。
请求-客户端答复要约,请求接收到的地址
确认-服务器确认请求,将地址标记为在其地址池中使用,并通知客户端该地址租约有效的时间以及所需的任何其他信息。 >
网段上的任何设备都可以是DHCP服务器;它不必是路由器,域控制器或网络上的任何其他“特殊”设备。

当网络上的设备首次请求IP地址或达到其租约期满时(或您强迫它们检查其租约仍然有效),它们只会广播对DHCP服务器的请求,并接受第一台DHCP服务器提供的答复。记住这一点很重要,因为我们在下面查看多个DHCP服务器的选项。

多个DHCP服务器PT 1:跨越多个子网。

如果您有多个VLAN或物理划分为不同子网的网段,并且您想为所有这些子网中的设备提供DHCP服务,那么有两种方法可以做到这一点。


如果分隔它们的路由器/第3层交换机可以充当BOOTP / DHCP中继代理,那么您可以继续将所有DHCP服务器保留在网络的一个或两个中央部分中,并将DHCP服务器配置为支持多个地址范围。为了支持此功能,您的路由器或第3层交换机必须支持RFC 1542第4节中介绍的BOOTP中继代理规范。
如果您的路由器不支持RFC 1542 BOOTP中继代理,或者您的某些网段分散在慢速链路上,那么您将需要在每个子网中放置一个或多个DHCP服务器。此“本地” DHCP服务器将仅满足其自己的本地网段的要求,并且它与其他DHCP服务器之间没有交互。如果这是您想要的,则只需将每个DHCP服务器配置为独立服务器,并为其自己的子网提供地址池的详细信息,而不必担心网络其他部分上的任何其他DHCP服务器。这是在同一网络上具有多个DHCP服务器的最基本示例。

多个DHCP服务器PT 2:服务于同一网段的DHCP服务器。

何时大多数人都问“同一网络上的多个DHCP服务器”,他们通常要求的是这个。他们希望有多个DHCP服务器向客户端发出相同范围的网络地址,以在多个服务器之间分配负载,或者在一个服务器脱机时提供冗余。

这是完全可能的

从“网络流量”的角度来看,此答案开头概述的DORA流程说明了在一个网段中可以有多于一个DHCP服务器的情况。客户端只是广播发现请求,而第一个响应要约的DHCP服务器就是“获胜者”。

从服务器的角度来看,每台服务器都有一个可发布给客户端的地址池,已知其地址范围。服务于同一子网的DHCP服务器不应具有单个“共享”范围,而应具有“拆分”范围。

换句话说,如果要分配给客户端的DHCP地址范围从192.168.1.100到192.168.1.200,则两个服务器都应配置为服务于该范围的不同部分,因此第一个服务器可能会使用范围从192.168.1.100到192.168.1.150的部分,然后第二台服务器将发布192.168.1.151到192.168.1.200。



Microsoft的最新版本在DHCP的实现中,有一个向导可以像这样轻松地拆分您的范围,这在Technet文章中进行了描述,即使您没有使用Microsoft DHCP实现,也可能值得一看,因为它很好地说明了此处讨论的原理而且这个答案已经足够长了。

分割范围–最佳实践

您将听到的作为最佳实践的一件事是分割DHCP的80/20规则作用域,这意味着一台服务器将服务该作用域中80%的地址,而另一台DHCP服务器将服务因此,“预留”将投放20%的地址。

拆分地址80/20的想法是,因为希望80%的可用地址应该足以满足子网中所有所需的地址,并且DHCP租期通常为数天。因此,如果您的主DHCP服务器宕机了几个小时,则该子网上的20%以上的计算机在宕机期间不太可能需要更新其地址,从而使20%的地址池足够。

这仍然是合理的建议,但是它假定了两件事:


您可以足够快地解决“主” DHCP服务器的任何问题,从而避免耗尽备用DHCP服务器上的一小部分地址。
您对负载平衡不感兴趣。 >这些天(从我的示例中可以看到),我倾向于50/50的分割,我认为这是对上述几点的更现实的回答。

在DHCP服务器上创建范围时,要考虑的另一件事是将整个范围配置到每个服务器中,并排除其他DHCP服务器给出的范围。这具有“自动记录”每个DHCP服务器上整个子网的DHCP信息的优势,这将提高其他任何试图了解正在发生的情况的人的清晰度,并且在您的其中一个DHCP服务器处于脱机状态时,一段时间后,您可以临时在另一台服务器上重新配置排除范围,以使其能够吸收余裕。

结合这些想法

最后,值得记住的是,结合以上讨论的原理-您可以将所有DHCP服务器放置到一个或多个“中央服务器” VLAN中,并在所有路由器上使用BOOTP中继代理将所有DHCP请求从一个很大的分段网络发送到集中式DHCP服务(是我的工作,请参见下文)。或者,您可以将DHCP服务器分布在整个网络中,在其本地子网中有一个“主” DHCP服务器,在“附近”网段中有一个“保留” DHCP服务器,提供少量地址作为备份-您甚至可以拥有各自网段中的两个DHCP服务器配置为彼此提供80/20的地址范围。最明智的选择取决于您的物理网络和逻辑网络如何相互映射。



评论


如果划分范围:请记住,应在两个部分上都设置DHCP保留。如果您需要进行频繁的更新,则使它们保持同步可能很麻烦。

–Tonny
2012年7月26日在10:36

您能否详细说明确保主DHCP服务器正在运行时不击中备用DHCP服务器的技术?据我了解,如果从任何一台服务器获得响应的可能性均等,则一旦租约的总数超过预留池大小的两倍,备用服务器就会统计出地址不足。当主DHCP服务器关闭时,这可能会使备用服务器对新客户端毫无价值。

– Niels B.
2014年2月2日在3:25



@NielsB。如果您正在执行类似80/20拆分的操作,则可以设置备用服务器的响应延迟(blogs.technet.com/b/teamdhcp/archive/2009/01/22/…)。我自己也不用打扰,因为我自己使用了50/50分割,但是它可以工作。

–罗布·莫尔
2014年2月2日在9:07

#2 楼

几年前,我对中小型(500个用户)网络采用了这种方法,并获得了很多好处。 DHCP不再是单点故障。通过永久地关联MAC和IP地址,我们确保两个DHCP服务器对每个DHCP请求给出相同的响应。知道每个网络资产的IP地址也可以简化网络管理,并且DNS可以在同一个数据库中运行。该系统使用了Internet Software Corporation的BIND和DNS,并且相关的脚本可以从以下网址下载:https://web.archive.org/web/20121031051901/http://www.pearbright.com/index.php/download/25- dns-dhcp-download。

另一种方法是使用真正的ISC DHCPD故障转移:https://kb.isc.org/article/AA-00502/0/A-Basic-Guide-to -Configuring-DHCP-Failover.html

评论


OP专门要求对此问题提供解释性答案。您可能需要修改答案以扩大答案。

–布伦特·帕布斯特(Brent Pabst)
2012年6月5日12:07

首先,虽然这个答案很短,而且我永远都不会拒绝规范问答集中的更多细节,但我认为它很好,因为它提到了进行DHCP冗余的方法略有不同。

–罗布·莫尔
2012年6月5日15:34



@DJ Pon3我同意:我运行与大型多站点DHCP(尽管VLAN较少)类似的设置,并且对其中的3/4 VLAN使用与Peter Talbot相同的方法。

–Tonny
2012年7月26日上午10:39

链接现在已断开:(

–谢尔盖·弗拉索夫(Sergey Vlasov)
2013年5月1日15:25

@SergeyVlasov该链接目前可以正常使用。 :)

–agfe2
20-2-3在7:38