alpine和openwrt这两个系统用的都是uclibc,但是uclibc没有提供对mdns的任何支持,所以在基于uclibc的系统上使用mdns是一件很困难的事。alpine提供的方案是用avahi2dns把mdns请求转换为普通的dns请求。
alpine开启mdns
- mdns服务端支持
编辑/etc/apk/repositories,添加
https://mirrors.hetao.me/alpine/edge/testing
然后执行命令
apk add avahi rc-update add avahi-daemon rc-service avahi-daemon start
- mdns客户端支持
apk add avahi2dns
rc-update add avahi2dns
rc-service avahi2dns start
apk add unbound
创建/etc/unbound/unbound.conf.d/avahi-local.conf:forward-zone: name: "local" forward-addr: 127.0.0.1@5354 server: do-not-query-localhost: no domain-insecure: "local"
编辑/etc/unbound/unbound.conf,添加下面一行
include: "/etc/unbound/unbound.conf.d/*.conf"
编辑/etc/unbound/unbound.conf.d/resolvconf.confforward-zone: name: "." forward-addr: 223.5.5.5
unbound默认是开启dnssec的,如果用自己的dns server需要关闭dnssec.
编辑/etc/resolv.conf
nameserver 127.0.0.1
启动unbound服务
rc-update add unbound rc-service unbound start
openwrt
- 服务端支持
参考:https://openwrt.org/docs/guide-developer/mdns - 客户端支持
参考:https://blog.csdn.net/qq_38026359/article/details/121320404
关于客户端支持也可以采用avahi2dns的方案,不过目前openwrt还没有集成这个包。
参考:
https://wiki.alpinelinux.org/wiki/MDNS