想象一下,我们有一个如图所示的网络。一个第 2 层网络上有六个主机,没有 VLAN。网络应该被分成两个子网,每个子网有一个 DHCP 服务器。DHCP 服务器具有固定的 IP 地址,因此它们显然知道它们属于哪个子网。
然后新的客户端被插入。他们不知道他们应该在哪个子网中,并将他们的 DHCPDISCOVER 发送到以太网广播 255.255.255.255,所以它转到两个 DHCP 服务器。两台服务器都提供报价。现在我的问题是:客户怎么知道他应该接受哪个 DHCPOFFER?
Faz*_*r87 26
最简单的答案 - 先到先得。
如果您有多个 VLAN,并且 10.10.10.0/24 与 10.10.20.0/24 位于不同的 VLAN 上,则广播不会跨越 VLAN。
如果 DHCP 服务器位于客户端的单独 VLAN 上,则 VLAN 之间路由接口上的 iphelper 会将广播定向到正确的位置。
在您的场景中,您在同一 VLAN(或没有)中有 2 个独立的网络为不同的子网提供服务 - 这是一场竞赛。
DHCP 使用以下事务提供服务:
所有这些都发生在服务器的 UDP 端口 67 和客户端的 68 端口上。
一旦到达第 2 步 - 客户端将停止“监听”其他 DHCP 服务器的响应 - 它很高兴与第一个服务器打交道并给予一些关注。
作为旁注 - 实际上有一系列众所周知的 DoS(拒绝服务)攻击滥用此权利。攻击者插入一个设备,该设备响应并发送 DHCPOFFER 数据包,然后在被问到时不发送 DHCPACK……一遍又一遍。还有另一种 DoS 攻击,其中“假”DHCP 服务器提供无法路由或与其他 IP 冲突的地址,它被嗅探到扰乱网络。
@Fazer87的现有答案在实践中大致正确,我建议投票并接受它。这个答案更精确地探讨了一个小细节。
两个 DHCP 服务器都可以使用 DHCPOffer 消息进行响应。
DHCP 客户端可以在“先到先服务”的基础上接受它们。但是,不需要采取这种方法。
RFC2131规定:
客户端从一台或多台服务器接收一个或多个 DHCPOFFER 消息。客户端可以选择等待多个响应。客户端根据 DHCPOFFER 消息中提供的配置参数,选择一台服务器来请求配置参数。
因此,如果第二个 DHCP 服务器提供了更长的 IP 地址预留,或者提供了另一个没有的时间服务器,或者可能有一个客户端已被编程为喜欢的自定义字段,它可能会接受第二个提议。
通常,“先到先得”的方法将为您提供未经过多次跨设备跳转(BOOTP 重播)的优惠,因此如果您没有理由关心,这是一个很好的协议。
我在一个项目中,自定义设备更喜欢 DHCPOffer,其中包含一个 TFTP 服务器,可以在其中找到更新的固件。
| 归档时间: |
|
| 查看次数: |
6398 次 |
| 最近记录: |