alpine/openwrt开启mdns

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.conf

    forward-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

发表回复