FreeBSDでDNSと連動したdhcpサーバーの運用がめんどうになってきたので、FreeBSDでもホスト名.localでの名前解決ができるように設定をしました。手順は、以下の説明にようにしました。
FreeBSD 12:mdns
https://zeke.jp/dns
以下に手順を引用します。
# pkg instgall mDNSResponder
....
# pkg install mDNSResponder_nss
...
# cat /etc/rc.conf
mdnsd_enable="YES"
mdnsresponderposix_enable="YES"
mdnsresponderposix_flags="-f /usr/local/etc/mDNSResponder.conf"
# cat /usr/local/etc/mDNSResponder.conf
ホスト名
_ssh._tcp. local
22
ホスト名 ssh server
...
# cat /etc/nsswitch.conf
...
# hosts: files dns
hosts: files mdns dns
...
# /usr/local/etc/rc.d/mdns start
...
# /usr/local/etc/rc.d/mdnsresponderposix
...
#
こうするとFreeBSDからWindowsなどのPCに対して、またその逆に以下のようにpingができるようになります。
$ ping ホスト名.local
mDNSでsshやhttpサービスを提供するホストは
Zeroconf 考察。
https://running-dog.net/2015/07/post_1544.html
の説明のように見つけることができます。以下に例をあげます。
$ dns-sd -B _ssh
Browsing for _ssh._tcp
DATE: ---Fri 22 Apr 2022---
14:40:34.422 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
14:40:34.422 Add 3 21 local. _ssh._tcp. ss-mini18
^C
$
サービス名には_httpや_smbなどあり、一覧は以下のようにして見つけることができます( discover iOS device name using mDNS - https://stackoverflow.com/questions/18884422/discover-ios-device-name-using-mdns 参照)。
$ dns-sd -B _services._dns-sd._udp
Browsing for _services._dns-sd._udp
DATE: ---Fri 22 Apr 2022---
15:01:13.294 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
15:01:13.294 Add 3 4 . _tcp.local. _amzn-wplay
15:01:13.294 Add 3 4 . _tcp.local. _airport
^C
$
IPアドレスは以下のようにします。
$ dns-sd -G v4 macbook.local
DATE: ---Fri 22 Apr 2022---
15:05:50.623 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
15:05:50.807 Add 2 4 macboo.local. 172.xx.yyy.zzz 120
^C
$
Linux(ubuntu 20.04)については以下のようにすればよいようです。
$ sudo apt install avahi-daemon libnss-mdns
$ cat /etc/nsswitch.conf
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
$
IPv6も使う場合には以下のようにするようです。
hosts: files mdns_minimal [NOTFOUND=return] dns mdns
これだけではだめでホストでサービスの広告をしなくてはなりません。
Avahiにあるように、AvahiにはSSHサーバーを広告するサンプルがありました。
https://wiki.archlinux.jp/index.php/Avahi
# cp /usr/share/doc/avahi/ssh.service /etc/avahi/services/avahiはファイルが置かれたことを検知するようで、デーモンの再起動などは不要です。
そして、FreeBSDのdns-sdと同じようなことをするにはmds-scanパッケージを使います。
$ sudo apt install mdns-scan
...
$ mdns-scan
+ AirPortTimeCapsule802.11ac._smb._tcp.local
+ EPSON PX-504A-IOT._smb._tcp.local
...
こうしておけばLANのホスト名とIPアドレスの組の管理が少しだけ楽になります。