局域网中通常有一些共享设备比如 NAS、打印机等,在同网络的主机可以自主发现这些设备,但是该网络的下属子网无法自动识别。

如果使用的是 OpenWrt 路由,那么可以尝试使用 mdns-repeater 这个工具来帮助子网获取上级网络的共享设备。

NAS、打印机等共享设备的自主发现均基于 UDP 的 mDNS 协议,如果要实现 Wan 到 Lan 的设备自主发现,则需要将 Wan 网络的 mDNS 消息播发到 Lan 网络中。

mdns-repeater 就是这样一个工具,在 OpenWrt 路由中,可以通过 系统-> 软件包 搜索 mdns 来安装该包,然后通过终端修改其配置文件,主要是指定 Wan 和 Lan 网络的接口名称:

1
2
3
4
5
# /etc/config/mdns_repeater

config mdns_repeater 'main'
        list interface 'wan'
        list interface 'br-lan'

然后在终端执行 /etc/init.d/mdns-repeater enable/etc/init.d/mdns-repeater start 来使能开机启动和启动程序。

同时还需要修改路由防火墙,允许 Wan 的 mDNS 消息可以通过。在 网络->防火墙 中添加一条通信规则:名称 Allow-mDNS,协议选择 UDP,源区域选择 wan,目标区域选择 设备(输入),目标端口选择 5353,操作选择 接受,然后保存应用。

然后过一段时间后,在 Lan 网络的主机就可以识别到 Wan 网络上的而共享设备了。