华为无线网络DHCP中继排障实录:从AP无法上线到全网打通
📌 前言
最近在搭建一个企业无线网络环境时,遇到一个典型的“DHCP Discover报文无法转发”的问题。拓扑结构是:AP → LSW交换机 → AC(无线控制器,作为DHCP中继)→ LSW核心交换机 → AR3路由器(作为DHCP服务器) 。配置完成后,AP始终无法获取IP地址,AC上抓包能看到AP发来的Discover报文,但DHCP服务器毫无反应。
经过一系列排查,最终定位到三个层面的问题:AC的中继配置不完整、VLAN规划与三层接口不匹配、DHCP服务器侧路由缺失。整个过程涉及华为AC、交换机、路由器三款设备,把DHCP中继从零到一的完整踩坑经历记录下来,希望能帮到遇到类似问题的同行。
🔧 第一部分:问题背景与拓扑
拓扑结构

AP1/AP2/AP3/AP4(接入层)
│
▼
LSW汇聚交换机
│
▼
AC(无线控制器) ← 充当DHCP中继角色
│
▼
LSW核心交换机(10.0.8.1)
│
▼
AR3路由器(10.0.8.3) ← DHCP服务器
需求
-
AP的管理VLAN为 VLAN 100,需要从DHCP服务器获取IP地址。
-
AC的
Vlanif100接口IP为192.168.100.1,作为AP的网关和中继源地址。 -
DHCP服务器地址池:
192.168.100.0/24,网关192.168.100.1,DNS8.8.8.8。
🔍 第二部分:问题排查全过程
问题现象
-
AP启动后无法上线,获取不到IP地址。
-
在AC连接AP的接口抓包,能看到 DHCP Discover(目的地址255.255.255.255) 报文。
-
在AC连接核心交换机的上行口抓包,看不到任何发往
10.0.8.3的单播报文。 -
在DHCP服务器(AR3)上抓包,能收到Discover报文,但没有发送Offer回应。
🧠 排障思路(逐步推进)
| 步骤 | 排查点 | 检查结果 | 处理措施 |
|---|---|---|---|
| 1 | AC是否收到AP的Discover报文 | ✅ 收到(抓包确认) | 物理链路正常 |
| 2 | AC是否将广播“翻译”成单播发给DHCP服务器 | ❌ 上行口无单播包 | AC缺少Vlanif100三层接口和DHCP中继配置 |
| 3 | AC是否创建了Vlanif100接口 | ❌ 只有Vlanif1(169.254.1.1) | 创建Vlanif100,配置中继指向10.0.8.3 |
| 4 | DHCP服务器是否能收到经过中继的Discover | ✅ 收到(抓包确认) | 网络层已通 |
| 5 | DHCP服务器是否回应Offer | ❌ 无回应 | 地址池未绑定接口 + 回程路由缺失 |
| 6 | 修复后DHCP是否正常工作 | ✅ AP成功获取IP | 全网打通 |
📝 第三部分:关键配置汇总
1️⃣ LSW汇聚交换机(连接AP和AC)
交换机端口配置
bash
# AP接入端口(G0/0/0)—— 允许AP的管理VLAN 100通过 interface GigabitEthernet0/0/0 port hybrid tagged vlan 2 to 4094 lldp dot3-tlv power 802.3at # AC连接端口(G0/0/2)—— Trunk透传管理VLAN和业务VLAN interface GigabitEthernet0/0/2 port link-type trunk port trunk pvid vlan 100 # 管理VLAN设为PVID port trunk allow-pass vlan 100 to 101
📌 关键点:AP端口的PVID要与AC端的Vlanif接口对应。本例中AP发来的不带标签的报文会被归入VLAN 100,AC需要创建Vlanif100来处理这些报文。
2️⃣ AC(无线控制器)—— DHCP中继配置
这是本次排障的核心修复点。AC原本只有 Vlanif1(169.254.1.1),这是一个链路本地地址,无法作为中继源,且缺少Vlanif100三层接口。
修复配置:
bash
system-view # 1. 创建管理VLAN vlan batch 100 # 2. 创建Vlanif100三层接口(作为AP的网关和中继源地址) interface Vlanif100 ip address 192.168.100.1 255.255.255.0 dhcp select relay # 开启中继功能 dhcp relay server-ip 10.0.8.3 # 指向DHCP服务器(AR3) # 3. 删除无用的Vlanif1(避免干扰) undo interface Vlanif1 # 4. 保存配置 save
📌 关键点:
-
dhcp select relay和dhcp relay server-ip缺一不可,否则AC不会执行“广播→单播”的翻译动作。 -
AC的Vlanif100 IP地址必须与DHCP服务器上地址池的
gateway-list保持一致(都是192.168.100.1)。
3️⃣ AR3路由器(DHCP服务器)配置
AR3作为独立的DHCP服务器,物理口 GigabitEthernet0/0/0 配置管理IP 10.0.8.3/24,连接核心交换机。
DHCP服务配置:
bash
system-view # 1. 全局开启DHCP服务 dhcp enable # 2. 创建地址池 vlan100(匹配AP的管理VLAN网段) ip pool vlan100 gateway-list 192.168.100.1 network 192.168.100.0 mask 255.255.255.0 dns-list 8.8.8.8 # 3. 在物理接口下指定使用全局地址池(关键!) interface GigabitEthernet0/0/0 dhcp select global # 4. 添加回程路由(关键!) ip route-static 192.168.100.0 255.255.255.0 10.0.8.1 # 5. 保存 save
📌 关键点:
-
物理接口必须执行
dhcp select global,否则AR3虽然收到Discover报文,但不知道用哪个地址池分配IP。 -
回程路由是本次排障的最后一块拼图。Offer报文的目标IP是
192.168.100.1(AC的Vlanif100),AR3必须知道去往该网段的下一跳是核心交换机(10.0.8.1),否则Offer包会被丢弃。
4️⃣ LSW核心交换机(10.0.8.1)配置
核心交换机需要配置回指路由,将DHCP Offer报文从AR3转发给AC。
bash
system-view # 添加静态路由:去往192.168.100.0/24网段的下一跳是AC的Vlanif100 IP ip route-static 192.168.100.0 255.255.255.0 192.168.100.1 # 或者在核心交换机上创建Vlanif100(如果AC的网关在核心交换机上) # 根据实际拓扑二选一
🧪 第四部分:验证与测试
1. 在AC上检查中继状态
bash
display dhcp relay interface Vlanif100
正常输出应显示:
text
DHCP relay agent running information of interface Vlanif100 : Server-IP : 10.0.8.3
2. 在AC上查看AP上线状态
bash
display ap all
AP状态应从 Idle 变为 Normal,表示成功获取IP并与AC建立CAPWAP隧道。
3. 在DHCP服务器上查看地址分配情况
bash
display ip pool name vlan100
可以看到已分配的IP地址列表,Idle 字段减少,Used 字段增加。
4. 连通性测试
在AR3上ping AC的Vlanif100 IP:
bash
ping -a 10.0.8.3 192.168.100.1
能通,说明回程路由正常,Offer报文可以正确送达。
💡 第五部分:排障总结与经验教训
🎯 核心收获
-
DHCP中继的两个必要条件缺一不可
-
在VLANIF接口下必须同时配置
dhcp select relay和dhcp relay server-ip。 -
缺少任何一条,AC只会收包,不会翻译转发。
-
-
VLAN三层接口必须与物理端口PVID对应
-
交换机端口PVID是VLAN 100,AC就必须有对应的
Vlanif100。 -
如果AC只有
Vlanif1,报文会被丢弃或无法路由。
-
-
DHCP服务器的地址池绑定和路由是关键
-
物理口必须执行
dhcp select global或dhcp select interface,否则地址池不会生效。 -
回程路由最容易遗漏:服务器回复的Offer是单播给
giaddr(即AC的Vlanif100 IP),如果服务器没有去往该网段的路由,Offer包就发不出去。
-
-
抓包是排障的第一利器
-
AC下行口(接AP)抓包:看到Discover(广播)→ 说明AP→AC链路正常。
-
AC上行口(接核心)抓包:看到发往10.0.8.3的单播包 → 说明中继生效。
-
DHCP服务器抓包:看到Discover但无Offer → 问题在服务器侧(地址池绑定或路由)。
-
📚 思维导图式排障路径
text
AP无法获取IP
├─ 物理层/二层排查
│ ├─ AP与交换机端口链路正常?
│ ├─ 交换机端口PVID是否对应管理VLAN?
│ └─ 交换机Trunk是否放行了管理VLAN?
│
├─ 中继设备(AC)排查
│ ├─ 是否存在对应的VLANIF接口?
│ ├─ VLANIF接口IP是否与地址池网关一致?
│ ├─ 是否配置了 dhcp select relay ?
│ └─ 是否配置了 dhcp relay server-ip ?
│
└─ DHCP服务器排查
├─ 全局 dhcp enable 是否开启?
├─ 是否存在匹配的地址池?
├─ 物理接口是否绑定了 dhcp select global/interface ?
└─ 是否有去往 giaddr 网段的回程路由?
🏆 最终效果
经过上述修复,AP成功从AR3获取到 192.168.100.x 网段的IP地址,与AC建立CAPWAP隧道并正常上线。无线终端连接SSID后,也能通过AC的中继从AR3获取业务地址,全网无线业务恢复正常。
🔗 附录:参考命令速查
| 设备 | 用途 | 命令 |
|---|---|---|
| 交换机 | 配置Trunk端口 | port link-type trunkport trunk pvid vlan 100port trunk allow-pass vlan 100 101 |
| AC | 配置DHCP中继 | interface Vlanif100ip address 192.168.100.1 255.255.255.0dhcp select relaydhcp relay server-ip 10.0.8.3 |
| AR3 | 配置全局地址池 | dhcp enableip pool vlan100gateway-list 192.168.100.1network 192.168.100.0 mask 255.255.255.0dns-list 8.8.8.8 |
| AR3 | 接口绑定地址池 | interface GigabitEthernet0/0/0dhcp select global |
| AR3 | 添加回程路由 | ip route-static 192.168.100.0 255.255.255.0 10.0.8.1 |
| 核心交换机 | 添加回指路由 | ip route-static 192.168.100.0 255.255.255.0 192.168.100.1 |
| 通用 | 验证中继状态 | display dhcp relay interface Vlanif100 |
| 通用 | 查看地址池分配 | display ip pool name vlan100 |
| 通用 | 查看AP上线状态 | display ap all |
📮 写在最后
这次排障让我深刻体会到,DHCP中继看似简单,实则涉及二层VLAN透传、三层接口配置、中继功能开启、地址池绑定、路由回指等多个环节,任何一环缺失都会导致“能抓到包但就是不通”的诡异现象。
希望这份排障记录能给遇到类似问题的同行一些启发。如果有更好的思路或建议,欢迎交流讨论!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)