无线 : 思科 4400 系列无线局域网控制器

WLC与DHCP

2015 年 7 月 16 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

使用 Cisco 统一无线解决方案的客户一直在报告无线局域网控制器 (WLC) 上提供的 DHCP 支持的问题。其中一些问题属于软件 Bug 或可调试性问题,另外一些问题是由于对 DHCP 实施缺乏正确了解引起的。

本文档描述无线控制器上的各种 DHCP 操作,为客户提供准确而一致的信息,努力减少相关客户问题和 TAC 案例。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

外部 DHCP 服务器

在使用外部 DHCP 服务器时,WLC 支持两种 DHCP 操作模式:

  • DHCP 代理模式

  • DHCP 桥接模式

DHCP 代理模式是一项 DHCP 帮助程序功能,用于实现更高的安全性,并对 DHCP 服务器和无线客户端之间的 DHCP 事务进行控制。DHCP 桥接模式提供了一个选项,可使控制器在 DHCP 事务中的作用对无线客户端完全透明。

DHCP 代理和桥接模式比较

处理客户端 DHCP DHCP 代理模式 DHCP 桥接模式
修改 giaddr
修改 siaddr
修改数据包内容
不转发冗余内容
选项 82 支持
广播到单播
BOOTP 支持 服务器
不符合 RFC 代理和中继代理不完全是同一个概念。推荐使用 DHCP 桥接模式,这样才能完全符合 RFC 标准。

DHCP 代理模式

DHCP 代理并不适用于所有网络环境。控制器将修改并转发所有 DHCP 事务,以提供帮助程序功能,并处理某些安全问题。

控制器的虚拟 IP 地址通常作为所有 DHCP 事务向客户端通信的源 IP 地址。因此,不会公开真实的 DHCP 服务器 IP 地址。此虚拟 IP 在控制器上的 DHCP 事务的 debug 输出中显示。不过,在某些类型的客户端上使用虚拟 IP 地址可能会导致问题。

不管是对称移动协议还是非对称移动协议,DHCP 代理模式操作的行为都是相同的。

当多个数据包来自外部 DHCP 服务器时,DHCP 代理通常会选择第一个进入的数据包,并在客户端数据结构中设置服务器的 IP 地址。因此,以下所有事务都将通过同一个 DHCP 服务器,直到某个事务在重试后失效。这时,代理将为客户端选择其他 DHCP 服务器。

默认情况下会启用 DHCP 代理。所有将要进行通信的控制器必须采用相同的 DHCP 代理设置。

注意: 必须启用 DHCP 代理,以便 DHCP 选项 82 能够正常运行。

代理数据包流

dhcp-wlc-01.gif

代理数据包捕获

实际上,当控制器处于 DHCP 代理模式时,它不仅会将 DHCP 数据包传送至 DHCP 服务器,而且也会构建新的 DHCP 数据包并将其转发到 DHCP 服务器。客户端 DHCP 数据包中的所有 DHCP 选项将复制到控制器的 DHCP 数据包中。接下来的屏幕截图示例显示了 DHCP 请求数据包的这一过程。

客户端角度

此屏幕截图描述的是从客户端角度截取的数据包捕获过程。它显示了 DHCP 发现,DHCP 提供、DHCP 请求和 DHCP ACK。DHCP 请求将突出显示,并且 bootp 协议详细信息将进一步显示 DHCP 选项。

dhcp-wlc-02.gif

服务器角度

此屏幕截图描述的是从服务器角度截取的数据包捕获过程。类似于前一示例,它显示了 DHCP 发现,DHCP 提供、DHCP 请求和 DHCP ACK。不过,这些都是控制器在充当 DHCP 代理时构建的数据包。同样,DHCP 请求将突出显示,并且 bootp 协议详细信息将进一步显示 DHCP 选项。请注意,它们与客户端 DHCP 请求数据包中的内容相同。另外请注意,WLC 代理将转发数据包并突出显示数据包地址。

dhcp-wlc-03.gif

代理配置示例

要将控制器用作 DHCP 代理,必须在控制器上启用 DHCP 代理功能。默认情况下会启用此功能。要启用 DHCP 代理,必须使用以下 CLI 命令。而且,在 4.2.x.x 代码中,此操作只能在 CLI 中完成。

(Cisco Controller) >config dhcp proxy enable
(Cisco Controller) >show dhcp proxy

DHCP Proxy Behavior: enabled

