一、背景概述

在搭建企业无线网络环境时,采用以下拓扑结构:

text

AP(接入点)
    │
    ▼
LSW汇聚交换机
    │
    ▼
AC(无线控制器)—— DHCP中继角色
    │
    ▼
LSW核心交换机(10.0.8.1)
    │
    ▼
AR3路由器(10.0.8.3)—— DHCP服务器

需求:AP从AR3路由器获取管理IP地址,与AC建立CAPWAP隧道并上线。


二、问题现象

  1. AP启动后无法上线,始终处于Idle状态。

  2. AC上抓包能看到AP发来的DHCP Discover广播报文。

  3. AC上行口抓包看不到任何发往DHCP服务器的单播报文。

  4. DHCP服务器(AR3)收到Discover但无Offer回应。

  5. AR3持续发送ARP广播询问192.168.1.1(AC的Vlanif101 IP),无人应答。


三、排障过程

第一阶段:AC侧——中继功能未生效

现象:AC收到Discover广播,但未“翻译”成单播转发给AR3。

根因分析

  • AC只有Vlanif1(IP为169.254.1.1,链路本地地址),缺少AP管理VLAN对应的三层接口。

  • 交换机端口PVID=100,AP报文被打上VLAN 100标签,但AC设置的是Vlanif101接口来做中继

关键点dhcp select relaydhcp relay server-ip两条命令缺一不可。


第二阶段:路由侧——静态路由下一跳错误(最终Boss)

现象:AR3收到Discover后尝试回复Offer,但持续发送ARP广播“Who has 192.168.1.1?”,无人应答。

根因分析

AR3上配置了两条默认路由:

bash

ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0   # ❌ 指向物理端口
ip route-static 0.0.0.0 0.0.0.0 10.0.8.1               # ✅ 指向下一跳IP

当AR3要给AC(192.168.1.1)回复Offer时:

  1. 查路由表无192.168.1.0/24明细路由,命中默认路由。

  2. 默认路由负载分担或等价路由机制生效,部分流量匹配了指向物理端口的那条。

  3. 路由器认为“目标192.168.1.1就在GigabitEthernet0/0/0的对端”,直接在物理口发ARP广播寻找192.168.1.1。

  4. 但192.168.1.1(AC的Vlanif101)在另一个广播域(VLAN 101),根本收不到该ARP请求

  5. Offer包因无法完成二层封装而被丢弃。

为什么“指向物理端口”在以太网上是错误的?

链路类型 指定出接口行为 结果
点对点链路(PPP/HDLC/Serial) 对端唯一,直接发送 ✅ 正确
以太网(Ethernet) 广播域内有多台设备,需先ARP解析下一跳 ❌ 错误

解决方案

bash

# 删除指向物理端口的错误默认路由
undo ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0

# 保留指向下一跳IP的正确默认路由(已存在)
# ip route-static 0.0.0.0 0.0.0.0 10.0.8.1

核心原理:指向下一跳IP时,路由器只会在直连网段内ARP解析网关(10.0.8.1),而非目标IP(192.168.1.1)。网关负责将包继续转发,完成跨网段通信。


四、最终完整配置清单

1. LSW汇聚交换机(连接AP和AC)

bash

# AP接入端口
interface GigabitEthernet0/0/0
 port hybrid tagged vlan 2 to 4094
 lldp dot3-tlv power 802.3at

# AC连接端口
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk pvid vlan 100
 port trunk allow-pass vlan 100 to 101

2. AC(无线控制器,DHCP中继)

bash

# 管理VLAN三层接口
vlan batch 100 101

interface Vlanif100
 ip address 192.168.100.1 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 10.0.8.3

interface Vlanif101
 ip address 192.168.1.1 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 10.0.8.3

3. AR3路由器(DHCP服务器)

bash

# 全局DHCP服务
dhcp enable

# 地址池
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

ip pool vlan101
 gateway-list 192.168.1.1
 network 192.168.1.0 mask 255.255.255.0
 dns-list 8.8.8.8

# 物理接口绑定地址池
interface GigabitEthernet0/0/0
 ip address 10.0.8.3 255.255.255.0
 dhcp select global

# ✅ 正确的默认路由(指定下一跳IP,而非物理口)
ip route-static 0.0.0.0 0.0.0.0 10.0.8.1

4. LSW核心交换机

bash

# 回指路由(将Offer包从AR3转发给AC)
ip route-static 192.168.100.0 255.255.255.0 192.168.100.1
ip route-static 192.168.1.0 255.255.255.0 192.168.1.1

五、排障工具与验证命令

设备 命令 用途
AC display dhcp relay interface Vlanif100 检查中继配置状态
AC display ap all 查看AP上线状态
AR3 display ip pool name vlan100 查看地址池分配情况
AR3 display ip routing-table 检查路由表
AR3 ping -a 10.0.8.3 192.168.1.1 验证回程路由
LSW display ip routing-table 检查回指路由
通用 display current-configuration | include dhcp 快速检查DHCP配置

抓包要点

抓包位置 预期看到的报文 含义
AC下行口(接AP) DHCP Discover(目的255.255.255.255) AP→AC链路正常
AC上行口(接核心) DHCP Discover(目的10.0.8.3,单播) 中继生效
AR3物理口 DHCP Discover + DHCP Offer 服务器正常响应

六、核心经验总结

1. DHCP中继的两个必要条件

bash

interface Vlanif100
 dhcp select relay          # 开启中继功能
 dhcp relay server-ip x.x.x.x # 指定DHCP服务器

缺一不可!

2. VLAN三层接口必须与物理端口PVID对应

  • 交换机Trunk口PVID=100 → AC必须创建Vlanif100

  • 交换机Trunk口PVID=101 → AC必须创建Vlanif101

3. DHCP服务器必须绑定地址池

物理接口下必须执行dhcp select globaldhcp select interface,否则地址池不生效。

4. 静态路由:以太网禁止只指定出接口

✅ 正确写法 ❌ 错误写法
ip route-static 0.0.0.0 0.0.0.0 10.0.8.1 ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0

原因:指定下一跳IP时,路由器只ARP解析网关;指定出接口时,路由器会ARP解析目标IP本身。目标IP不在直连广播域时,ARP永远得不到响应。

5. 排障思维导图

text

AP无法获取IP
  │
  ├─ 二层/VLAN排查
  │   ├─ 交换机端口PVID是否正确?
  │   └─ Trunk是否放行了管理VLAN?
  │
  ├─ AC(中继)排查
  │   ├─ 是否存在对应的Vlanif接口?
  │   ├─ Vlanif接口IP是否与地址池网关一致?
  │   ├─ 是否配置了 dhcp select relay?
  │   └─ 是否配置了 dhcp relay server-ip?
  │
  └─ DHCP服务器排查
      ├─ 全局 dhcp enable 是否开启?
      ├─ 物理接口是否绑定了 dhcp select global?
      ├─ 是否存在匹配的地址池?
      └─ 是否有去往 giaddr 网段的回程路由?

七、结语

这次排障让我深刻体会到,DHCP中继看似简单,实则涉及二层VLAN透传、三层接口配置、中继功能开启、地址池绑定、静态路由下一跳选择等多个环节。任何一个环节的疏忽,都会导致“能抓到包但就是不通”的诡异现象。

特别是静态路由下一跳指向物理端口这个坑,在点对点链路上是正确用法,但在以太网环境下却会导致ARP广播风暴和跨网段通信失败——正是这个细节,让我多花了数小时才定位到根因。

希望这份排障记录能给遇到类似问题的同行一些启发。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