表題の通り、OpenWrt上でmDNS(ホスト名.local)を使って名前解決したいと思ったんですが、どうやら無理っぽいと結論づけました。
普段のLinux環境での名前解決
多くのLinux環境ではglibc+NSS(Name Service Switch)で名前解決をしています。mDNSでの名前解決をしようと思ったら/etc/nsswitch.conf
にmdnsの設定を書けば動くはずですし、mDNS系のパッケージをインストールすれば設定が追加されているはずですので意識せずにmDNSでの名前解決が可能だろうと思います。
一方OpenWrt環境では
一方、最近のOpenWrtではlibcとしてmuslを採用しており、NSS自体が存在しません。straceで確認してみたのですが、まず/etc/hosts
を見てファイルベースで名前解決を試み、次に/etc/resolv.conf
を見てローカルのdnsmasqでの名前解決を試み、そこで解決できなければ試合終了という挙動のようです。
dnsmasqがmDNSも問い合わせるような設定があればいいのですが、そのような動作は難しそうでした。
結論
OpenWrt環境ではmDNSによる名前解決は難しそうだという結論を得ました。
代替手段についてですが、OpenWrt環境ではLAN内のドメイン(デフォルトでは.lan)で名前解決できるはずなので、そちらを使うことにしました。敗北感がありますね。