简介
本文档介绍如何在Catalyst 9800无线控制器上配置组播域名服务(mDNS)网关功能。
先决条件
要求
Cisco 建议您了解以下主题:
- mDNS Bonjour协议
- Catalyst 9800无线控制器
使用的组件
本文档中的信息基于以下软件和硬件版本:
- C9800-CL-K9版本16.12.1s
- WS-C3560CX-12PC-S
- C9117AXI-A
- Chromecast NC2-6A5-D
- MacbookPro 10.14.5
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
本文档还解释这种称为mDNS(或Bonjour)的特殊组播流量如何由C9800控制器处理。
mDNS桥接
在C9800架构中,mDNS(Bonjour协议)桥接是指在同一L2广播域内转发Bonjour TTL=1协议数据包。默认情况下,数据平面为每个WLAN的有线端口和无线接口上接收的数据包启用mDNS桥接功能。这意味着mDNS桥接无需任何特定配置即可工作,甚至无需启用全局mDNS。
但是,如有必要,您可以通过更改WLAN设置中的mDNS模式来禁用每个WLAN的mDNS桥接。当无线接入点(AP)控制和配置无线接入点(CAPWAP)组播 — 组播模式启用时,C9800会将每个mDNS数据包桥接到控制器上配置的AP组播组。这可确保无线客户端可以接收数据包。
如果未启用CAPWAP组播 — 组播模式,C9800会创建收到的每个mDNS数据包的副本,并通过CAPWAP单播隧道将其分别桥接到每个单一AP。在这两种情况下,C9800还将mDNS数据包桥接到发起mDNS数据包的客户端VLAN中的有线网络。
配置
在C9800控制器中配置组播模式
步骤1.导航到配置>服务>组播。
步骤2.启用全局无线组播模式。
步骤3.将AP CAPWAP组播设置为Multicast。
步骤4.在AP CAPWAP IPv4组播组地址(范围为224.0.0.0到239.255.255.255)中分配组播IP。
步骤5. AP CAPWAP IPv6组播组地址是可选的。
步骤6.启用无线mDNS桥接。
步骤7.启用IGMP监听。
在第3层交换机上使用PIM稀疏 — 密集模式配置组播路由
步骤1.启用组播路由和igmp 监听。
Switch# config t
Switch(config)# ip multicast-routing
Switch(config)# interface vlan <vlan-id>
Switch(config-if)# ip igmp snooping
Switch(config)# end
步骤2.在要路由组播流量的VLAN接口上启用PIM。
Switch> enable
Switch# config t
Switch(config)# interface vlan <vlan-id>
Switch(config-if)# ip pim sparse-dense-mode
Switch(config-if)# end
验证
使用本部分可确认配置能否正常运行。
C9800命令
C9800# show wireless multicast
C9800# show ap multicast mom
第3层交换机命令
Switch# show ip pim interface
mDNS可以在C9800中运行,无需任何特殊配置,只要mDNS握手涉及的设备(例如客户端和Chromecast)位于同一子网。但是,建议使用mDNS网关过滤mDNS流量,如下一节所述。
mDNS网关
AireOS无线控制器上引入的mDNS网关功能在来自16.11.1的Catalyst 9800无线控制器上也受支持。默认情况下,此功能处于禁用状态,您可以在全局启用此功能后针对每个WLAN启用/禁用它。
mDNS网关功能的工作方式与之前的AireOS无线控制器相同,C9800在有线和无线接口上侦听Bonjour服务(mDNS通告和查询),缓存从内部数据库中每个源/主机通告的这些Bonjour服务(AirPlay、AirPrint、Googlecast等),能够在不同的广播域之间桥接这些mDNS数据包,同时过滤不需要的服务并避免其在网络中的组播流。这样,您可以在不同的子网中拥有此类服务的源和客户端,并控制网络中的mDNS流量。
充当mDNS网关的C9800对来自客户端(用于缓存服务)的mDNS查询做出应答,这些客户端使用其IP地址获取这些mDNS响应,该VLAN分配给请求该服务的客户端。这就是为什么C9800控制器上所有需要mDNS/Bonjour服务的客户端的VLAN必须在交换虚拟接口(SVI)上配置有效的IP地址。
有关Bonjour/mDNS网关功能的详细信息,请参阅AireOS无线局域网控制器Bonjour阶段III部署指南。
配置
网络图
这是示例设置的图。其目的是允许无线客户端使用来自不同子网的mDNS服务,这需要mDNS网关,如图所示。

