动态主机配置协议(Dynamic Host Configuration Protocol,简称 DHCP)是现代网络中不可或缺的核心技术之一。作为互联网协议族的重要组成部分,DHCP 负责为网络中的设备动态分配 IP 地址及其他配置参数,从而简化网络管理并提高资源利用效率。在企业网络、校园网络乃至家庭网络中,DHCP 的广泛应用使得设备能够快速接入网络,同时为管理员提供了灵活的管理手段。然而,DHCP 的实现并非毫无挑战,其涉及复杂的协议交互、安全防护以及多样化的配置场景。
DHCP 采用客户端/服务器(Client/Server)模式,通过 DHCP 服务器为网络中的客户端动态分配 IP 地址、子网掩码、默认网关、DNS 服务器地址等配置信息。相比手动配置静态地址,DHCP 的动态分配机制显著降低了管理负担,尤其在设备频繁变更的网络环境中表现出色。
DHCP 的典型组网包括客户端和服务器两种角色。当客户端与服务器处于同一物理网段时,通信直接通过广播完成;若跨越不同网段,则需引入 DHCP 中继(DHCP Relay)设备,将客户端的请求转发至服务器。这种灵活的组网模型使得 DHCP 能够适应从小型局域网到复杂广域网的各种场景。
DHCP 提供三种分配策略以满足不同需求:
DHCP 的应用范围广泛。例如,在企业网络中,它可为员工的电脑和移动设备分配地址;在无线网络中,接入点(AP)通过 DHCP 获取接入控制器(AC)的地址;在数据中心,服务器可能通过 DHCP 获取启动配置文件。这些场景充分体现了 DHCP 的灵活性与实用性。
DHCP 的核心在于其地址分配与管理流程,以下详细解析其工作机制。
DHCP 客户端获取 IP 地址的过程遵循著名的 “DORA” 四步流程:
动态分配的 IP 地址具有租期,客户端需在租期结束前更新租约:
随着 IPv6 的普及,DHCPv6 成为 IPv6 网络中的地址分配方案。其流程为 “SAR-R”(Solicit-Advertise-Request-Reply):
与 IPv4 的 DHCP 相比,DHCPv6 支持有状态(Stateful)和无状态(Stateless)模式,后者与 SLAAC(无状态地址自动配置)结合使用,仅提供 DNS 等附加参数。
DHCP 报文基于 UDP 传输,客户端使用 68 端口,服务器使用 67 端口。其格式继承自 BOOTP,包含以下关键字段:
选项字段是 DHCP 的灵活性所在,常见选项包括:
以下配置基于一个企业网络场景,包含 DHCP 服务器、中继和 Snooping 的完整设置,命令参考新华三官方文档,确保准确性。
设备:核心路由器(Router A)
# 进入系统视图
system-view
# 启用 DHCP 服务
dhcp enable
# 创建地址池 VLAN10-Dynamic
dhcp server ip-pool VLAN10-Dynamic
network 192.168.10.0 mask 255.255.255.0
gateway-list 192.168.10.1
dns-list 8.8.8.8 114.114.114.114
lease day 1 hour 0 minute 0
excluded-ip-address 192.168.10.1 192.168.10.10 # 排除网关和保留地址
# 配置静态绑定
dhcp server ip-pool VLAN10-Static
static-bind ip-address 192.168.10.100 mask 255.255.255.0 mac-address 0011-2233-4455
gateway-list 192.168.10.1
dns-list 8.8.8.8
# 接口绑定地址池
interface Vlan-interface10
ip address 192.168.10.1 255.255.255.0
dhcp select server
# 启用地址冲突检测
dhcp server ping packets 2
# 配置 Option 82 处理
dhcp server relay information enable
dhcp server relay information strategy keep
# 租约固化
dhcp server binding database filename dhcp-binding.db
dhcp server binding database update interval 300
设备:接入交换机(Switch B)
# 启用 DHCP 服务
system-view
dhcp enable
# 配置 VLAN 20 接口为中继模式
interface Vlan-interface20
ip address 192.168.20.1 255.255.255.0
dhcp select relay
dhcp relay server-group 1 ip 192.168.10.1
# 支持 Option 82
dhcp relay information enable
dhcp relay information strategy append
dhcp relay information circuit-id string VLAN20-Client
dhcp relay information remote-id sysname
设备:接入交换机(Switch B)
# 全局启用 DHCP Snooping
system-view
dhcp snooping enable
# VLAN 20 启用 Snooping
dhcp snooping enable vlan 20
# 配置信任端口(连接服务器)
interface Ten-GigabitEthernet1/0/1
dhcp snooping trust
# 配置客户端端口记录表项
interface Ten-GigabitEthernet1/0/2
dhcp snooping binding record
# 配置 Option 82
dhcp snooping information enable
dhcp snooping information strategy replace
dhcp snooping information circuit-id string company001
dhcp snooping information remote-id string device001
# 防止饿死攻击
dhcp snooping check mac-address
mac-address max-mac-count 100 action discard
场景:IPv6 网络,地址池 2001:db8:1::/64
# 启用 IPv6 支持
ipv6
# 创建 DHCPv6 地址池
dhcpv6 pool IPV6-POOL
address prefix 2001:db8:1::/64 lifetime 86400 259200
dns-server 2001:4860:4860::8888
# 接口绑定
interface Vlan-interface10
ipv6 address 2001:db8:1::1/64
dhcpv6 server IPV6-POOL
# 检查地址分配
display dhcp server ip-in-use
display dhcpv6 server ip-in-use
# 查看 Snooping 表项
display dhcp snooping binding
# 检查 Option 82
display dhcp snooping information all