4. DHCP服务部署与配置实战

DHCP 服务的部署并不只是“装一个软件、开一个服务”这么简单。在企业网络中,DHCP 服务器往往需要同时服务多个 VLAN、多个网段,还要与 DNS、网关、TFTP、NTP 等参数协同下发。本节围绕 Linux 与 Windows 两大平台,讲解 DHCP 服务部署、多作用域配置、中继代理、选项模板以及日志与监控的完整实现路径。

一、Linux 平台部署 ISC DHCP Server

在 Linux 上最常用的 DHCP 服务实现是 ISC DHCP Server(dhcpd)。以 Ubuntu/Debian 为例,安装命令为:

sudo apt update
sudo apt install isc-dhcp-server -y
sudo systemctl enable --now isc-dhcp-server

主配置文件位于 /etc/dhcp/dhcpd.conf,服务监听的网卡在 /etc/default/isc-dhcp-server 中通过 INTERFACESv4 指定。一个典型的多作用域配置如下:

default-lease-time 86400;
max-lease-time 604800;
option domain-name-servers 10.10.0.53, 10.10.0.54;
option domain-name "corp.example.com";

subnet 10.10.10.0 netmask 255.255.255.0 {
  range 10.10.10.100 10.10.10.200;
  option routers 10.10.10.1;
  option subnet-mask 255.255.255.0;
}

subnet 10.10.20.0 netmask 255.255.255.0 {
  range 10.10.20.100 10.10.20.200;
  option routers 10.10.20.1;
  option domain-name-servers 10.10.20.53;
}

配置完成后使用 dhcpd -t -cf /etc/dhcp/dhcpd.conf 做语法检查,再 systemctl restart isc-dhcp-server 生效。租约数据库默认位于 /var/lib/dhcp/dhcpd.leases,是排查地址分配问题的第一手资料。

二、Windows Server 部署 DHCP 角色

Windows 平台通过“服务器管理器 → 添加角色和功能”安装 DHCP 服务器角色,或在 PowerShell 中执行:

Install-WindowsFeature DHCP -IncludeManagementTools
Add-DhcpServerv4Scope -Name "VLAN10" `
  -StartRange 10.10.10.100 -EndRange 10.10.10.200 `
  -SubnetMask 255.255.255.0
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 `
  -Router 10.10.10.1 -DnsServer 10.10.0.53,10.10.0.54 `
  -DnsDomain corp.example.com

Windows DHCP 控制台以“作用域 → 地址池 → 保留 → 作用域选项 → 服务器选项”的层级组织配置,服务器选项对所有作用域生效,作用域选项优先级更高,可覆盖服务器级设置。授权(Authorize)是 Windows DHCP 特有的安全机制,未在 AD 中授权的 DHCP 服务器不会响应客户端请求,可有效防止私接 DHCP。

三、多作用域与中继代理

DHCP 使用广播发现客户端,路由器默认不转发广播,因此跨网段必须部署 DHCP 中继代理(Relay Agent)。中继代理把客户端的 DHCP Discover 单播转发给 DHCP 服务器,并在报文中携带 giaddr 字段,服务器据此判断应分配哪个作用域的地址。

在 Cisco 设备上,接口下配置 ip helper-address 10.10.0.10 即可启用中继;在 Linux 上可用 dhcrelay:

dhcrelay -i eth1 -i eth2 10.10.0.10

其中 -i 指定面向客户端的接口,最后的 IP 是 DHCP 服务器地址。中继部署后,务必确认服务器到各网段的路由可达,否则会出现“客户端能收到 Offer 但拿不到地址”的典型故障。

跨网段 DHCP 中继与多作用域分配示意 DHCP 服务器 10.10.0.10 作用域池 VLAN10: 10.10.10.100-200 VLAN20: 10.10.20.100-200 DHCP 中继代理 giaddr 标记来源网段 VLAN10 客户端 网关 10.10.10.1 获得 10.10.10.x VLAN20 客户端 网关 10.10.20.1 获得 10.10.20.x 单播转发 广播 Offer 广播 Offer 选项模板(Option Template) option 3 路由器 option 6 DNS option 66/67 TFTP 引导 option 42 NTP 下发

四、选项模板与参数下发

DHCP 选项(Option)决定了客户端除 IP 之外还能获得哪些参数。常用选项包括:Option 3 默认网关、Option 6 DNS 服务器、Option 15 域名、Option 42 NTP 服务器、Option 66 TFTP 服务器名、Option 67 引导文件名。在 ISC DHCP 中,可通过 class 与 subclass 实现按客户端类型下发不同选项,例如为 IP 电话下发 Option 66/67 指向语音网关:

class "ipphone" {
  match if substring(option vendor-class-identifier,0,4) = "Cisco";
  option tftp-server-name "10.10.0.20";
  option bootfile-name "SEPDefault.cnf.xml";
}

Windows 平台则通过“策略(Policy)”实现类似效果,可按 MAC 前缀、厂商类、用户类等条件匹配,并绑定不同的作用域选项。选项模板的价值在于把“公共参数”与“差异化参数”分离,减少重复配置,降低出错概率。

五、日志与监控

ISC DHCP 的日志默认写入 syslog,可在 /etc/dhcp/dhcpd.conf 中开启详细日志:

log-facility local7;
# /etc/rsyslog.d/dhcp.conf
local7.*  /var/log/dhcpd.log

关键日志事件包括 DHCPDISCOVER、DHCPOFFER、DHCPREQUEST、DHCPACK、DHCPNAK 以及 DHCPDECLINE。若出现大量 DHCPNAK,通常意味着客户端请求的地址与服务器记录冲突,或中继 giaddr 与作用域不匹配。Windows 平台可在“DHCP 控制台 → IPv4 → 属性 → 常规”中启用审计日志,默认路径为 %windir%\System32\Dhcp,也可通过事件查看器筛选 DHCP-Server 日志。

监控层面建议关注三类指标:地址池使用率(已分配/总可用)、租约续约成功率、DHCP 响应时延。地址池使用率超过 80% 时应提前扩容或缩短租约时间;续约成功率下降往往指向中继或网络抖动;响应时延异常则需检查服务器负载与广播域规模。

排障小技巧:客户端执行 ipconfig /release 后 ipconfig /renew(Windows)或 dhclient -r && dhclient(Linux),同时观察服务器日志中是否出现对应 MAC 的 DISCOVER/ACK 记录,可快速判断问题出在客户端、中继还是服务器侧。

六、部署检查清单

检查项Linux 侧Windows 侧
服务状态systemctl status isc-dhcp-serverGet-Service DHCPServer
配置语法dhcpd -t -cf dhcpd.conf控制台无红色告警
作用域覆盖subnet 声明与中继 giaddr 一致作用域 ID 与网段匹配
选项下发option routers / domain-name-servers作用域选项优先级高于服务器选项
租约查看/var/lib/dhcp/dhcpd.leasesGet-DhcpServerv4Lease
日志/var/log/dhcpd.log%windir%\System32\Dhcp

完成上述配置后,建议在真实或模拟环境中用至少两台不同网段的客户端验证地址获取、网关连通性与 DNS 解析,确认多作用域与中继链路均按预期工作,再投入生产使用。