要运行 DHCP 代理,必须在需要 DHCP 服务的每个控制器接口上配置一个主 DHCP 服务器。可以在管理接口、AP 管理器接口和动态接口上配置 DHCP 服务器。以下 CLI 命令可用于配置每个接口的 DHCP 服务器。

(Cisco Controller) >config interface dhcp ap-manager primary <primary-server>
(Cisco Controller) >config interface dhcp management primary <primary-server>
(Cisco Controller) >config interface dhcp dynamic-interface <interface-name> primary <primary-server>

DHCP 桥接功能是一项全局设置,因此会影响控制器内的所有 DHCP 事务。

排除故障

以下是 debug dhcp packet enable 命令的输出。该 debug 显示,控制器从 MAC 地址为 00:40:96:b4:8c:e1 的客户端收到一个 DHCP 请求,向 DHCP 服务器传送了一个 DHCP 请求,从 DHCP 服务器收到一个回复,并向客户端发送了一个 DHCP 提供。

(Cisco Controller) >debug dhcp message enable

Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP received op BOOTREQUEST (1) (len 312, port 29, encap 0xec03)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option len (including the magic cookie) 76
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: message type = DHCP REQUEST
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 61 (len 7) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: requested ip = 50.101.2.7
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 12 (len 7) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 81 (len 11) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: vendor class id = MSFT 5.0 (len 8)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 55 (len 11) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP options end, len 76, actual 68
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP selecting relay 1 - control block settings:
                        dhcpServer: 0.0.0.0, dhcpNetmask: 0.0.0.0,
                        dhcpGateway: 0.0.0.0, dhcpRelay: 0.0.0.0  VLAN: 0
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP selected relay 1 - 11.0.0.11 (local address 50.101.0.11, gateway 50.101.0.1, VLAN 101, port 29)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP transmitting DHCP REQUEST (3)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   op: BOOTREQUEST, htype: Ethernet, hlen: 6, hops: 1
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   xid: 0xfc3c9979 (4231829881), secs: 0, flags: 0
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   chaddr: 00:40:96:b4:8c:e1
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   ciaddr: 0.0.0.0,  yiaddr: 0.0.0.0
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   siaddr: 0.0.0.0,  giaddr: 50.101.0.11
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   requested ip: 50.101.2.7
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP Forwarding DHCP packet (332 octets)           -- packet received on direct-connect port requires forwarding to external DHCP server. Next-hop is 50.101.0.1
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP sending REQUEST to 50.101.0.1 (len 350, port 29, vlan 101)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP selecting relay 2 - control block settings:
                        dhcpServer: 0.0.0.0, dhcpNetmask: 0.0.0.0,
                        dhcpGateway: 0.0.0.0, dhcpRelay: 50.101.0.11  VLAN: 101
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP selected relay 2 - NONE
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP received op BOOTREPLY (2) (len 316, port 29, encap 0xec00)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option len (including the magic cookie) 80
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: message type = DHCP ACK
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 58 (len 4) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 59 (len 4) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: lease time = 691200 seconds
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: server id = 11.0.0.11
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: netmask = 255.255.0.0
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: 15 (len 14) - skipping
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: gateway = 50.101.0.1
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: DNS server, cnt = 1, first = 11.0.0.11
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP option: WINS server, cnt = 1, first = 11.0.0.11
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP options end, len 80, actual 72
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP setting server from ACK (server 11.0.0.11, yiaddr 50.101.2.7)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 Assigning Address 50.101.2.7 to mobile
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP sending REPLY to STA (len 424, port 29, vlan 20)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP transmitting DHCP ACK (5)
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   op: BOOTREPLY, htype: Ethernet, hlen: 6, hops: 0
Thu Jun 25 21:48:55 2009: 00:40:96:b4:8c:e1 DHCP   xid: 0xfc3c9979 (4231829881), secs: 0, flags: 0
Thu Jun 25 21:48:59 2009: 00:40:96:b4:8c:e1 DHCP   chaddr: 00:40:96:b4:8c:e1
Thu Jun 25 21:48:59 2009: 00:40:96:b4:8c:e1 DHCP   ciaddr: 0.0.0.0,  yiaddr: 50.101.2.7
Thu Jun 25 21:48:59 2009: 00:40:96:b4:8c:e1 DHCP   siaddr: 0.0.0.0,  giaddr: 0.0.0.0
Thu Jun 25 21:48:59 2009: 00:40:96:b4:8c:e1 DHCP   server id: 1.1.1.1  rcvd server id: 11.0.0.11

