这是一个相当经典的话题。DHCP 这协议平时安安静静待在网络底层,出了问题却能把人折腾到怀疑人生。不管你是刚入行的网工,还是自己折腾 homelab 的玩家,只要跟网络打交道,就绕不开它。这篇文章我就把 DHCP 从原理到抓包,从配置到排障,一次性给你掰扯清楚,全是实际干活时能用上的东西。
1. DHCP 到底解决了个什么问题
1.1 没有 DHCP 的日子有多难熬
先聊点历史。早年间没有 DHCP 的时候,给一台新电脑配上网络,你得手动干三件事:填 IP 地址、填子网掩码、填默认网关,还要填 DNS 服务器。听起来不难对吧?那要是公司有五百台电脑呢?每台都得跑过去手动敲,敲完了还得拿小本本记着哪个 IP 分给哪台机器了,防止下次分配撞车。
这还只是管理员的痛苦。对普通用户来说,手动配 IP 意味着你稍微填错一个数字,网络就不通,然后你就得打电话喊网管。更别提笔记本电脑这种移动设备,今天在公司用 192.168.1.0 网段,明天去咖啡厅要用 192.168.3.0 网段,后天回家又变成 192.168.31.0 网段,你让用户自己改?不现实。
DHCP 干的事说白了就一句话:让设备插上网线、连上 Wi-Fi 之后,自动从服务器那儿领一套网络参数,用完还能还回去循环利用。用户不需要知道 IP 地址是什么,管理员也不需要一台一台去配,大家都省心。
1.2 DHCP 的工作模式:客户端-服务器架构
DHCP 采用的是典型的客户端-服务器模型,通信基于 UDP 协议。这里有个特别反直觉的细节:客户端往服务器发消息的时候,目的端口是 67,源端口是 68;服务器回消息则反过来,源端口 67,目的端口 68。也就是说,客户端用的是 68 号端口,服务器监听的是 67 号端口。
还有个更反直觉的地方:客户端一开始并不知道服务器在哪儿,所以它只能往广播地址 255.255.255.255 发包。这就导致 DHCP 协议在设计上天生依赖广播通信。你要是把交换机上的 DHCP 报文过滤了,或者网段里没有 DHCP 服务器回包,那客户端就永远拿不到地址,只能靠系统自动分配一个 169.254.x.x 的保留地址(Windows 下叫 APIPA),然后你就看到网络图标上冒出一个黄色感叹号。
1.3 DHCP 能用在哪,用在哪最合适
从使用场景来说,DHCP 主要覆盖这么几类地方:
- 家庭网络:光猫拨号后,由路由器内置的 DHCP 服务给手机、电脑、电视分配地址。这是最普遍的场景。
- 企业办公网络:一般部署独立的 DHCP 服务器(Windows Server 或 Linux),统一管控所有终端地址,配合 DHCP 中继实现跨 VLAN 分配。
- 数据中心/服务器机房:服务器的管理网口、PXE 装机网络也依赖 DHCP。PXE 就是通过 DHCP 拿到引导信息,然后从网络启动安装系统,这个场景对 DHCP 的 option 字段有特殊要求,后面细说。
- 访客网络/公共 Wi-Fi:一般会把 DHCP 池子调小,租期调短,防止地址被大量占用。
1.4 DHCP 与静态 IP 的关系:不是二选一
很多人问过我:“我用静态 IP 了还需要 DHCP 吗?”我的答案是:按需分配。服务器、打印机、网络设备这些需要稳定固定地址的,老老实实用静态 IP;普通终端一律 DHCP。你甚至可以把静态 IP 做成 DHCP 的“保留地址”:在 DHCP 服务器上把某个 IP 和某台设备的 MAC 地址绑定,客户端照样走 DHCP 流程,但每次拿到的都是同一个地址。这种方式的好处是配置统一在服务器端管理,不用跑现场去改设备,排查问题也方便。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. DHCP 工作流程拆解:四步握手与租约机制
2.1 DORA 流程:Discover、Offer、Request、Ack
DHCP 获取地址的核心流程被称为 DORA,四个字母分别对应四个阶段,我用大白话给你翻译一下。
第一步,Discover(发现阶段)。客户端刚接入网络,自己啥也不知道,就往外喊一嗓子:“这网里有没有管分配 IP 的?我需要个地址!”这嗓子是广播发的,源 IP 是 0.0.0.0,目的 IP 是 255.255.255.255。
第二步,Offer(提供阶段)。网络里的 DHCP 服务器听到喊声,查阅自己的地址池,挑一个空闲 IP,回一个 Offer 包:“这个地址给你用,子网掩码是这个,网关是这个,DNS 是这个,能用多久也告诉你了。”值得注意的是,Offer 包也是广播发出的(除非客户端在 Discover 里明确设置了 broadcast 标志位为 0,部分场景下可以超播,但对初学者来说,先当作广播理解就可以了)。
第三步,Request(请求阶段)。客户端可能同时收到多台服务器的 Offer(网络里确实可能部署多台 DHCP 服务器做冗余),它得做个选择。它会从中挑一个(通常是先到的那个),然后广播发一个 Request 包,内容是:“我要用某台服务器给我的这个 IP。”为什么这里还要用广播?因为客户端需要通知其他服务器“我不用你们给的地址了”,让它们把那边的地址释放掉。
第四步,Ack(确认阶段)。被选中的服务器收到 Request 后,再次确认这个地址确实可用,然后回一个 Ack 包,里面包含最终的租约参数。客户端收到 Ack 后,把自己的网卡正式配置上这个 IP 地址,同时还会主动发几个免费的 ARP 包出去检测一下——如果发现这个地址已经被别的设备在用了,它会丢弃这个 Ack,然后重新走一遍 Discover 流程。
这四步看起来简单,但每一个包都有讲究。排查的时候如果发现卡在某个阶段,就能快速定位问题:卡在 Discover 不发,基本是网卡或交换机端口问题;发出去了收不到 Offer,多半是网络里根本没有 DHCP 服务器,或者中继没配好;发出 Request 收不到 Ack,大概率是地址冲突或服务器端策略问题。
2.2 租约机制:IP 不是永久产权
网关注册上来的设备产生的 IP 不是永久有效的,而是有一个租约期(Lease Time)。默认情况下,家用路由器一般是 24 小时,企业网络可能调到 8 小时甚至更短,取决于地址池压力。
租约到了就要续约,续约机制分两步走:
- T1 时刻(50% 租期):客户端直接向当初分配地址的 DHCP 服务器单播发 Request 包,请求续约。如果服务器回 Ack,租约时间重置。如果服务器没回,客户端继续用着现有地址,进入下一阶段。
- T2 时刻(87.5% 租期):续约失败后,客户端转而发广播 Request 包,意思是“随便哪个服务器回我都行,帮我续个约”。如果还是没人理,租约到期后客户端就乖乖放弃这个地址,重新开始 DORA 流程。
这个机制隐藏着一个常见的坑:如果服务器重启了,地址池状态丢失,而客户端手里的租约还没过期,那客户端会一直用着旧地址,直到自己主动续约时发现服务器变了,才重新获取。所以你在公司里给 DHCP 服务器做迁移或升级时,尽量挑没人的时候干,或者把租期临时调短,否则第二天会有不少电脑莫名其妙上不了网。
2.3 租约存储:重启不丢数据是关键
生产环境的 DHCP 服务器一定要把租约信息落盘。以 Linux 的 ISC DHCP 为例,默认租约文件在 /var/lib/dhcp/dhcpd.leases,里面记录了哪些 IP 分给了哪些 MAC 地址、什么时候到期。要定期备份这个文件,因为你一旦把服务器搞挂了重启,租约文件丢了,就会出现内存里记着“这个 IP 已经被分配了”和本地文件里什么都没有的矛盾状态,轻则地址分配混乱,重则大面积 IP 冲突。
3. 报文字段与关键选项:从抓包看懂 DHCP
3.1 报文格式核心字段
要深入 DHCP,得会看报文。用 Wireshark 抓一个 DHCP 包,你会发现它基于 BOOTP 格式扩展而来,关键字段如下:
- OP:1 表示请求,2 表示回应。
- HTYPE/HLEN:硬件类型和长度,以太网就是 1 和 6。
- HOPS:经过中继的次数,初始为 0,每过一个中继加 1。
- XID:事务 ID,客户端每次请求生成一个随机数,用来匹配 Offer/Request/Ack 的对应关系。你在看抓包的时候,完全可以依靠 XID 把同一个协商过程的 4 个包串联在一起看。
- CIADDR:客户端当前地址。只在客户端处于续约状态、而且已经拥有可用地址时才会填;初次分配时为 0。
- YIADDR:服务器分配给客户端的新地址。Offer 和 Ack 包里这个字段有值,是重点关注对象。
- GIADDR:中继代理地址。如果 DHCP 请求跨了网段,中继设备会把自己的接口地址填进这个字段,告诉服务器“客户端在这个网段”,方便服务器从对应地址池里分配,同时回包也送往这个地址。
- CHADDR:客户端 MAC 地址,服务器依赖它来标识客户端、绑定保留地址。
3.2 Options 字段:DHCP 的灵魂
真正让 DHCP 灵活多变的是报文末尾的 Options 字段。一个 DHCP 报文里可以携带多个 Option,常见的如下,我按排障时的优先级给你列一列:
| Option | 编号 | 作用 |
|---|---|---|
| DHCP Message Type | 53 | 标识报文类型(1=Discover,2=Offer,3=Request,4=Decline,5=Ack,6=Nak) |
| Server Identifier | 54 | 服务器 IP,客户端靠它区分不同服务器的 Offer,客户端在 Request 阶段会把这个值带回去,明确告诉服务器“我就选你了” |
| Requested IP Address | 50 | 客户端在 Request 阶段希望获取的地址 |
| Parameter Request List | 55 | 客户端希望服务器返回的参数列表,例如 1(子网掩码)、3(默认网关)、6(DNS)等 |
| IP Address Lease Time | 51 | 租约时长,单位秒 |
| Subnet Mask | 1 | 子网掩码 |
| Router | 3 | 默认网关 |
| Domain Name Server | 6 | DNS 服务器地址 |
| Domain Name | 15 | 域名后缀,自动加入 DNS 解析后缀搜索列表 |
| TFTP Server Name | 66 | 引导文件服务器地址,PXE 装机时用 |
| Bootfile Name | 67 | 引导文件名,PXE 装机时用 |
注意 Server Identifier 这个 Option 特别坑:客户端续约时,根据 RFC 2131 的要求,Request 里需要带上服务器标识;但如果网络里既有 DHCP 又有 DHCPv6 或者多个服务器,配置错误会导致客户端一直把 Request 发给错误的目标,表现为“拿到了 IP 但很快又被服务器 Nak 掉”。抓包的时候如果看到服务器回 Nak,先检查 54 号字段是不是填了别的服务器地址。
PXE 网络装机场景里,66 和 67 这两个 Option 是核心。你的 DHCP 服务器除了分配 IP,还要告诉引导固件“去 192.168.1.10 这台机器上,用 tftp 拉取 bootx64.efi 文件”。很多人在配置 PXE 时发现客户机能拿到 IP 但引导失败,多半就是 66/67 配错了或者 TFTP 服务路径不对。
3.3 用 tcpdump 抓包验证流程
纸上得来终觉浅,我给你一个可以直接上手的抓包命令:
bash复制tcpdump -i eth0 -n -s 0 -e -vv port 67 or port 68
参数含义:-i eth0 指定网卡,-n 不做 DNS 反解,-s 0 抓取完整报文,-e 显示链路层信息(方便看 MAC 地址),-vv 输出详细信息。抓完你会看到完整的 DORA 四步。如果抓包时发现客户端发了 Discover 但是服务器没有任何反应,优先检查服务器进程状态和防火墙规则。很多 Linux 的防火墙默认会拦掉外部网卡的 UDP 67/68 端口流量,导致服务器收不到请求,但本地抓包又是正常的,这个坑我踩过不止一次。
3.4 DHCP 与 ARP 的关系:拿到地址不等于能上网
拿到 IP 只是第一步。客户端拿到地址后会发一个免费 ARP(Gratuitous ARP)探测冲突;路由器上的网关地址要能被 ARP 解析,数据包才能发出去。所以 DHCP 分配了正确的 IP、掩码、网关之后,如果 ARP 解析失败,同样上不了网。排查网络不通时,我的习惯顺序是:先看 IP 配置(ipconfig /all),再看 ARP 表(arp -a),然后 ping 网关,逐层排除。DHCP 分配了错误网关的情况确实不少见,常见原因是服务器的 options 配置写错,或者客户机缓存了旧网关。
4. 实操配置:Linux 环境搭建 DHCP 服务器
4.1 安装与最小化配置
Linux 下最常用的 DHCP 服务软件是 ISC DHCP Server,包名一般是 dhcpd 或者 isc-dhcp-server(发行版不同名字略有差异)。用 apt 或 yum 装好之后,最简配置就是修改 /etc/dhcp/dhcpd.conf,我给你写一个基础可用的例子:
bash复制# 全局配置
option domain-name "example.local";
option domain-name-servers 223.5.5.5, 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
authoritative;
# 声明一个网段的地址池
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
}
配置文件里 authoritative 这一行特别关键。它的作用是声明自己是这个网段的权威 DHCP 服务器;如果客户端续约的地址不在地址池范围内,服务器会直接回 Nak 让客户端重新获取地址。如果你不加这行,服务器遇到这种不匹配的请求会保持沉默,客户端就只能带着旧地址熬到租约过期,然后才重新走 DORA。生产环境一定要加。
4.2 常见配置参数详解
配置参数说多不多,但每个都有讲究:
- default-lease-time 和 max-lease-time:前者是客户端没有主动要求租期时给的默认值,后者是客户端要求超长租期时能给出的上限。家用 24 小时;办公网络建议 4-8 小时;如果你公司有大量移动设备,建议 2 小时左右,这样地址池能更快回收空置地址。
- range:定义可分配的地址范围,注意别把服务器的静态地址、打印机地址、网络设备管理地址包含进去。
- host 声明:绑定固定 IP 的配置方式。例如要给打印机固定分配 192.168.10.50,可以这样写:
bash复制host printer01 {
hardware ethernet 00:1B:2F:3C:4D:5E;
fixed-address 192.168.10.50;
}
这样写的好处前面提过:不用去改打印机自己的设置,所有地址都在服务器上管着,换打印机时只需要改配置文件里的 MAC,不用跑现场。
4.3 配置完成后必须做的检查
配置文件写完必须检查语法,然后重启服务:
bash复制dhcpd -t -cf /etc/dhcp/dhcpd.conf
systemctl restart isc-dhcp-server
systemctl status isc-dhcp-server
-t 参数做语法检查,这一步能避免大部分低级的写错括号、漏分号的问题。重启后第一时间看进程状态和日志,日志往往在 /var/log/syslog 或 /var/log/messages 里。正常启动会看到类似 “Server starting” 的信息;如果有 “No subnet declaration for eth0” 这种报错,说明你服务器网卡所在的网段没有在配置文件里声明,这种问题最常出现在服务器有多个网卡的情况下。
实操经验告诉我,用 Linux 自带的 dhcpd 配一台小型网络的 DHCP 服务器非常方便,但上了几百台设备的规模之后,建议换成专业的 DHCP 硬件设备或者采用 Windows Server 的 DHCP 角色,管理和审计功能强很多,故障恢复也方便。
5. 跨网段分配:DHCP 中继的配置与原理
5.1 为什么需要 DHCP 中继
DHCP 是基于广播的,而路由器默认不转发广播包。这意味着你公司在核心交换机上划了 VLAN 10、VLAN 20、VLAN 30,DHCP 服务器在 VLAN 10,那 VLAN 20 和 VLAN 30 的终端发的 Discover 广播根本到不了服务器那里。解决方案要么在每个 VLAN 里都部署一台 DHCP 服务器(不现实,成本太高),要么让路由设备把 DHCP 广播转成单播发给服务器——这就是 DHCP 中继(DHCP Relay)。
5.2 中继的工作过程
开启中继后,流程变为:终端广播 Discover → 路由器收到后,把广播报文中的 GIADDR 字段改成自己的接口 IP(也就是终端所在网段的地址),目标地址改成 DHCP 服务器的 IP,然后单播发给服务器 → 服务器根据 GIADDR 判断客户端属于哪个网段,从对应网段的地址池里分配地址 → 回包同样单播给中继设备 → 中继设备再转给客户端。
5.3 华为 ensp 中继配置实例
很多学网络的朋友在华为模拟器 ensup 里练手,我直接给你一个中继的最小配置参考。假设核心交换机上有 VLAN 10 和 VLAN 20,DHCP 服务器接在 VLAN 10,IP 是 192.168.10.2,VLAN 20 的网关接口是 192.168.20.1:
bash复制# 在核心交换机上
dhcp enable
# 进入 VLANIF 20 接口
interface Vlanif20
ip address 192.168.20.1 255.255.255.0
dhcp select relay
dhcp relay server-ip 192.168.10.2
配置完成后,VLAN 20 的终端就能通过中继拿到 192.168.20.x 网段的地址。注意服务器端需要为 192.168.20.0/24 单独添加地址池,否则服务器看到 GIADDR 是 192.168.20.1,却发现自己没有对应网段的配置,只能选择不回包。
这里有一个中继场景的坑:如果你的 DHCP 服务器在 Windows 上,注意把服务器的网卡防火墙入站规则放开 UDP 67/68,否则中继的单播到不了了服务器,终端就一直卡在 Discover 阶段。交换机上的排查命令是抓包看能不能看到中继发出去的单播请求。
5.4 华为 ensp 里常见实验:RIP 配 DHCP 给终端分 IP
热搜里经常有人搜“用华为模拟器来配置 RIP 而且用 DHCP 来配 IP”,这其实是华为网络技术实验课的常见题目——路由器上配 RIP 动态路由,同时给终端的网段启用 DHCP 服务。模拟器里路由器代替了 DHCP 服务器角色,配置思路是:先给接口配上 IP 地址,然后在系统视图开启 DHCP 全局功能,创建地址池,给终端所在网段分配地址,最后把 RIP 宣告进对应网段。
bash复制# 路由器上开启 DHCP
dhcp enable
# 创建地址池
ip pool vlan10
network 192.168.10.0 mask 255.255.255.0
gateway-list 192.168.10.1
dns-list 8.8.8.8
# 在接口下启用 DHCP 分配
interface GigabitEthernet0/0/0
ip address 192.168.10.1 255.255.255.0
dhcp select global
# RIP 配置
rip 1
version 2
network 192.168.10.0
network 10.0.0.0
这个实验的要点在于理解路由和 DHCP 是两套独立的逻辑:DHCP 负责让终端拿到 IP 和网关,RIP 负责让路由器之间互相学习非直连网段的路由。实验里最容易犯的错误是忘了在 RIP 里宣告 DHCP 所在的网段,导致终端拿到了 IP 也 ping 不通别的网段。
6. 常见故障排查与安全加固
6.1 终端获取不到 IP 地址
这是每天都会遇到的求助。按我的排查顺序来:
- 查客户端状态:运行
ipconfig /release再ipconfig /renew(Windows)或dhclient -r再dhclient(Linux),看报错信息。 - 抓包定位:在客户端上跑 Wireshark 或 tcpdump。客户端发了 Discover 但一直没有 Offer,说明请求根本没到服务器,检查物理链路、VLAN、交换机端口;发了 Request 但一直在重发,说明服务器收到了但回包丢了或服务器拒绝地址。
- 检查服务器状态:
systemctl status dhcpd看进程是否存活,tail -n 100 /var/log/syslog看有没有报错。 - 检查地址池剩余:如果地址池满了,服务器不会回包,但日志里会记录。
最容易忽略的原因有两个:一个是交换机端口开启了 DHCP Snooping 而信任配置不对,导致合法 DHCP 报文被丢弃;另一个是网络里存在多台 DHCP 服务器,其中一台配置有误回了一个错误的 Offer 或者 Nak 包,把客户端的请求搞乱了。后者可以通过抓包看到多台服务器回 Offer,但客户端往往只选第一个到的,如果你发现客户端拿到的 IP 跟预期完全不是一个网段,基本就是这个原因。
6.2 IP 地址冲突:网络里有两个相同的 IP
地址冲突是 DHCP 环境里最让人头疼的问题之一。发生冲突的典型原因:某台设备被设置了静态 IP,而这个地址正好落入了 DHCP 地址池的范围;或者 DHCP 服务器租约文件损坏,把同一个地址同时分配给了两台设备。
排查时用 arp -a 查看冲突 IP 的 MAC 地址,去交换机上查 MAC 地址表定位到具体端口,顺着网线找到那台设备,把静态 IP 改成 DHCP,或者调整地址池范围避开静态地址。服务器端如果开了 ping 检测(ping-check true 这个参数,分配地址前先 ping 一下确认地址空闲),可以在一定程度上避免冲突,但代价是分配速度变慢,不适合大型网络。
6.3 DNS 不对、网关不通的奇怪问题
终端能拿到 IP,但上网慢、域名解析失败,这类问题往往不是 DHCP 本身的问题,而是地址池里下发的 options 有问题。例如 option domain-name-servers 写了一个不通的 DNS 地址,或者掩码写成了 255.255.255.128 导致终端以为自己在另一个网段。
排查方法很简单:在终端上 ipconfig /all 看清楚拿到的完整参数,跟预期对比。如果网关地址是正确的,ping 不通,那就看 ARP 表里网关的 MAC 是否正确解析;如果 MAC 是错的,多半是网关 IP 被别的设备抢占(典型的“万能路由器”现象),拔掉可疑设备再试即可。
6.4 DHCP Snooping:防私接路由器的基本手段
DHCP 的安全隐患主要来自两种行为:私接小路由器,导致网内出现第二个 DHCP 服务器,给其他终端下发错误的 IP 和网关;伪造 DHCP 报文,造成地址池耗尽或中间人攻击等后果。
交换机上的 DHCP Snooping 是应对这些问题的标准手段。核心思路是:交换机只信任连接合法 DHCP 服务器的端口,其他端口上收到的 DHCP Offer 和 Ack 包一律丢弃。配置非常简单(以华为交换机为例):
bash复制# 全局开启 DHCP Snooping
dhcp snooping enable
# 在接入用户的 VLAN 上启用
vlan 10
dhcp snooping enable
# 把连接合法 DHCP 服务器的端口设为信任口
interface GigabitEthernet0/0/1
dhcp snooping trusted
启用后,交换机还会自动记录 DHCP 绑定表(IP + MAC + 端口 + VLAN),这个表也能防止 DHCP 报文伪造。排查 DHCP 异常时,查绑定表是定位终端的利器。
6.5 检测工具推荐:Wireshark 与厂商调试命令
前面提到的 tcpdump 和 Wireshark 是最主要的 DHCP 报文检测工具。局域网内想快速发现有没有非法 DHCP 服务器,可以这样操作:把网卡设为 DHCP 获取,用 Wireshark 抓包,通过过滤表达式 dhcp 就能看到网络里所有 DHCP 报文。如果有多个不同来源的 Offer 包,就说明网络里存在不止一台 DHCP 服务器,逐一排查即可。
在真实设备上,华为、思科的 DHCP 调试命令也很实用。比如华为路由器上可以用 debugging dhcp server packet 查看 DHCP 服务器收发的报文摘要,排查服务器不回包的问题;display ip pool 查看地址池的使用情况;display dhcp snooping binding 查看 Snooping 绑定表。这些命令结合日志使用,基本能解决 80% 的疑难杂症。
7. 那些年我踩过的 DHCP 的坑
写到最后,分享几个我实际工作中积累的、文档里不太会写的经验。
第一个是租期时间的调优思路。曾经把公司 DHCP 租期从 8 小时改成 24 小时,结果地址池频繁告警。原因是我们有大量访客设备,白天连进来占着地址,晚上人走了地址还保留到第二天,再加上移动设备半夜自动续约,池子就这么慢慢被塞满了。后来把访客网络的租期改成 1 小时,办公网络保持 8 小时,问题才彻底解决。租期不是越长越好,要看你网络的设备流动率。
第二个是服务器的时间同步问题。DHCP 报文里不带时间戳,但服务器处理租约时会用到系统时间。如果 DHCP 服务器的系统时间跟实际差了好几天,客户端续约时服务器算出来的租约到期时间会乱套,表现为客户端频繁掉线重连。这是我的一个惨痛教训,把 NTP 时间同步配好之后问题直接消失。
第三个是关于 DHCP 服务器的冗余设计。别把鸡蛋放一个篮子里,重要网络的 DHCP 应该做双机热备或主备模式,两种常见方案是 DHCP Failover 协议和基于数据库同步的负载均衡。家用路由器坏了可以等一等,公司网络 DHCP 挂了十几分钟,全公司都没法上网。我现在做方案的时候,DHCP 冗余是必选项。
第四个是关于排查时的耐心。DHCP 故障有时候并不是 DHCP 本身造成的,二层环路、交换机端口协商异常、光模块问题都可能导致报文丢失。我的建议是永远从物理层往上排查,先看链路,再看端口,最后才查 DHCP 服务本身。很多人喜欢一上来就抓包,抓了半天发现是网线松了,这事我见过太多了。
DHCP 这个协议年龄不小了,但它至今仍是网络基础接入的核心环节。把这个协议吃透了,网络排障的思路也会清晰很多。希望这篇文章能让你对 DHCP 有个完整的认识,下次再遇到“上不了网”的问题,能知道从哪里下手。