通过图形用户界面配置mDNS网关
步骤1.要全局启用mDNS网关,请导航到配置>服务> mDNS。在Global下,切换到Enable mDNS Gateway,然后选择Apply,如图所示。

第 2 步(可选): 为自定义服务策略配置自定义mDNS服务列表。如果要使用默认mDNS服务列表和服务策略,请转到步骤5。
在Configuration > Services > mDNS下,在Service Policy选项卡中,根据需要配置新的服务列表。C9800具有大多数无线设备使用的预定义公共服务。如果不需要特殊(不可用)服务,可以使用预定义的可用服务创建列表,但是,如果需要,还可以添加新服务(使用服务定义)。
您既需要传入(IN)方向的服务列表,也需要传出(OUT)方向的服务列表(因此当进入C9800和离开该服务时,会对所需的服务进行过滤;因此,两个列表应具有相同的服务)。
1.定义IN服务的服务列表名称。
2.选择IN方向。
3.选择Add Services。
4.显示“可用服务”下拉列表。选择所需的Service和Message Type any。
5.重复步骤,根据需要添加更多服务。
6.选择Apply to Device,如图所示。

1.定义OUT服务的服务列表名称。
2.选择OUT方向。
3.将可用服务移到已分配的服务列表。
5.重复步骤,根据需要添加更多服务。
6.选择Apply to Device,如图所示。

提示:根据之前的AireOS WLC的迁移任务,您可以根据AireOS默认mDNS列表构建新列表。
第 3 步(可选): 如果使用自定义服务列表(第2步),您需要定义自定义mDNS服务策略,以便与这些自定义服务列表一起使用。导航到配置>服务> mDNS >服务策略。选择服务策略,然后执行以下步骤:
1.定义服务策略名称。
2.将自定义服务列表IN添加到服务列表输入。
3.将客户服务列表添加到服务列表输出。
4.在Location下,选择site-tag、Location Specific Services(LSS)或您的首选可用选项。在本示例中,使用site-tag,如图所示。

第 4 步: (可选)。 将mDNS服务策略传递到策略配置文件。
导航到Configuration > Tags & Profiles > Policy > Policy Profile Name > Advanced,然后从mDNS Service Policy下拉列表中选择之前创建的自定义mDNS Service Policy(在本例中为mdns-policy1),然后选择Update和Apply to Device,如图所示。

第5步:导航到Configuration > Tags & Profiles > WLANs > WLAN > Advanced,然后选择Gateway on mDNS mode下拉列表,然后选择Update和Apply to Device。默认模式为桥接(您可以使用Drop在WLAN上禁用/丢弃mDNS服务),如图所示。