警告

  • 已启用 DHCP 代理的控制器与充当防火墙和 DHCP 服务器的设备之间可能会存在互操作性问题。通常情况下,这很可能是由于设备的防火墙组件作为防火墙无法响应代理请求引起的。要解决此问题,需要在控制器上禁用 DHCP 代理。

  • 当控制器上的客户端处于 DHCP REQ 状态时,控制器将丢弃 DHCP inform 数据包。在控制器从客户端收到 DHCP 发现数据包之前,控制器上的客户端不会进入 RUN 状态(要使客户端传送流量,这是必需的)。禁用 DHCP 代理时,将由控制器转发 DHCP inform 数据包。

  • 所有将要进行通信的控制器必须采用相同的 DHCP 代理设置。

DHCP 桥接模式

DHCP 桥接功能旨在使控制器在 DHCP 事务中的作用对客户端完全透明。除了从 802.11 到以太网 II 的转换以外,来自客户端的数据包将不加修改地从 LWAPP 隧道桥接到客户端的 VLAN(或 L3 漫游时的 EoIP 隧道)。同样,除了从以太网 II 到 802.11 的转换以外,传送至客户端的数据包将不加修改地从客户端的 VLAN(或 L3 漫游时的 EoIP 隧道)桥接到 LWAPP 隧道。此过程可以理解为先将客户端接入交换机端口,然后由该客户端执行传统的 DHCP 事务。

DHCP 桥接操作 - 桥接数据包流

dhcp-wlc-04.gif

桥接数据包捕获 - 客户端角度

dhcp-wlc-05.gif

在以上客户端数据包捕获屏幕截图中,代理模式下的客户端捕获之间的主要区别在于:在 Offer 和 Ack 数据包中显示的是 DHCP 服务器的真实 IP 地址,而不是控制器的虚拟 IP 地址。

桥接数据包捕获 - 服务器角度

dhcp-wlc-06.gif

在以上有线数据包捕获屏幕截图中,您可以看到,数据包 40 是从测试客户端 00:40:96:b6:44:51 到有线网络的桥接 DHCP 请求广播。

桥接配置示例

要在控制器上启用 DHCP 桥接功能,您必须在控制器上禁用 DHCP 代理功能。在 4.2.x.x 代码中,此操作只能在 CLI 中使用以下命令完成:

(Cisco Controller) >config dhcp proxy disable
(Cisco Controller) >show dhcp proxy
DHCP Proxy Behaviour: disabled

如果 DHCP 服务器与客户端位于不同的第 2 层网络上,则需要使用 IP 帮助程序将广播转发到客户端网关处的 DHCP 服务器。以下是此配置的一个示例:

Switch#conf t
Switch(config)#interface vlan <client vlan #>
Switch(config-if)#ip helper-address <dhcp server IP>

DHCP 桥接功能是一项全局设置,因此会影响控制器内的所有 DHCP 事务。您需要在有线基础架构中为控制器上的所有必需 VLAN 添加 IP 帮助程序语句。

排除故障

以下为使用 4.2.205.0 代码的控制器的 debug 输出示例。此处列出的 debug 已在控制器 CLI 上启用,并且已针对本文档提取出了输出的 DHCP 部分。

(Cisco Controller) >debug client 00:40:96:b6:44:51
(Cisco Controller) >debug dhcp message enable

