这是关于冗余DHCP服务器的典型问题 。
是否有可能在同一个LAN上有多个DHCP服务器? 这样做的含义是什么?
我假定了DHCP的基本知识,以及如何在此答案中configurationDHCP服务器,但在讨论同一networking上的多个DHCP服务器之前,首先让我们快速重新设置客户端如何接收IP地址从最基本的DHCP。
发现 – 客户端在其连接的本地网段上广播消息,以发现可用的DHCP服务器。
优惠 – 一个适当configuration的DHCP服务器接收来自客户端的请求,并从其可用地址池中提供一个地址。
要求 – 客户回复要约,要求在要约中收到的地址。
确认 – 服务器确认请求,标记其地址池中使用的地址,并通知客户地址租约有效的时间以及所需的任何其他信息。
网段上的任何设备都可以是DHCP服务器; 它不必是networking上的路由器或域控制器或任何其他“特殊”设备。
当您的networking上的设备首先请求一个IP地址或到达其租约结束时(或者强制他们检查他们的租约仍然有效),他们将只是广播一个DHCP服务器的请求,并将接受第一个DHCP服务器回复 。 在我们查看下面多个DHCP服务器的选项时,记住这一点很重要。
如果您有几个VLAN或物理网段分隔成不同的子网,并且您想为所有这些子网中的设备提供DHCP服务,那么有两种方法可以做到这一点。
如果将路由器/第3层交换机隔离开来,可以充当BOOTP / DHCP中继代理,则可以继续将所有DHCP服务器保留在networking的一个或两个中央部分,并将DHCP服务器configuration为支持多个地址范围。 为了支持这一点,您的路由器或第3层交换机必须支持RFC 1542第4节中介绍的BOOTP中继代理规范。
如果您的路由器不支持RFC 1542 BOOTP中继代理,或者您的某些网段在地理上分散在慢速链路上,则需要在每个子网中放置一个或多个DHCP服务器。 这个“本地”DHCP服务器将只服务于它自己的本地网段的要求,并且它与其他DHCP服务器之间没有交互。 如果这是你想要的,那么你可以简单地将每个DHCP服务器configuration为一个独立的服务器,并将地址池的细节configuration为自己的子网,而不用担心networking其他部分的其他DHCP服务器。 这是在同一个networking上有多个DHCP服务器的最基本的例子。
当大多数人询问“同一networking上的多个DHCP服务器”时,他们通常要求的是这个; 他们希望多个DHCP服务器向客户端发出相同范围的networking地址,以便在多个服务器之间分配负载,或者在一台服务器处于脱机状态时提供冗余。
这是完全可能的,但需要一些思考和计划。
从“networkingstream量”的angular度来看,本答案开始部分概述的DORA过程解释了在一个网段上可以存在多于一个的DHCP服务器; 客户端只是广播一个发现请求,而第一个DHCP服务器响应一个提议就是“胜利者”。
从服务器的angular度来看,每个服务器都会有一个地址池,可以发给客户端,知道它的地址范围。 为同一子网提供服务的DHCP服务器不应该有一个“共享”范围,而应该有一个“分割”范围。
换句话说,如果你有一系列的DHCP地址发给192.168.1.100到192.168.1.200的客户端,那么这两个服务器应该被configuration为服务该范围的不同部分,所以第一个服务器可能使用该范围的一部分192.168.1.100到192.168.1.150,然后第二台服务器会发出192.168.1.151到192.168.1.200。
微软最近的DHCP实现有一个向导来分割你的范围,就像这个很容易做的一样,在Technet的一篇文章中描述,即使你没有使用微软的DHCP实现也是值得一看的,因为它说明了有关的原理这里相当好,这个答案已经够长了。
有一点你会听到,最好的做法是分割一个DHCP作用域的80/20规则,这意味着一个服务器将为该作用域的80%的地址提供服务,而另一个DHCP服务器则被有效地“保留”将提供20%的地址。
分离地址80/20的想法是因为可用地址的80%应该适合于子网上所需的所有地址,并且DHCP租约通常发布几天; 所以如果你的主DHCP服务器停机了几个小时,那么这个子网上超过20%的机器将不可能在停机时间内更新他们的地址,这使得20%的地址池足够了。
这仍然是合理的build议,但它假设两件事情:
现在(从我的例子中可以看出),我倾向于select50/50的分割,我认为这是对上述点的更现实的回答。
在DHCP服务器上创build范围时需要考虑的另一件事是将全范围configuration到每个服务器中,而不包括其他DHCP服务器给出的范围。 这有利于在每台DHCP服务器上“自行logging”整个子网的DHCP信息,这样可以提高其他人了解正在进行的操作的清晰度,以及在某台DHCP服务器处于脱机状态有一段时间,您可以暂时重新configuration其他服务器上的排除范围,以便让其收拾松弛。
最后,值得记住的是,您可以将上面讨论的原则结合在一起 – 您可以将所有DHCP服务器放置到一个或多个“中央服务器”VLAN中,并在所有路由器上使用BOOTP中继代理发送来自非常大的分段networking到一个集中的DHCP服务(这是我所做的,见下文)。 或者你可以在整个networking中分配DHCP服务器,在本地子网中有一个“主”DHCP服务器,在“附近”网段有一个“预留”DHCP服务器,提供less量的地址作为备份 – 你甚至可以两个DHCP服务器在自己的网段中configuration为彼此提供80/20范围的地址。 最明智的select将取决于你的物理和逻辑networking如何映射到彼此。
几年前,我采用了这种方法,为中小型(500用户)networking带来了相当大的好处。 DHCP不再是单点故障。 通过永久关联MAC和IP地址,我们确保两台DHCP服务器对每个DHCP请求都给予相同的响应。 了解每个networking资产的IP地址也简化了networkingpipe理,DNS可以运行在同一个数据库上。 该系统使用Internet软件公司的BIND和DNS,相关的脚本可以在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