05-mDNS中继配置
本章节下载: 05-mDNS中继配置 (303.68 KB)
mDNS(Multicast DNS,组播域名)协议是基于mDNS服务的零配置网络协议。mDNS协议致力于让网络配置更简单,支持mDNS协议的服务提供设备能够以组播方式发送服务信息,使局域网内的终端用户设备在无需获取服务提供设备信息的情况下,自动发现可提供服务的设备。
目前,mDNS协议仅定义了如何在网段内使用mDNS协议报文传播服务信息,mDNS中继用来实现跨网段转发mDNS报文,实现mDNS协议在大规模网络中的应用。
一个mDNS组网环境中,主要包括以下几种设备类型:
· mDNS终端用户设备:通过mDNS协议访问网络中提供mDNS服务的设备,如iPhone和iPad等。
· mDNS服务提供设备:为mDNS终端用户设备提供服务的设备,如打印机和视频服务器等。
· mDNS网关:记录网络中的mDNS服务提供设备的信息,应答mDNS终端用户设备的服务请求。关于mDNS网关功能的详细介绍,请参见“WLAN配置指导”中的“Bonjour网关配置”。
· mDNS中继:在跨网段组网中保证mDNS终端用户设备和mDNS服务提供设备可以互通。mDNS中继还支持定时探测网络中的mDNS服务提供设备。
如图1-1所示,在mDNS组网中,mDNS终端用户设备(Apple TV和iPad等)和mDNS服务提供设备(打印机和服务器等)在不同的VLAN内,AP和AC间需要跨网段三层转发。因为mDNS终端用户设备和mDNS服务提供设备发送给mDNS网关的mDNS报文的目的地址填充的是组播地址,所以AC作为mDNS网关时,无法收到mDNS终端用户设备和mDNS服务提供设备发送的mDNS报文。为了解决这个问题,需要在Device A和Device B上开启mDNS中继功能。mDNS中继上配置了mDNS网关的地址,mDNS中继收到mDNS终端用户设备和mDNS服务提供设备发送的mDNS报文后,会将报文的目的地址改为mDNS网关的地址并转发出去,保证mDNS网关可以收到mDNS终端用户设备和mDNS服务提供设备发送的mDNS报文。
图1-1 带mDNS中继的组网图
在mDNS网络中,mDNS中继的主要功能包括:
· mDNS服务提供设备通告服务,mDNS中继收到mDNS服务提供设备发送的通告报文后,将报文目的IP地址改为mDNS网关的IP地址,单播转发给mDNS网关。
· mDNS终端用户设备请求支持,mDNS中继收到mDNS终端用户设备发送的请求报文后,将报文目的IP地址改为mDNS网关的IP地址,单播转发给mDNS网关。收到mDNS网关的mDNS应答报文后,将目的地址替换为组播地址转发给mDNS终端用户设备。
· mDNS中继定时探测功能,mDNS中继支持定时发送mDNS请求报文探测VLAN/VSI内mDNS服务提供设备,并将收到的mDNS应答报文转发给mDNS网关,保证mDNS网关能及时更新记录的mDNS服务表项信息。
mDNS服务提供设备接入网络后,将所能提供的服务通告给mDNS网关。mDNS服务提供设备的通告信息包括主机名和服务名,主机名用来标识服务提供设备,服务名用来标识设备提供的服务类型等信息。
图1-2 mDNS服务提供设备通告服务原理图
如图1-2所示,mDNS服务提供设备通告过程如下:
(1) 探测主机名阶段
a. mDNS服务提供设备接入网络后,就自动生成一个主机名。为了确保网络中主机名唯一性,mDNS服务器发送一个目的地址为组播地址224.0.0.251的mDNS请求报文进行探测,并启动探测周期定时器。
b. mDNS中继收到该请求报文后,将目的地址替换为mDNS网关的IP地址,将该请求报文单播转发给mDNS网关。
c. mDNS网关收到mDNS请求报文后,查询本地记录的主机名信息中是否有相同的主机名。如果存在相同的主机名,则mDNS网关回复一个mDNS冲突报文给mDNS中继。mDNS中继收到冲突报文后,将报文的目的地址改为组播地址224.0.0.251后转发给mDNS服务提供设备。
d. mDNS冲突提供设备收到冲突报文后,会重新生成一个主机名,再启动探测过程。
(2) 通告主机名阶段
a. 如果在探测周期到期后,mDNS服务提供设备都未收到mDNS冲突报文,则mDNS服务提供设备发送一个目的地址为组播地址224.0.0.251的mDNS请求报文进行通告。
b. mDNS中继收到该请求报文后,将目的地址替换为mDNS网关的IP地址,将该请求报文单播转发给mDNS网关。
c. mDNS网关收到mDNS请求报文后,记录请求报文中的主机名和IP地址信息。
(3) 探测服务名阶段
a. 主机名通告结束后,mDNS服务提供设备为了确保网络中服务名的唯一性,发送一个目的地址为组播地址224.0.0.251的mDNS请求报文进行探测,并启动探测周期定时器。
b. mDNS中继收到该请求报文后,将目的地址替换为mDNS网关的IP地址,将该请求报文单播转发给mDNS网关。
c. mDNS网关收到mDNS请求报文后,查询本地记录的服务名信息中是否有相同的服务名。如果存在相同的服务名,则mDNS网关回复一个mDNS冲突报文给mDNS中继。mDNS中继收到冲突报文后,将报文的目的地址改为组播地址224.0.0.251后转发给mDNS服务提供设备。
d. mDNS冲突提供设备收到冲突报文后,会重新生成一个服务名,再启动探测过程。
(4) 通告服务名阶段
a. 如果在探测周期到期后,mDNS服务提供设备都未收到mDNS冲突报文,则mDNS服务提供设备发送一个目的地址为组播地址224.0.0.251的mDNS请求报文进行通告。
b. mDNS中继收到该请求报文后,将目的地址替换为mDNS网关的IP地址,将该请求报文单播转发给mDNS网关。
c. mDNS网关收到mDNS请求报文后,记录请求报文中的服务名信息。
如图1-3所示,mDNS终端用户设备需要访问某些服务前,为了确定网络中是否存在对应的服务提供设备,需要发送一个目的地址为组播地址224.0.0.251的mDNS查询报文。mDNS中继收到请求报文后,将目的地址替换为mDNS网关的IP地址,将该请求报文单播转发给mDNS网关。mDNS网关收到请求报文后,根据报文中的服务名称查询记录的表项。如果查到对应的表项信息,将服务提供设备的主机名和IP地址放到应答报文中,单播发送给mDNS中继。mDNS中继将应答报文的目的地址改为组播地址224.0.0.251后转发给mDNS终端用户设备。终端用户设备收到应答报文后,可以根据报文中的IP地址访问对应的服务提供设备。其他mDNS终端用户设备收到应答报文后,也会学习并记录报文中的mDNS服务提供设备信息。
图1-3 mDNS终端用户设备请求支持原理图
mDNS服务提供设备接入网络时,会主动向mDNS网关发送通告报文。mDNS网关收到某个mDNS服务提供设备的通告报文后,根据报文内的信息创建对应的mDNS服务提供设备的表项信息。如果mDNS网关接入网络之前,网络中已经存在mDNS服务提供设备,则mDNS服务提供设备不会主动向mDNS网关发送报文。mDNS网关就无法获知该mDNS服务提供设备的信息。
mDNS网关上维护着网络中所有mDNS服务提供设备的服务信息表项,在表项老化时间到达前,mDNS网关如果收到mDNS服务提供设备的更新消息,则重置老化时间;如果未收到mDNS服务提供设备的更新消息,则删除对应的服务信息表项。当网络规模较大,大量VLAN或VSI中都存在mDNS服务提供设备时,mDNS网关可能无法及时收到所有mDNS服务提供设备的更新消息,导致mDNS服务提供设备的服务信息表项被误删除。
为了解决上述问题,需要在mDNS中继上开启mDNS中继的定时探测功能。开启本功能后,mDNS中继会按照配置的探测时间间隔向开启了mDNS中继功能的VLAN/VSI内发送mDNS请求报文。mDNS服务提供设备收到请求报文后,会向mDNS中继发送mDNS应答报文。mDNS中继收到应答报文后,会将应答报文单播转发给mDNS网关,保证mDNS网关可以及时学习到网络中所有mDNS服务提供设备的最新信息。
和mDNS相关的协议规范有:
· RFC 6762:Multicast DNS
mDNS中继配置任务如下:
(1) 指定mDNS网关的地址
(2) 开启mDNS中继功能
(3) (可选)配置mDNS中继转发mDNS报文的源地址
(4) (可选)开启mDNS中继定时探测功能
在mDNS中继上指定mDNS网关地址后,mDNS中继收到mDNS终端用户设备发送的mDNS请求报文后,会将报文目的组播地址修改为指定的mDNS网关的地址,并向mDNS网关单播转发mDNS请求报文。当mDNS中继收到mDNS网关应答的单播报文后,会将该单播报文转换成组播报文,在mDNS终端用户设备所在的VLAN或VSI内发送,保证发送请求的mDNS终端用户设备能收到应答报文,其他mDNS终端用户设备收到报文后,也能学习应答报文中的服务信息或刷新自身保存的服务信息。
(1) 进入系统视图。
system-view
(2) 配置mDNS网关的地址。
mdns relay gateway ip ip-address [ vpn-instance vpn-instance-name ]
缺省情况下,mDNS中继上未指定mDNS网关的地址。
只有在mDNS中继上指定mDNS网关的地址后,mDNS中继功能才能生效。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 开启mDNS中继功能。
mdns relay enable
缺省情况下,mDNS中继功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启mDNS中继功能。
mdns relay enable
缺省情况下,mDNS中继功能处于关闭状态。
如果mDNS中继向某个VLAN/VSI内发送mDNS探测报文或转发mDNS应答报文时,则使用该VLAN接口/VSI虚接口的IP地址作为mDNS报文的源地址。如果VLAN接口/VSI虚接口上未配置IP地址,则mDNS中继无法发送mDNS探测报文。如果mDNS中继设备上接入大量VLAN/VSI,为每个VLAN/VSI虚接口都配置一个IP地址,会极大浪费IP地址资源。通过本命令配置了mDNS中继转发mDNS报文的源地址后,当mDNS中继在某个VLAN/VSI内开启mDNS定时探测功能时,会将mDNS探测报文的源地址修改为该地址,再向VLAN/VSI内发送探测报文。mDNS中继收到mDNS组播报文后,将报文源地址修改为指定的IP地址,再转发给mDNS网关。
指定的ip-address必须是mDNS中继上的IP地址,且该地址到mDNS网关路由可达,否则mDNS中继无法收到应答报文。
建议将源IP地址指定为mDNS中继连接mDNS网关接口的IP地址。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 配置mDNS中继转发报文的源地址。
mdns relay source ip { ip-address | interface interface-type interface-number }
缺省情况下,如果mDNS中继向某个VLAN内发送mDNS探测报文或转发mDNS应答报文时,则使用该VLAN接口的IP地址作为mDNS报文的源地址。mDNS中继收到mDNS组播报文后,将报文源地址修改为出接口地址,再转发给mDNS网关。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 配置mDNS中继转发报文的源地址。
mdns relay source ip { ip-address | interface interface-type interface-number }
缺省情况下,如果mDNS中继向某个VSI内发送mDNS探测报文或转发mDNS应答报文时,则使用该VSI虚接口的IP地址作为mDNS报文的源地址。mDNS中继收到mDNS组播报文后,将报文源地址修改为出接口地址,再转发给mDNS网关。
开启本功能后,mDNS中继会按照配置的探测时间间隔向开启了mDNS中继功能的VLAN/VSI内发送mDNS请求报文。mDNS服务提供设备收到请求报文后,会向mDNS中继发送mDNS应答报文。mDNS中继收到应答报文后,会将应答报文单播转发给mDNS网关,保证mDNS网关可以及时学习到网络中所有mDNS服务提供设备的最新信息。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 开启mDNS中继定时探测功能。
mdns relay probe interval interval
缺省情况下,mDNS中继的定时探测功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启mDNS中继定时探测功能。
mdns relay probe interval interval
缺省情况下,mDNS中继的定时探测功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后mDNS中继的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令清除mDNS中继的相关信息。
表1-1 mDNS中继显示和维护
操作 |
命令 |
显示mDNS中继的配置信息 |
display mdns relay |
显示mDNS中继的报文统计信息 |
display mdns relay statistics |
清除mDNS中继的报文统计信息 |
reset mdns relay statistics |
如图1-4所示,某企业内部使用mDNS协议通信,工作区属于VLAN10,服务区属于VLAN20。VLAN10内终端设备通过AP设备接入,VLAN20内的服务设备通过mDNS中继接入。工作区使用192.168.1.0网段,服务区使用192.168.2.0网段,mDNS中继和mDNS网关间使用192.168.3.0网段。为了使工作区的工作人员需要使用服务区的打印机执行打印操作,需要在交换机设备上配置mDNS中继功能。
图1-4 mDNS中继基本组网图
(1) 配置mDNS网关
配置mDNS网关功能,配置AP、mDNS中继和mDNS网关间路由可达,具体配置过程略。
(2) 配置mDNS中继
# 配置mDNS网关地址为192.168.3.2。
<Switch> system-view
[Switch] mdns relay gateway ip 192.168.3.2
# 在VLAN10内开启mDNS中继功能。
[Switch] vlan 10
[Switch-vlan10] mdns relay enable
# 配置mDNS中继转发报文的源地址为192.168.3.1。
[Switch-vlan10] mdns relay source ip 192.168.3.1
[Switch-vlan10] quit
# 在VLAN20内开启mDNS中继功能。
[Switch] vlan 20
[Switch-vlan20] mdns relay enable
# 配置mDNS中继转发报文的源地址为192.168.3.1。
[Switch-vlan20] mdns relay source ip 192.168.3.1
[Switch-vlan20] quit
# 显示mDNS中继的配置信息。
[Switch] display mdns relay
mDNS relay configuration:
mDNS gateway IP: 192.168.3.2
mDNS relay configuration in VLANs:
VLAN ID Source IP address Probe interval (sec)
10 192.168.3.1 --
20 192.168.3.1 --
VLAN 10内的iPad可以访问VLAN 20内的打印机,并完成打印工作。
mDNS中继无法收到mDNS报文。
可能有以下几个原因:
· 未开启mDNS中继功能;
· 未指定mDNS网关地址;
(1) 执行display mdns relay命令,查看当前的配置信息。
(2) 查看配置信息后,进行如下处理:
¡ 如果mDNS中继功能未开启,则配置mdns relay enable命令开启。
¡ 如果mDNS中继上不存在mDNS网关的地址,则配置mdns relay gateway ip命令指定。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!