00:40:96:b6:44:51 DHCP received op BOOTREQUEST (1) (len 308, port 1, encap 0xec03) 
00:40:96:b6:44:51 DHCP option len (including the magic cookie) 72 
00:40:96:b6:44:51 DHCP option: message type = DHCP DISCOVER 
00:40:96:b6:44:51 DHCP option: 116 (len 1) - skipping 
00:40:96:b6:44:51 DHCP option: 61 (len 7) - skipping 
00:40:96:b6:44:51 DHCP option: 12 (len 12) - skipping 
00:40:96:b6:44:51 DHCP option: vendor class id = MSFT 5.0 (len 8)
00:40:96:b6:44:51 DHCP option: 55 (len 11) - skipping 
00:40:96:b6:44:51 DHCP options end, len 72, actual 64 
00:40:96:b6:44:51 DHCP processing DHCP DISCOVER (1) 
00:40:96:b6:44:51 DHCP   op: BOOTREQUEST, htype: Ethernet, hlen: 6, hops: 0 
00:40:96:b6:44:51 DHCP   xid: 0x224dfab6 (575535798), secs: 0, flags: 0 
00:40:96:b6:44:51 DHCP   chaddr: 00:40:96:b6:44:51 
00:40:96:b6:44:51 DHCP   ciaddr: 0.0.0.0,  yiaddr: 0.0.0.0 
00:40:96:b6:44:51 DHCP   siaddr: 0.0.0.0,  giaddr: 0.0.0.0 
00:40:96:b6:44:51 DHCP successfully bridged packet to DS 
00:40:96:b6:44:51 DHCP received op BOOTREPLY (2) (len 308, port 1, encap 0xec00) 
00:40:96:b6:44:51 DHCP option len (including the magic cookie) 72
00:40:96:b6:44:51 DHCP option: message type = DHCP OFFER 
00:40:96:b6:44:51 DHCP option: server id = 192.168.10.1 
00:40:96:b6:44:51 DHCP option: lease time = 84263 seconds 
00:40:96:b6:44:51 DHCP option: 58 (len 4) - skipping 
00:40:96:b6:44:51 DHCP option: 59 (len 4) - skipping 
00:40:96:b6:44:51 DHCP option: netmask = 255.255.255.0
00:40:96:b6:44:51 DHCP option: gateway = 192.168.10.1 
00:40:96:b6:44:51 DHCP options end, len 72, actual 64 
00:40:96:b6:44:51 DHCP processing DHCP OFFER (2) 
00:40:96:b6:44:51 DHCP   op: BOOTREPLY, htype: Ethernet, hlen: 6, hops: 0 
00:40:96:b6:44:51 DHCP   xid: 0x224dfab6 (575535798), secs: 0, flags: 0 
00:40:96:b6:44:51 DHCP   chaddr: 00:40:96:b6:44:51 
00:40:96:b6:44:51 DHCP   ciaddr: 0.0.0.0,  yiaddr: 192.168.10.104 
00:40:96:b6:44:51 DHCP   siaddr: 0.0.0.0,  giaddr: 0.0.0.0 
00:40:96:b6:44:51 DHCP   server id: 192.168.10.1  rcvd server id: 192.168.10.1 
00:40:96:b6:44:51 DHCP successfully bridged packet to STA 
00:40:96:b6:44:51 DHCP received op BOOTREQUEST (1) (len 328, port 1, encap 0xec03) 
00:40:96:b6:44:51 DHCP option len (including the magic cookie) 92 
00:40:96:b6:44:51 DHCP option: message type = DHCP REQUEST 
00:40:96:b6:44:51 DHCP option: 61 (len 7) - skipping 
00:40:96:b6:44:51 DHCP option: requested ip = 192.168.10.104 
00:40:96:b6:44:51 DHCP option: server id = 192.168.10.1 
00:40:96:b6:44:51 DHCP option: 12 (len 12) - skipping 
00:40:96:b6:44:51 DHCP option: 81 (len 16) - skipping 
00:40:96:b6:44:51 DHCP option: vendor class id = MSFT 5.0 (len 8) 
00:40:96:b6:44:51 DHCP option: 55 (len 11) - skipping 
00:40:96:b6:44:51 DHCP options end, len 92, actual 84 
00:40:96:b6:44:51 DHCP processing DHCP REQUEST (3) 
00:40:96:b6:44:51 DHCP   op: BOOTREQUEST, htype: Ethernet, hlen: 6, hops: 0 
00:40:96:b6:44:51 DHCP   xid: 0x224dfab6 (575535798), secs: 0, flags: 0 
00:40:96:b6:44:51 DHCP   chaddr: 00:40:96:b6:44:51
00:40:96:b6:44:51 DHCP   ciaddr: 0.0.0.0,  yiaddr: 0.0.0.0 
00:40:96:b6:44:51 DHCP   siaddr: 0.0.0.0,  giaddr: 0.0.0.0 
00:40:96:b6:44:51 DHCP   requested ip: 192.168.10.104 
00:40:96:b6:44:51 DHCP   server id: 192.168.10.1  rcvd server id: 192.168.10.1 
00:40:96:b6:44:51 DHCP successfully bridged packet to DS
00:40:96:b6:44:51 DHCP received op BOOTREPLY (2) (len 308, port 1, encap 0xec00) 
00:40:96:b6:44:51 DHCP option len (including the magic
cookie) 72 00:40:96:b6:44:51 DHCP option: message type = DHCP ACK 
00:40:96:b6:44:51 DHCP option: server id = 192.168.10.1 
00:40:96:b6:44:51 DHCP option: lease time = 86400 seconds 
00:40:96:b6:44:51 DHCP option: 58 (len 4) - skipping 
00:40:96:b6:44:51 DHCP option: 59 (len 4) - skipping 
00:40:96:b6:44:51 DHCP option: netmask = 255.255.255.0 
00:40:96:b6:44:51 DHCP option: gateway = 192.168.10.1 
00:40:96:b6:44:51 DHCP options end, len 72, actual 64 
00:40:96:b6:44:51 DHCP processing DHCP ACK (5) 
00:40:96:b6:44:51 DHCP   op: BOOTREPLY, htype: Ethernet, hlen: 6, hops: 0
00:40:96:b6:44:51 DHCP   xid: 0x224dfab6 (575535798), secs: 0, flags: 0 
00:40:96:b6:44:51 DHCP   chaddr: 00:40:96:b6:44:51 
00:40:96:b6:44:51 DHCP   ciaddr: 0.0.0.0,  yiaddr: 192.168.10.104 
00:40:96:b6:44:51 DHCP   siaddr: 0.0.0.0,  giaddr: 0.0.0.0 
00:40:96:b6:44:51 DHCP   server id: 192.168.10.1  rcvd server id: 192.168.10.1
00:40:96:b6:44:51 Assigning Address 192.168.10.104 to mobile  
00:40:96:b6:44:51 DHCP successfully bridged packet to STA
00:40:96:b6:44:51 192.168.10.104 Added NPU entry of type 1

