为什么 DHCP 服务器需要静态 IP 地址?

kev*_*vin 8 windows static-ip dhcp-server

我正在使用虚拟机试验各种网络设置。当我在 Windows Server 上设置 DHCP 角色时,它需要一个静态 IP。从技术角度来看,我无法理解为什么这是必要的。

我对DHCP的理解是,一个客户端在网络上广播一个DHCP Discovery请求,网络上的任何设备都可以响应。一个 DHCP 服务器因此需要一个 IP 地址,但为什么这个 IP 需要是静态的?DHCP 服务器可以在别处获得它的地址,并且只要它一个 IP ,它仍然可以响应广播。

例如

  • 服务器 A服务器 B客户端 X都连接到同一台交换机
  • 服务器 A为 10.0.0.1,服务于 10.0.0.X/24
  • 服务器 A配置为仅通过 MAC 过滤将 IP 提供给服务器 B
  • 服务器 B服务器 A获取其 IP ,因此它位于 10.0.0.X/24
  • 服务器 B服务于 10.0.1.X/24
  • 客户端 X连接,并从服务器 B获取 IP

当然,一旦客户端 X服务器 B获得 IP ,它将无法直接联系服务器 B,因为它们位于不同的子网上。但这不是问题 - DHCP 请求(最初)是广播,因此交换机上的每个人都会收到它。

无视一个管理观点,为什么我不能有

  • 具有静态 IP 的主 DHCP 服务器,它只为其他 DHCP 服务器提供服务
  • “辅助”DHCP 服务器的地址范围
  • 从“辅助”DHCP 服务器获得的客户端地址范围

DHCP 服务器必须具有静态 IP是否存在技术原因?

Zor*_*che 9

DHCP 服务器必须有一个配置的 IP 地址,以便它可以知道哪些范围本地连接到物理接口,哪些范围只能通过 DHCP 中继服务。

忽略管理的观点,

我很抱歉,但我认为尝试挥手而忽略有关运行网络的实际问题是愚蠢的。获取有效的 IP 地址在大多数网络中至关重要。您永远不会希望您的 DHCP 服务器出现故障,因为它无法获得自己的有效地址。软件和协议旨在在常见的实际情况下工作。你所描述的似乎创造了很多地方让事情失败而几乎没有或没有真正的收益

如果您真的想对 DHCP 服务器进行某种动态配置,您可能应该考虑使用配置管理系统来强制 DHCP 服务器上的设置,而不是尝试使用 DHCP 来配置您的 DHCP 服务器。

  • 那么单个 DHCP 服务器可以有多个作用域。因此,您可以在单个服务器上为这两个子网配置作用域。DHCP 服务器只能响应具有与本地子网关联的范围的广播请求。它通过查看分配的本地地址来确定这一点。作为保护措施,大多数 DHCP 服务器都要求这是静态的。在您的示例中,如果您的 DHCP 服务器碰巧从恶意 DHCP 服务器获取 DHCP 地址,您的网络会发生什么情况? (2认同)
  • @Zoredache 关于您的 DHCP 服务器从流氓 DHCP 服务器获取地址(或根本无法获取地址)的评论是关键,我想说。您无法在错误的基础上构建强大的网络堆栈。 (2认同)

Nab*_*ane 6

我对DHCP的理解是,一个客户端在网络上广播一个DHCP Discovery请求,网络上的任何设备都可以响应。

客户端也可以发起单播DHCP请求,更新请求是以单播方式发起的,所以客户端直接向DHCP Server发起请求。如果DHCP改变了他原来的IP地址怎么办?更新将失败,下一个请求将在广播中进行。这不是优化网络流量的行为。

微软:

续订租约 当原始租约时间(称为 T1)已过 50% 时,DHCP 客户端首先尝试续订其租约。此时,DHCP 客户端向最初授予其租用权的 DHCP 服务器发送单播 DHCPRequest 消息。如果服务器可用,并且租约仍然可用,则服务器以单播 DHCPAck 消息响应并续订租约。

来源

国际标准委员会:

Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:0c:29:ac:18:75
Sending on   LPF/eth0/00:0c:29:ac:18:75
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 << First request
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPOFFER from 10.0.0.253
DHCPACK from 10.0.0.253
bound to 10.0.0.6 -- renewal in 133 seconds.



DHCPREQUEST on eth0 to 10.0.0.253 port 67 << Renewal
DHCPACK from 10.0.0.253
bound to 10.0.0.6 -- renewal in 119 seconds.
DHCPREQUEST on eth0 to 10.0.0.253 port 67
DHCPACK from 10.0.0.253
bound to 10.0.0.6 -- renewal in 118 seconds.
Run Code Online (Sandbox Code Playgroud)

然而,一旦租用被授予,未来的 DHCP DHCPREQUEST/RENEWAL 消息将直接单播到 DHCP 服务器

来源