Raspbianマシンが最初からavahiが入ってるおかげでmDNSで名前を解決して接続できるのが便利なので、DebianサーバーでもmDNSで名前が解決できるようにavahiをセットアップすることにした。
まずは関連パッケージをインストール。必要な/etc/nsswitch.confの書き換え等は全部パッケージがやってくれる。
sudo apt-get install avahi-daemon libnss-mdns
avahiが稼働するとmDNSで解決できる名前は/etc/hostnameに書かれた名前に.localをつけたものになる。
mDNSの設定に必要な作業は基本はこれだけだが、手元のDebianサーバーはファイヤーウォールで余計な接続をすべてブロックする設定になってるので、名前解決のためにはクエリを受け入れるようにポートを開放する必要がある。なので、/etc/iptables/rules.v4のどこかに以下の設定を追記する。
-A INPUT -d 224.0.0.251/32 -p udp -m udp –dport 5353 -j ACCEPT
mDNSのクエリはマルチキャスト(224.0.0.251)でUDPのポート5353に届くので、これをファイヤーウォールが受け入れる様にすればいい。
同様にせっかくデフォルトでavahiはIPv6でも答えるのだから/etc/iptables/rules.v6にも追記。
-A INPUT -d ff02::fb/128 -p udp -m udp –dport 5353 -j ACCEPT
IPv6のマルチキャストアドレスはサービスごとに割り当てられてるのでmDNSに割り当てられた[ff02:fb]を聞く様にポートを開く。
面倒なので、avahi-daemonの起動とファイヤーウォールルールの反映のために再起動すれば、以後、mDNSで名前解決をこころみるとちゃんと答えてくれるようになる。