在此 DHCP debug 输出中,有一些表明控制器正使用 DHCP 桥接的重要指示:

““DHCP successfully bridged packet to DS”- 这意味着来自客户端的原始 DHCP 数据包被未加修改地桥接到分布式系统 (DS)。DS 为有线基础架构。

““DHCP successfully bridged packet to STA”- 此消息表明 DHCP 数据包被未加修改地桥接到工作站 (STA)。STA 为请求 DHCP 的客户端计算机。

此外,您还会看到在 debug 中列出的真实的服务器 IP,即 192.168.10.1。如果使用的是 DHCP 代理而不是 DHCP 桥接,则输出中的服务器 IP 部分将列出控制器的虚拟 IP 地址。

警告

  • 默认情况下会启用 DHCP 代理。

  • 所有将要进行通信的控制器必须采用相同的 DHCP 代理设置。

  • 要使 DHCP 选项 82 工作,必须启用 DHCP 代理。

版本 4.2 之前的 DHCP 桥接

在 4.2 代码版本之前,您可以在控制器上禁用 DHCP 代理。但实际上,这不会将 DHCP 数据包桥接到有线网络。在 4.2 之前,控制器仍然会将 DHCP 通信代理到 DHCP 服务器,但客户端收到的是 DHCP 服务器的真实 IP 地址,而不是控制器的虚拟 IP 地址。

内部 DHCP 服务器

内部 DHCP 服务器最初是为无法使用外部 DHCP 服务器的分支机构引入的。它旨在为同一子网中 AP 数量小于 10 个的小型无线网络提供支持。内部服务器向管理接口上的无线客户端、直连 AP、设备模式 AP 提供 IP 地址,以及从 AP 转发的 DHCP 请求。它不是成熟的通用 DHCP 服务器。它仅支持有限的功能,并且无法在较大规模的部署中进行扩展。

内部 DHCP 和桥接模式比较

控制器上的两种主要 DHCP 模式为 DHCP 代理或 DHCP 桥接。使用 DHCP 桥接时,控制器更像是由自治 AP 提供支持的 DHCP。DHCP 数据包通过与 SSID(已链接到 VLAN)关联的客户端进入 AP。然后,DHCP 数据包会离开该 VLAN。如果在该 VLAN 的第 3 层网关上定义了 IP 帮助程序,数据包将通过定向单播转发到该 DHCP 服务器。然后,DHCP 服务器将响应直接返回到已转发该 DHCP 数据包的第 3 层接口。使用 DHCP 代理与使用 DHCP 桥接时的操作相同,但所有转发都是直接在控制器而不是在 VLAN 的第 3 层接口上完成。例如,DHCP 请求从客户端进入 WLAN 后,WLAN 将使用在 VLAN 的接口上定义的 DHCP 服务器,或使用 WLAN 的 DHCP 覆盖功能,向 DHCP 服务器转发一个单播 DHCP 数据包,而 DHCP 数据包的 GIADDR 字段则使用 VLAN 接口的 IP 地址填充。