如果未使用自定义服务策略,则WLAN使用分配给策略配置文件的default-mdns-service-policy,该策略使用mDNS default-service-list。您可以使用以下命令验证默认服务列表:
C9800#show running-config mdns-sd default-service-list
=======================================================================
mDNS Default Service List
=======================================================================
Service Name PTR Name
=======================================================================
airtunes : _raop._tcp.local
airplay : _airplay._tcp.local
homesharing : _home-sharing._tcp.local
google-chromecast : _googlecast._tcp.local
printer-ipp : _ipp._tcp.local
printer-ipps : _ipps._tcp.local
printer-lpd : _printer._tcp.local
printer-socket : _pdl-datastream._tcp.local
itune-wireless-devicesharing2 : _apple-mobdev2._tcp.local
通过命令行界面配置mDNS网关
步骤1.使用以下命令全局启用mDNS:
C9800#conf t
Enter configuration commands, one per line. End with CNTL/Z.
C9800(config)#mdns-sd gateway
C9800(config-mdns-sd)#transport both
C9800(config-mdns-sd)#active-query timer 30
C9800(config-mdns-sd)#exit
C9800(config)#
第 2 步(可选): 为IN服务配置自定义服务列表,并从可用列表中添加所需的其他服务:
C9800(config)#mdns-sd service-list my-mdns-list IN
C9800(config-mdns-sl-in)#match ?
airplay airplay
airserver airserver
airtunes airtunes
amazon-fire-tv amazon-fire-tv
apple-airprint apple-airprint
apple-continuity apple-continuity
apple-file-share apple-file-share
apple-homekit apple-homekit
apple-itunes-library apple-itunes-library
apple-itunes-music apple-itunes-music
apple-itunes-photo apple-itunes-photo
apple-keynote apple-keynote
apple-rdp apple-rdp
apple-remote-events apple-remote-events
apple-remote-login apple-remote-login
apple-screen-share apple-screen-share
apple-timecapsule apple-timecapsule
apple-timecapsule-mgmt apple-timecapsule-mgmt
apple-windows-fileshare apple-windows-fileshare
fax fax
google-chromecast google-chromecast
homesharing homesharing
itune-wireless-devicesharing2 itune-wireless-devicesharing2
multifunction-printer multifunction-printer
phillips-hue-lights phillips-hue-lights
printer-ipp printer-ipp
printer-ipps printer-ipps
printer-lpd printer-lpd
printer-socket printer-socket
roku roku
scanner scanner
spotify spotify
web-server web-server
workstation workstation
C9800(config-mdns-sl-in)#match airtunes message-type any
C9800(config-mdns-sl-in)#exit
为OUT服务配置自定义服务列表,并从可用列表中添加所需的不同服务:
C9800(config)#mdns-sd service-list my-mdns-list-out OUT
C9800(config-mdns-sl-out)#match ?
airplay airplay
airserver airserver
airtunes airtunes
amazon-fire-tv amazon-fire-tv
apple-airprint apple-airprint
apple-continuity apple-continuity
apple-file-share apple-file-share
apple-homekit apple-homekit
apple-itunes-library apple-itunes-library
apple-itunes-music apple-itunes-music
apple-itunes-photo apple-itunes-photo
apple-keynote apple-keynote
apple-rdp apple-rdp
apple-remote-events apple-remote-events
apple-remote-login apple-remote-login
apple-screen-share apple-screen-share
apple-timecapsule apple-timecapsule
apple-timecapsule-mgmt apple-timecapsule-mgmt
apple-windows-fileshare apple-windows-fileshare
fax fax
google-chromecast google-chromecast
homesharing homesharing
itune-wireless-devicesharing2 itune-wireless-devicesharing2
multifunction-printer multifunction-printer
phillips-hue-lights phillips-hue-lights
printer-ipp printer-ipp
printer-ipps printer-ipps
printer-lpd printer-lpd
printer-socket printer-socket
roku roku
scanner scanner
spotify spotify
web-server web-server
workstation workstation
C9800(config-mdns-sl-out)#match airplay
C9800(config-mdns-sl-out)#exit
第 3 步(可选): 使用以下命令创建mDNS 服务策略:
C9800(config)#mdns-sd service-policy mdns-policy1
C9800(config-mdns-ser-pol)#location site-tag
C9800(config-mdns-ser-pol)#service-list my-mdns-list IN
C9800(config-mdns-ser-pol)#service-list my-mdns-list-out OUT
C9800(config-mdns-ser-pol)#exit
C9800(config)#
第 4 步(可选): 使用以下命令,将mDNS Service Policy添加到策略配置文件:
C9800(config)#wireless profile policy my-policy-profile
C9800(config-wireless-policy)#mdns-sd service-policy mdns-policy1
Warning! Ensure mDNS service policy is configured globally.
C9800(config-wireless-policy)#exit
步骤5.使用以下命令在WLAN中启用mDNS网关:
C9800(config)#wlan 9800-mdns
C9800(config-wlan)#shut
C9800(config-wlan)#mdns-sd gateway
Warning! Ensure global mDNS gateway is configured.
C9800(config-wlan)#no shut
C9800(config-wlan)#exit
锚点 — 外部场景
当您在移动锚点WLAN中实施mDNS网关功能时,其中外部WLC和锚点WLC均为C9800,无线客户端从锚点控制器中的VLAN获取其IP地址,这是行为和所需的设置:
- 锚点控制器是充当mDNS网关的控制器,它缓存连接到该锚点WLAN的所有设备和相应VLAN的服务,并响应对这些缓存服务的查询。
- 当响应查询时,C9800锚点控制器可以获取响应,并使用分配给请求服务的客户端的VLAN的SVI IP地址。因此,所有需要mDNS服务的客户端VLAN必须在锚点中的SVI处具有IP地址。
- 必须在外地和锚点WLC上全局启用mDNS网关。
- 外部和锚点控制器都可以使用具有相同服务(默认或自定义)的相同mDNS服务策略,这些服务可以分配给链接到此锚点WLAN的策略配置文件。所有这些配置设置与本文档中介绍的步骤相同。
- 移动锚点WLAN设置的唯一配置差异如下。导航到WLAN > Advanced设置,在外部C9800中必须是Bridging,在锚点C9800中必须是Gateway。
验证
使用本部分可确认配置能否正常运行。
使用命令:
C9800#show mdns-sd summary
mDNS Gateway: Enabled
Active Query: Enabled
Periodicity (in minutes): 30
Transport Type: Both IPv4 and IPv6
通过使用此命令列出mDNS缓存的服务,查看WLC是否实际缓存mDNS服务,以及哪些服务(在移动锚点WLAN中,可以在锚点控制器上检查此缓存),您可以在其中查看提供该服务的设备的源MAC地址,甚至其IP地址,以及其他mDNS详细信息:
C9800#show mdns-sd cache
------------------------------------------------------------- PTR Records -------------------------------------------------------------
RECORD-NAME TTL TYPE ID CLIENT-MAC RR-RECORD-DATA
---------------------------------------------------------------------------------------------------------------------------------------
_googlecast._tcp.local 4500 WLAN 2 48d6.d50c.a620 Chromecast-Ultra-687f65f66d478b2c787eac8bc7c9efad.
------------------------------------------------------------- SRV Records -------------------------------------------------------------
RECORD-NAME TTL TYPE ID CLIENT-MAC RR-RECORD-DATA
---------------------------------------------------------------------------------------------------------------------------------------
Chromecast-Ultra-687f65f66d478b2c787eac8bc7c9 4500 WLAN 2 48d6.d50c.a620 0 0 8009 687f65f6-6d47-8b2c-787e-ac8bc7c9efad.loca
------------------------------------------------------------ A/AAAA Records -----------------------------------------------------------
RECORD-NAME TTL TYPE ID CLIENT-MAC RR-RECORD-DATA
---------------------------------------------------------------------------------------------------------------------------------------
687f65f6-6d47-8b2c-787e-ac8bc7c9efad.local 4500 WLAN 2 48d6.d50c.a620 172.16.9.11
------------------------------------------------------------- TXT Records -------------------------------------------------------------
RECORD-NAME TTL TYPE ID CLIENT-MAC RR-RECORD-DATA
---------------------------------------------------------------------------------------------------------------------------------------
Chromecast-Ultra-687f65f66d478b2c787eac8bc7c9 4500 WLAN 2 48d6.d50c.a620 [172]'id=687f65f66d478b2c787eac8bc7c9efad''cd=9A10
C9800#
故障排除
本部分提供了可用于对配置进行故障排除的信息。
如果需要检查有关C9800上发生的所有交换、查询、缓存行为、响应、丢弃、错误等的更多详细信息,请在重新创建问题的同时在C9800上收集这些跟踪(连接提供该服务的设备和客户端请求该服务,让他们尝试发现所需的服务):
- 在C9800上运行以下命令:set platform software trace wncd <0-7> chassis active R0 mdns debug
- 重现问题.
- 最后,运行此命令以收集已启用的跟踪:show platform software trace message wncd <0-7> chassis active R0
相关信息