我正在使用虚拟机尝试各种网络设置。当我在 Windows Server 上设置 DHCP 角色时,它需要静态 IP。我无法理解为什么从技术的观点看法。
我对 DHCP 的理解是,客户端在网络上广播 DHCP 发现请求,网络上的任何设备都可以响应。因此,DHCP 服务器需要一个 IP 地址,但为什么这个 IP 需要是静态的?DHCP 服务器可以在其他地方获取其地址,并且只要它有一个 IP。
例如
- 服务器 A,服务器 B和客户 X都连接到同一个交换机
- 服务器 A为 10.0.0.1 并提供 10.0.0.X/24
- 服务器 A配置为仅向服务器 B通过 MAC 过滤
- 服务器 B获取 IP 地址服务器 A,因此它存在于 10.0.0.X/24 上
- 服务器 B服务 10.0.1.X/24
- 客户 X连接并获取 IP服务器 B
当然,一旦客户 X获取 IP 来自服务器 B,它将无法联系服务器 B因为它们位于不同的子网中,所以直接发送。但这不是问题 - DHCP 请求(最初)是广播,因此交换机上的每个人都会收到它。
忽略管理的观点,为什么我不能
- 具有静态 IP 的主 DHCP 服务器,它仅为其他 DHCP 服务器提供服务
- “辅助” DHCP 服务器的地址范围
- 从“辅助” DHCP 服务器获取的客户端地址范围
有没有技术的DHCP 服务器必须有静态 IP 吗?
答案1
我对 DHCP 的理解是,客户端广播在网络上发出 DHCP 发现请求,网络上的任何设备都可以响应。
客户端也可以发出单播 DHCP 请求,续订请求以单播方式发出,因此客户端直接向 DHCP 服务器发出请求。如果 DHCP 更改了其原始 IP 地址怎么办?续订将失败,下一个请求将以广播方式发出。这不是一种可以优化您的网络流量的行为。
微软:
续订租约 DHCP 客户端在原始租约时间(称为 T1)已过 50% 时,首先尝试续订租约。此时,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.
但是,一旦租约被授予,未来的 DHCP DHCPREQUEST/RENEWAL 消息将直接单播到 DHCP 服务器
答案2
DHCP 服务器必须配置 IP 地址,以便它可以知道哪些范围本地连接到物理接口,哪些范围只能通过 DHCP 中继提供服务。
忽略管理的观点,
抱歉,但我认为试图置之不理并忽略运行网络的实际问题是愚蠢的。获取有效的 IP 地址对大多数网络来说都至关重要。您绝不希望 DHCP 服务器因为无法获取自己的有效地址而失败。软件和协议旨在在常见的实际情况下工作。您所描述的似乎创造多个地方让事情失败而几乎没有或根本没有实际收益。
如果您确实想要对 DHCP 服务器进行某种动态配置,您可能应该考虑使用配置管理系统来强制执行 DHCP 服务器上的设置,而不是尝试使用 DHCP 来配置您的 DHCP 服务器。
答案3
从技术上讲,DHCP 服务器必须具有已知初始发现数据包之后发送的数据包的 IP 地址。此地址通常在启动时需要知道,因此几乎是静态的。它不必(如果我没记错的话)位于同一子网中,DHCP 中继才能工作,但如果没有到其分配的子网的路由,它将无法工作。
如果您真的想这样做,您可能可以使用虚拟接口来安排某些事情,以便您的物理适配器(服务器 B)在您的线路上的两个子网上都有 IP 地址(一个是 DHCP,另一个是静态的)。
和 Zoredache 一样,我建议你最好只使用一个 DHCP 服务器。大多数 DHCP 服务器允许你以各种方式对设备进行分类(例如:MAC 地址的部分),并将它们分配给子网的不同部分。然后,你就可以给这些子部分提供不同的防火墙规则。
安全性没有区别,因为任何客户端都可以在两种情况下设置自己的静态地址。