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


8

我正在尝试使用VM进行各种网络设置。在Windows Server上设置DHCP角色时,它需要一个静态IP。从技术的角度来看,我很难理解为什么这样做是必要的。

我对DHCP的理解是,客户端在网络上广播DHCP发现请求,网络上的任何设备都可以响应。DHCP服务器因此需要一个IP地址,但是为什么该IP需要是静态的呢?只要 IP 地址,DHCP服务器就可以在其他位置获取其地址,并且仍然可以响应广播。

例如

  • 服务器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 是否有技术原因?

Answers:


6

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

客户端也可以发出单播DHCP请求,更新请求以单播发出,因此客户端直接请求DHCP服务器。如果DHCP更改了其原始IP地址怎么办?续订将失败,并且下一个请求将通过广播发出。这不是一种可以优化网络流量的行为。

微软:

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

资源

ISC:

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.

但是,一旦授予租约,以后的DHCP DHCPREQUEST / RENEWAL消息将直接单播到DHCP服务器。

资源


9

DHCP服务器必须具有配置的IP地址,以便它可以知道哪些作用域本地连接到物理接口,以及哪些作用域只能通过DHCP中继进行服务。

忽略管理的观点,

很抱歉,但是尝试挥手告别并忽略有关运行网络的实际问题很愚蠢。在大多数网络上,获取有效的IP地址至关重要。您永远不会希望DHCP服务器失败,因为它无法获得自己的有效地址。软件和协议旨在在常见的实际情况下工作。您所描述的内容似乎为失败失败创造了多个位置,而收效甚微或没有收获

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


您能否添加更多有关静态IP地址与拣配范围之间的关系的说明?如果我在一个物理网络中有两个子网,则不需要DHCP中继。
凯文(Kevin)2015年

2
一台DHCP服务器可以具有多个作用域。因此,您可以在单个服务器上为这两个子网配置范围。DHCP服务器只能响应具有与本地子网关联的范围的广播请求。它通过查看分配的本地地址来确定。作为一种保护措施,大多数DHCP服务器都要求它是静态的。如果您的DHCP服务器恰巧从恶意DHCP服务器获取DHCP地址,那么在您的示例中,您的网络将会发生什么情况?
Zoredache'3

因此,正确地说:“在没有中继的情况下,在10.0.0.X / 24上请求DHCP服务器提供10.0.1.X / 24的服务是令人困惑的,因为子网是用来隔离网络的,并且此配置意味着中继是必要?”
凯文(Kevin)2015年

2
我想说,@ Zoredache关于您的DHCP服务器从恶意DHCP服务器获取地址(或根本无法获取地址)的评论很关键。您不能在错误的基础上构建强大的网络堆栈。
罗伯·摩尔

1

从技术上讲,DHCP服务器必须具有在初始发现数据包之后发送的数据包的已知 IP地址。通常在启动时需要知道此地址,因此这几乎是静态的。它不必(IIRC)必须在同一子网中,DHCP中继才能工作,但是,如果没有到要分配的子网的路由,它就不会工作。

如果您确实想这样做,则可以使用虚拟接口来安排一些操作,以便物理适配器(服务器B)在线路上的两个子网(一个DHCP和另一个静态)上都具有IP地址。

像Zoredache一样,我建议您应该坚持使用一种DHCP服务器设置。大多数DHCP服务器将允许您以各种方式对设备进行分类(例如:MAC地址的一部分),并将它们分配给子网的不同部分。然后,您可以为这些小节提供不同的防火墙规则。

安全性没有区别,因为在两种情况下任何客户端都可以设置其自己的静态地址。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.