家里添置了一台打印机,遇到的问题。
手机通过 WireGuard 回到家里的局域网后,可以访问 LAN 中的设备,但却无法自动发现网络打印机。
很多现代网络设备会使用 mDNS(Multicast DNS) 来进行服务发现。例如 AirPrint、一些网络打印服务以及其他局域网服务,都可能依赖 mDNS 来告诉客户端:这里有一台打印机。
但是 mDNS 是基于多播的,而 WireGuard 并不会天然把 LAN 上的 mDNS 广播转发给 WireGuard 客户端。
最终通过 mdns-repeater 把 LAN 和 WireGuard 接口之间的 mDNS 流量转发起来,解决了这个问题。
wireguard在openwrt 上,所以openwrt直接安装:
opkg update
opkg install mdns-repeater
然后用opkg files mdns-repeater命令看看配置文件在哪里。
最后修改配置文件/etc/config/mdns_repeater,把lan接口和wg接口打通。
config mdns_repeater 'main'
list interface 'lan'
list interface 'wg'
由于我的lan和wg本来就在同一个防火墙区域,所以无需配置防火墙。