我正在与一位同事就网络环境中服务器上使用 DHCP 的理由和反对理由展开“激烈”辩论。网络环境具体来说是一个相对较小的网络,但根据我的经验,最好将服务器置于静态地址上,尤其是对于远程管理等情况。
我查看了一下,没有找到支持或反对在服务器上分配动态地址的具体原因,所以我想我会在这里问一下大家。
我的同事主张使用 DHCP 分配服务器地址,以便于管理,并表示如果地址发生变化,您不必手动更改服务器 IP。我对这个回答表示怀疑。
出于管理目的,这个网络很小,由于静态设备很少,更改其 IP 没什么大不了的。
有什么建议、想法或意见吗?
答案1
虽然有些服务器功能必须具有本地定义的 IP,但我非常喜欢使用 DHCP 作为服务器地址。
首先,正如其他人所指出的,您可以(并且应该)使用 DHCP 来提供静态地址。假设使用 Linux,您希望在 dhcpd.conf 中执行此操作:
host server {
option host-name "server.example.com";
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address server.example.com;
}
并在您的 DNS 区域文件中为 分配一个 IP server.example.com
。
优点:
- DNS 区域文件现在是所有 IP 分配的“唯一真实来源”。可以轻松查找错误(重复的 IP、拼写错误),并确保每个人都能准确无误地找到服务器的 IP 地址
- 网络基础设施的变更可以轻松传播。推出备份 DNS 服务器?只需将其添加到 DHCP 配置文件中,所有系统在续订租约时都会选择它。
- 从定义上来说,对计算机 IP 和计算机 DNS 条目的更改不能不同步。将计算机移至新子网?只需在一个位置更改 IP,一切就绪。
缺点:
- 您增加了一个重大故障点。使用备用 DHCP 服务器缓解此问题。较长的租约时间也会有所帮助。
- 生成树学习模式会阻止 DHCP 请求,这会显著延长机器启动时间,甚至导致 DHCP 超时。使用快速端口关闭选定端口上的生成树。顺便说一句,这对于工作站来说也是个好主意。
答案2
cfengine
为什么没有提出类似或和静态 IP 地址的组合puppet
?从总体来看,这是两者的最佳结合——集中配置,无需担心关键路径服务的丢失。它是否提供了一种搞砸事情的集中方式?是的,但 DHCP 也是如此。
在我工作过的大型安装中,这一切都是通过托管启动和cfengine
……的组合来实现的,而且效果非常好。此外,大多数(如果不是全部)VPS 提供商都使用配置工具来计算 IP 地址并在创建的实例中静态设置它们——这是配置管理 + 静态 IP 地址的另一个示例。
对于足够大的安装,您应该使用配置管理并接近完全自动化部署,更不用说变更控制程序了,这些程序已经明确说明(理想情况下)。
答案3
我认为将 DHCP 用于服务器的最大问题是,如果出于某种原因,DHCP 服务出现故障,您的服务器可能会丢失其 IP 地址。除此之外,还存在通过控制服务器的 DHCP 租约(控制默认网关)对服务器进行中间人攻击的安全风险。而且,正如其他发帖者所说,某些服务器/服务需要静态 IP 地址(域控制器就是一个典型的例子)。
答案4
您可以充分利用这两种方法:使用 DHCP 为所有工作站保留一个范围,并为每个服务器的 MAC 地址固定一个 IP。