内部 DHCP 服务器 - 数据包流

dhcp-wlc-07.gif

内部 DHCP 服务器配置示例

要运行内部 DHCP 服务器,您必须在控制器上启用 DHCP 代理。可以通过以下 GUI 启用 DHCP 代理:

Controller->Advanced->DHCP  
(Note: Setting the DHCP proxy via the GUI is not available in all versions)

/image/gif/paws/110865/dhcp-wlc-08.gif

也可通过 CLI 启用 DHCP 代理:

Config dhcp proxy enable
Save config

要启用内部 DHCP 服务器,请完成以下步骤:

  1. 定义将用于提取 IP 地址的范围 (Controller->Internal DHCP Server->DHCP Scope)。单击 New

    dhcp-wlc-09.gif

  2. 将任意 DHCP 覆盖指向控制器的管理接口 IP 地址:

    dhcp-wlc-10.gif

    此外,您也可以将控制器接口配置的 DHCP 选项用于您希望使用内部 DHCP 服务器的接口。

    dhcp-wlc-11.gif

  3. 确保已启用 DHCP 代理:

    dhcp-wlc-12.gif

排除故障

调试内部 DHCP 服务器通常是指查找在获取 IP 地址方面遇到问题的客户端。您需要运行以下 debug:

debug client <MAC ADDRESS OF CLIENT>

debug 客户端是一个宏,它会为您启用这些 debug,同时将 debug 输出仅集中于您输入的客户端 MAC 地址:

debug dhcp packet enable
debug dot11 mobile enable
debug dot11 state enable
debug dot1x events enable
debug pem events enable
debug pem state enable
debug cckm client debug enable

debug dhcp packet enable 命令是一个主要用于解决 DHCP 问题的命令,该命令由 debug client 命令自动启用。

00:1b:77:2b:cf:75 dhcpd: received DISCOVER 
00:1b:77:2b:cf:75 dhcpd: Sending DHCP packet (giaddr:192.168.100.254)to 127.0.0.1:67  from 127.0.0.1:1067 
00:1b:77:2b:cf:75 sendto (548 bytes) returned 548
00:1b:77:2b:cf:75 DHCP option len (including the magic cookie) 312 
00:1b:77:2b:cf:75 DHCP option: message type = DHCP OFFER 
00:1b:77:2b:cf:75 DHCP option: server id = 192.168.100.254 
00:1b:77:2b:cf:75 DHCP option: lease time = 86400 seconds 
00:1b:77:2b:cf:75 DHCP option: gateway = 192.168.100.1 
00:1b:77:2b:cf:75 DHCP option: 15 (len 13) - skipping 
00:1b:77:2b:cf:75 DHCP option: netmask = 255.255.255.0 
00:1b:77:2b:cf:75 DHCP options end, len 312, actual 64 
00:1b:77:2b:cf:75 DHCP option len (including the magic cookie) 81 
00:1b:77:2b:cf:75 DHCP option: message type = DHCP REQUEST 
00:1b:77:2b:cf:75 DHCP option: 61 (len 7) - skipping 
00:1b:77:2b:cf:75 DHCP option: requested ip = 192.168.100.100 
00:1b:77:2b:cf:75 DHCP option: server id = 1.1.1.1 
00:1b:77:2b:cf:75 DHCP option: 12 (len 14) - skipping 
00:1b:77:2b:cf:75 DHCP option: vendor class id = MSFT 5.0 (len 8) 
00:1b:77:2b:cf:75 DHCP option: 55 (len 11) - skipping 
00:1b:77:2b:cf:75 DHCP option: 43 (len 3) - skipping 
00:1b:77:2b:cf:75 DHCP options end, len 81, actual 73 
00:1b:77:2b:cf:75 DHCP Forwarding packet locally (340 octets) from 192.168.100.254 to 192.168.100.254
dhcpd: Received 340 byte dhcp packet from 0xfe64a8c0 192.168.100.254:68
00:1b:77:2b:cf:75 dhcpd: packet 192.168.100.254 -> 192.168.100.254 using scope "User Scope" 
00:1b:77:2b:cf:75 dhcpd: received REQUEST 
00:1b:77:2b:cf:75 Checking node 192.168.100.100  Allocated 1246985143, Expires 1247071543 (now: 1246985143) 
00:1b:77:2b:cf:75 dhcpd: server_id = c0a864fe 
00:1b:77:2b:cf:75 dhcpd: server_id = c0a864fe adding option 0x35 adding option 0x36 adding option 0x33 adding option 0x03 adding option 0x0f adding option 0x01 
00:1b:77:2b:cf:75 dhcpd: Sending DHCP packet (giaddr:192.168.100.254)to 127.0.0.1:67  from 127.0.0.1:1067 
00:1b:77:2b:cf:75 sendto (548 bytes) returned 548
00:1b:77:2b:cf:75 DHCP option len (including the magic cookie) 312 
00:1b:77:2b:cf:75 DHCP option: message type = DHCP ACK 
00:1b:77:2b:cf:75 DHCP option: server id = 192.168.100.254 
00:1b:77:2b:cf:75 DHCP option: lease time = 86400 seconds 
00:1b:77:2b:cf:75 DHCP option: gateway = 192.168.100.1 
00:1b:77:2b:cf:75 DHCP option: 15 (len 13) - skipping 
00:1b:77:2b:cf:75 DHCP option: netmask = 255.255.255.0 
00:1b:77:2b:cf:75 DHCP options end, len 312, actual 64 

