把每个故障讲成可以抄作业的案例。—— 网络工程师老李
一、先别急着重启,169.254 说明了什么
会议室电脑上不了网,右下角提示“未识别的网络”。打开命令行执行:
ipconfig /all如果当前启用的网卡拿到169.254.x.x,同时显示DHCP 已启用:是,但没有有效租约,通常说明客户端已经尝试通过 DHCP 获取地址,却没有得到可用的 DHCP 配置。
Windows 会在 DHCP 获取失败后启用自动专用 IP 寻址,也就是常说的 APIPA。这里先纠正一个常见但不严谨的说法:
169.254.x.x不等于“客户端一定没有收到 ACK”。
它只能证明最终没有形成可用的 DHCP 租约。原因可能发生在 Discover 没发出、Offer 没回来、Request 没被接受、ACK 没到客户端,也可能是客户端收到响应后又因地址冲突、驱动或安全软件等原因没有采用。排查时不要凭这个地址猜结论,要找出四步交互具体断在哪里。
先检查三件事:
- 地址是不是来自当前正在使用的网卡,而不是旧网卡或虚拟网卡。
- 网卡是否确实设置为自动获取 IPv4 地址,是否存在静态地址、备用配置或策略残留。
- 断开再连接一次,并用
ipconfig /renew复现;给 DHCP 重试留几秒时间,不要只抓一次报文就下结论。
本文中的“会议室电脑”是便于讲解的典型场景,不是直接引用某张真实工单。现场处置前仍应以实际拓扑和日志为准。
二、抓住主线:DORA 到底断在哪一步
初次获取地址通常围绕四类报文:
| 阶段 | 报文 | 要回答的问题 |
|---|---|---|
| 发现 | DHCP Discover | 客户端有没有把请求发出去?接入交换机有没有收到? |
| 提供 | DHCP Offer | DHCP 服务器或中继有没有给出可用地址? |
| 请求 | DHCP Request | 客户端有没有接受并请求这个地址? |
| 确认 | DHCP ACK | 服务器有没有确认租约,客户端有没有成功应用? |
后续续租还会出现单播 Request、ACK、NAK,故障不只发生在首次上线。排查时先固定一个判断:
客户端发了什么、第一跳设备收到了什么、服务器回了什么。
只要沿这条链路做一次同时间的对照,就能把问题从“十几条可能原因”压缩到一层。
三、现场快速分流:先做三组对照
为了避免一上来就翻全局配置,建议先做三组成本低、信息量高的对照测试。
对照 1:换终端,不换端口
在同一端口接入一台已知正常的终端,执行自动获取。
- 新终端正常:重点查原终端的网卡、操作系统、安全软件、驱动或 DHCP 策略。
- 两台终端都失败:继续向上排查端口、VLAN、网关、DHCP 中继或服务器。
对照 2:换端口,不换终端
把原终端接到同一 VLAN 的测试端口;条件允许时,再接入相邻 VLAN 的测试端口。
- 换到同 VLAN 正常:原端口配置、链路或认证策略可疑。
- 换 VLAN 后正常:原 VLAN 的网关、中继、地址池或 Snooping 策略可疑。
- 所有端口都失败:范围通常在 DHCP 中继、服务器或全局策略。
对照 3:观察复现是否稳定
- 每台新终端都失败:更像配置、链路或容量问题。
- 偶发失败、重连后恢复:重点查地址池临界耗尽、冲突地址、DHCP 报文丢弃、链路抖动和服务器响应。
- 同一 MAC 反复出现:考虑终端反复重试、认证策略、仿冒或无线漫游。
这三组动作不会直接给出根因,但能回答“问题在终端、端口、VLAN,还是 DHCP 系统侧”。
四、六层排查法:从离用户最近的地方向上走
第 1 层:终端与物理链路
先确认终端侧的 DHCP 客户端行为:
ipconfig /all ipconfig /release ipconfig /renew重点看:
- 当前网卡是否为“自动获得 IPv4 地址”;
- 是否启用了 DHCP,是否还有旧租约;
- 有线口、扩展坞、USB 网卡是否被禁用或切换到了别的网络;
- 终端防火墙、EDR、准入客户端是否拦截 DHCP 或限制网卡。
再换网线、换端口或更换终端做交叉验证。若端口物理状态异常,检查接口:
display interface brief display interface GigabitEthernet 1/0/1物理层正常并不代表业务 VLAN 正确。二层配置要单独核对。
第 2 层:端口、VLAN 和网关
确认终端端口所在 VLAN:
display port vlan GigabitEthernet 1/0/1 display vlan 20接入口重点看 PVID;Trunk 口重点看允许通过的 VLAN。PVID 配错时,终端可能被分到另一广播域,表现很像“DHCP 服务器不回话”。
再检查该 VLAN 的三层接口:
display ip interface brief display ip interface Vlanif20对于中继场景,Vlanif20 不仅要UP,还要满足以下条件:
- 已配置该网段的地址;
- 已在接口上选择 DHCP 中继模式;
- 已指定正确的 DHCP 服务器或服务器组;
- 从设备到服务器存在可达路由;
- 中间 ACL、防火墙或 VPN 没有拦截 UDP 67/68。
注意:VLAN 决定报文落在哪个广播域,Vlanif 负责三层网关和中继。二者相关,但不是同一个配置项。
第 3 层:DHCP Snooping 与二层过滤
DHCP Snooping 是接入层高频问题点。先看运行信息,再看丢弃计数:
display dhcp snooping display dhcp snooping configuration display dhcp snooping statistics global针对具体端口查看:
display dhcp snooping interface GigabitEthernet 1/0/1 display dhcp snooping statistics interface GigabitEthernet 1/0/1检查顺序如下:
- 全局是否已执行
dhcp enable。 - 是否已在全局使能
dhcp snooping enable。 - 是否在用户侧接口或对应 VLAN 使能 DHCP Snooping。
- 指向可信 DHCP 服务器或可信中继路径的接口,是否配置了
dhcp snooping trusted。
在接口视图中的基本配置示意如下:
system-view dhcp enable dhcp snooping enable interface GigabitEthernet 1/0/1 dhcp snooping enable quit interface GigabitEthernet 1/0/2 dhcp snooping trusted quit上例中,GE 1/0/1接用户,GE 1/0/2是通往可信 DHCP 服务器或中继的路径。实际配置应根据拓扑确定,不能机械地“把所有上联口都设为 trust”。
华为 V200R025C00 文档明确说明:接口默认是非信任状态;应把与管理员信任的 DHCP 服务器直接或间接连接的接口设为信任接口。若看到Dropped by untrust reply或Dropped by no trust port持续增长,就要重点核对信任口方向和 Snooping 作用域。
还要检查:
- 是否存在 DHCP 报文丢弃策略、仿冒服务器防护或速率限制;
- ACL 是否阻止 UDP 67/68;
- 终端是否跨 Trunk、VLAN Mapping、MUX VLAN、VXLAN 或 VRRP 场景接入;
- 静态绑定、ARP 检测和 IP Source Guard 是否造成联动影响。
第 4 层:DHCP 中继
先确认中继配置:
display dhcp relay configuration display dhcp relay interface Vlanif20重点核对:
- 客户端 VLAN 是否由正确的 Vlanif 处理;
dhcp select relay是否生效;- DHCP 服务器地址或服务器组是否正确;
- 中间路由、VPN 实例和回程路由是否一致;
- Option 82、Link-selection、VRF 检查等策略是否符合服务器要求;
- 中继是否收到客户端报文,是否把请求发向服务器。
再查看中继统计:
display dhcp relay statistics这些计数器是累计值。建议先记录一次,让终端重新请求,再记录一次,对比增量更有意义。不要在未评估影响的生产设备上随意清零统计。
典型判断:
DISCOVER received增长,但无服务器回包:查服务器地址、路由、ACL 和服务器端;- 收到
OFFER,却未正常发回客户端:查回程、VLAN、Snooping、ACL 和终端定位; Bad packets received增长:抓包核对报文格式、VRF、广播域以及中间设备改写。
第 5 层:DHCP 服务器与地址池
在服务器侧查看配置、报文统计和地址池:
display dhcp server configuration display dhcp server statistics display ip pool name vlan20 used若使用接口地址池,则用:
display ip pool interface Vlanif20 used全局地址池和接口地址池的差异要分清:
- 接口地址池:地址范围与服务器接口地址同网段,通常用于服务器和客户端同网段。
- 全局地址池:服务器可根据请求中的 Giaddr 选择不同网段地址池,常用于跨网段中继。
检查地址池时不要只看一个Used数字,还要看:
Total、Used、Idle、Expired、Conflict、Disable的构成;Used是否接近可用总量;Conflict是否大量堆积;Expired是否长期异常;- 池网段、掩码、网关、DNS 和排除地址是否与终端 VLAN 一致;
- 是否有静态绑定、固定分配或异常客户端快速占用地址。
华为文档说明:当地址池中 Idle 状态地址耗尽时,会自动回收 Expired 地址;Idle 和 Expired 都耗尽后,还可能自动回收 Conflict 地址。因此,看到地址池接近满时,不能简单地把“清租约”当作标准修复动作,应先确认容量是否真的不足、是否有攻击或异常申请、冲突地址为何产生。
服务器上有可用地址,不一定会成功下发。还要检查:
- 是否存在与 Giaddr 匹配的地址池;
- 地址池是否被锁定;
- 租约、网关和出口参数是否完整;
- 服务器 Ping 探测是否把合法地址误判为冲突;
- DHCP 数据库、服务器主备或 VRRP 场景是否配置正确;
- 服务器统计中 Discover 与 Offer、Request 与 ACK 的差量是否异常。
第 6 层:镜像抓包做最终定位
当配置检查没有唯一结论时,在终端接入端口或关键上行口做镜像抓包。抓包时记录端口、VLAN、终端 MAC、时间和一次完整复现过程。
按以下逻辑判读:
| 抓包现象 | 优先方向 |
|---|---|
| 没有 Discover | 终端、网卡、安全软件、端口 Down 或接入认证 |
| 有 Discover,没有 Offer | 上游二层丢弃、中继未转发、服务器未响应、无匹配地址池、地址池不可分配 |
| 有 Offer,没有 Request | 客户端拒绝 Offer、参数异常、地址冲突检测或终端策略 |
| 有 Request,没有 ACK | 服务器拒绝/无响应、回程丢失、Snooping/ACL/VLAN 丢弃 |
| Request 和 ACK 都有,终端仍为 169.254 | 客户端没有应用租约,查驱动、安全软件、接口选择和终端事件日志 |
抓包和计数器要互相对照。单个计数器只能说明“发生过”,结合同一次复现的时间线,才能说明“这次为什么失败”。
五、故障树:按证据走,不按猜测走
终端显示 169.254.x.x ├─ 换终端仍失败? │ ├─ 否:查原终端、网卡、驱动、安全软件和 DHCP 策略 │ └─ 是:继续向上 ├─ 换端口或 VLAN 后恢复? │ ├─ 是:查原端口 PVID、VLAN、认证、链路和 Snooping 作用域 │ └─ 否:继续向上 ├─ Snooping 丢弃计数增长? │ ├─ 是:核对 trusted 接口方向、全局/接口使能、ACL 和报文策略 │ └─ 否:继续向上 ├─ 中继收到 Discover 却收不到服务器回应? │ ├─ 是:查服务器地址、路由、VRF、ACL 和服务器统计 │ └─ 否:继续向上 ├─ 地址池接近耗尽或无可用地址? │ ├─ 是:扩池、排除错误占用、排查冲突或异常申请 │ └─ 否:继续抓包 └─ 抓到完整 DORA 但终端仍未采用? └─ 回到客户端侧查租约应用和终端事件六、处置时注意什么
修复配置,不要只“弄好一台”
如果确认是 Snooping 信任口错误,要同时检查该 VLAN、同型号设备和其他接入交换机的相同模板,避免只改当前端口。
如果确认地址池耗尽,应先判断是容量规划不足、固定地址占用、异常 DHCP 请求还是冲突地址堆积。单纯缩短租期可能加快地址回收,但不能替代容量评估和异常终端治理。
如果怀疑 DHCP 报文丢弃,修改 ACL 或安全策略前先做镜像验证。不要为了“让这台电脑先上网”直接关闭整个 VLAN 的安全特性。
修改后要闭环验证
至少完成以下验证:
- 原故障终端连续三次释放、重新获取,均能拿到正确网段地址。
- 同 VLAN 的另一台终端可以正常获取。
- 网关、DNS、路由和业务访问均正常。
- DHCP Snooping 关键丢弃计数不再增长。
- 中继、服务器和地址池统计出现完整的请求与回应。
- 变更记录、根因、影响范围和回退方案已归档。
七、怎么把问题挡在下一次故障之前
1. 把命令核验纳入发布和变更流程
设备型号、VRP 版本和组网不同,命令格式和回显可能不同。可用?补全命令,发布前在目标版本上确认关键回显。
例如,查询接口 Snooping 运行状态时要带上接口:
display dhcp snooping interface GigabitEthernet 1/0/1而不是只执行一个没有接口参数的display dhcp snooping interface。
2. 监控地址池,不只看设备是否在线
建议监控:
- 地址池利用率;
- Conflict 数量及增长速度;
- Idle 和 Expired 的剩余量;
- DHCP Discover 与 Offer、Request 与 ACK 的增量差异;
- DHCP Snooping 的丢弃计数;
- DHCP 中继的 Bad packets 和服务器无响应。
阈值可按地址池规模分级设置。华为设备支持配置地址耗尽告警;现网应结合 SNMP、日志或监控平台形成可通知、可闭环的阈值,而不是等用户报障后才发现池满。
3. 接入配置模板做一致性检查
上线 CheckList 至少包含:
- 用户侧 VLAN、PVID 和网关 Vlanif;
- 中继模式、服务器地址和回程路由;
- DHCP Snooping 全局、VLAN/接口作用域;
- 信任口是否指向可信服务器或中继路径;
- ACL、认证和端口安全策略;
- 地址池容量、排除地址和冲突告警;
- 测试终端的完整获取流程。
4. 保留可用的应急路径
关键会议室、诊室或生产岗位可准备受控的备用接入方案和操作说明。应急方案必须与 DHCP 主流程隔离、可回退,并由授权人员执行;不建议长期依赖手机热点解决办公网设计问题。
八、命令速查表
| 排查目标 | 命令 | 重点看什么 |
|---|---|---|
| 终端状态 | ipconfig /all | 活动网卡、DHCP 是否启用、是否有租约 |
| 端口 VLAN | display port vlan GigabitEthernet 1/0/1 | PVID、Trunk 允许 VLAN |
| Vlanif 状态 | display ip interface Vlanif20 | IP、接口状态、三层配置 |
| Snooping 运行信息 | display dhcp snooping | 全局、接口/VLAN、Trusted interface |
| Snooping 配置 | display dhcp snooping configuration | 全局和接口/VLAN 是否使能 |
| Snooping 丢弃 | display dhcp snooping statistics global | untrust reply、no trust port等 |
| 中继配置 | display dhcp relay configuration | 服务器地址、服务器组、Giaddr |
| 中继统计 | display dhcp relay statistics | Discover/Offer/ACK 的去向 |
| 服务器统计 | display dhcp server statistics | 请求与回应的差量、Bad messages |
| 地址池使用 | display ip pool name vlan20 used | Used、Idle、Expired、Conflict |
| 接口地址池 | display ip pool interface Vlanif20 used | 接口池地址状态 |
| 地址池总览 | display ip pool name vlan20 | 池网段、网关、排除地址和统计信息 |
九、最后记住这条排查原则
遇到169.254.x.x,不要从“重启终端”开始,也不要直接断定是服务器。先保留现场,再做交叉验证,然后用 DORA 四步把范围压缩到终端、二层、中继或服务器。
一句话带走:
先看报文走到哪里,再看配置为什么让它停在那里。
如果你在现场遇到过“抓包明明有 ACK,终端却仍是 169.254”或“Snooping 信任口没丢包但就是拿不到地址”的情况,可以把脱敏后的拓扑、关键回显和时间线整理出来,后续可以做成故障复盘案例。