清除 WLC 的内部 DHCP 服务器上的 DHCP 租用

使用无线局域网控制器版本 7.0.98,您可以发出此命令以清除 WLC 内部 DHCP 服务器上的 DHCP 租用:

config dhcp clear-lease <all/IP Address>

示例如下:

config dhcp clear-lease all

警告

  • 要运行内部 DHCP 服务器,必须启用 DHCP 代理。

  • 使用受 CPU ACL 影响的内部 DHCP 服务器时,请在端口 1067 上使用 DHCP。

  • 内部 DHCP 服务器通过 127.0.0.1 udp 端口 67 侦听控制器环回接口。

最终用户接口

  • config dhcp proxy disable 命令意指使用 DHCP 桥接功能。这是一个全局命令(不是基于 WLAN 的命令)。

  • 为便于客户在使用现有部署时体验一致的行为,默认情况下将仍然启用 DHCP 代理。

  • 禁用 DHCP 代理时,本地 WLAN 将无法使用内部 DHCP 服务器。桥接操作不同于将数据包重定向到内部服务器所需的操作。除了从 802.11 到以太网 II 的转换以外,桥接就是桥接,DHCP 数据包将不加修改地从 LWAPP 隧道传送到客户端的 VLAN(反之亦然)。

  • 启用代理时,必须在 WLAN 的接口上(或直接在 WLAN 中)配置 DHCP 服务器,以便启用 WLAN。禁用代理时,将不需要配置服务器,因为将不会使用这些服务器。

  • 用户尝试启用 DHCP 代理时,应在内部确保所有 WLAN(或关联的接口)均已配置 DHCP 服务器。否则,启用操作会失败。

所需的 DHCP

以前的 WLAN 配置有一个选项,要求用户在进入 RUN 状态(在此状态下,客户端将能够通过控制器传送流量)之前传送 DHCP。此选项要求客户端执行整个或半个 DHCP 请求。控制器在客户端查找的主要事件是 DHCP 请求及 DHCP 服务器返回的 ACK。只要客户端执行这些步骤,客户端将通过所需的 DHCP 步骤并进入 RUN 状态。

dhcp-wlc-13.gif

L2 和 L3 漫游

L2 漫游 - 如果客户端具有有效的 DHCP 租用并且在同一 L2 网络上的两个不同控制器之间执行 L2 漫游,则客户端不应该需要再次进行 DHCP 操作,且客户端条目应从原始控制器完全移至新控制器。然后,如果客户端需要再次进行 DHCP 操作,当前控制器上的 DHCP 桥接或代理进程将再次透明地桥接数据包。

L3 漫游 - 在 L3 漫游情形下,客户端将在不同 L3 网络中的两个不同控制器之间移动。在这种情况下,客户端将锚定到原始控制器并在新的外来控制器的客户端表中列出。在锚定期间,客户端的 DHCP 将由锚点控制器处理,因为客户端数据在外来控制器和锚点控制器之间的 EoIP 隧道内传输。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 110865