Linux におけるローカル名前解決サービスの対応状況

Linuxにおける、ローカルネットワーク環境での(DNS等のサーバを必要としないゼロ・コンフィギュレーションな)名前解決サービスの対応状況について雑に調べてまとめる。

名前解決サービス
NetBIOS on TCP/IP (NBT)
Windowsの旧来の名前解決サービス。ネットワーク探索にも使われる。
最近は脆弱性とか色々とあって非推奨。WannaCryで悪用されたSMB1.0/CIFS系のポートを使っているので、そもそも最近はポートごと塞がれていることのほうが多かったりするのかも?
Linuxでの対応も限定的になって来ている気がする。
対応ソフトウェア
- samba-nmbd
- SambaのNetBIOSデーモンの実装。
- 他のホストに自ホスト名を提供する。
- Windowsのネットワーク探索にも対応。
- samba-winbind
- SambaのAD実装?
- これに含まれるlibnss-wins.soを使用することで、NSSを使って他ホストのNetBIOS名の解決ができるようになる。
- samba-nmblookup
- Sambaに含まれるコマンドで、他ホストのNetBIOS名の解決を行う。
正直情報が色々あってよく分からなかった。
でも、もうNBTは非推奨だから分かんなくてもどうでも良いか。
参考

LLMNR (Link-Local Multicast Name Resolution)
Windows系のLAN向け名前解決プロトコル(?)。NetBIOSに代わるもの?
Windows Vistaあたりから導入。
Linuxではそもそもあまり使われていないような気もする。
対応ソフトウェア
- systemd-resolved
- 自ホストの名前公開(レスポンダ) / 他ホストの名前解決(リゾルバ)の両方に対応。
ソフトも少ないし情報も少ない。
参考

mDNS (multicast DNS)
Apple系のLAN向け名前解決プロトコル(?)。
根っこはLLMNRと同じZeroconfらしい。
Bonjourの名前で知られる。
WindowsではWindows8.1以前はBonjour for Windows (by Apple)のインストールを必要とした。
Windows10以降は標準でサポートされる。
対応ソフトウェア
- Avahi
- LinuxでのZeroconf/mDNS実装。
- avahi-daemonによる名前公開(レスポンダ)
- nss-mdnsによる名前解決(リゾルバ)
- systemd-resolved
- systemd-resolvedもmDNSをサポートする。
- レスポンダとリゾルバの両方に対応。
Avahiとsystemd-resolvedのmDNS機能は競合するので、同時に使うことはできない(Avahiのほうが有効なことが多く、systemd-resolvedのmDNSはデフォルトで無効化されがちな気がする)。
参考

ネットワーク探索
指定したホスト名に対してIPアドレスを引くことができるのが上記のNetBIOS/LLMNR/mDNSだが、LAN内のホスト名の一覧が欲しい(知らないホスト名を知りたい)という要求が(特にGUIで)存在する。
これを行うためのネットワーク探索プロトコル(正確にはプロトコルではないかもしれないものもそんな感じで説明する。理解してないので)がいくつか存在する。

NetBIOS on TCP/IP
NBTはネットワーク探索もサポートする。
一方でLLMNR/mDNSはネットワーク探索の機能を持たないので、NBTを廃止してLLMNR/mDNSに移行しようとするとLAN内のファイルサーバーがファイルマネージャで見えない等という問題が発生する。

LLTD (Link-Layer Topology Discovery)
Windows Vistaから導入されたらしい、Windows向けの(プロプライエタリな?)ネットワーク探索プロトコル。
よく分からない。
Linux向けにはMicrosoftの(プロプライエタリな)参照実装が提供されていたらしい。
Linux向けのFLOSS実装は無さそうだし、そもそもLinuxでは使われてなさそう。
参考

LLDP (Link-Layer Discovery Protocol)
IEEE 802.1ABで標準化されたオープンなプロトコル。
ただし、ネットワーク探索プロトコルというより、ホスト情報の広告(Advertise)のためのプロトコル。
LLDPで情報を公開しているホストを巡回することでネットワーク探索を実現できる。
ネットワーク上のホストの監視等によく使われるらしいが、ちゃんと調べていないので分からない。
対応ソフトウェア
- lldpad
- lldpd
名前が紛らわしいが違うもの。よく調べていないので詳細は不明。lldpdのほうが設定が簡単?
参考

WS-Discovery (Web Services Dynamic Discovery)
Microsoftが中心となって開発された、主にWindowsにおけるLAN上のプリンタ等の周辺機器の探索・発見を行うためのプロトコル。
WSD (Web Services of Devices) に対応した周辺機器と通信するために、これを探索する際に使用される。
対応ソフトウェア
- wsdd
- LinuxにおけるWS-Discoveryレスポンダデーモンの実装。
- Discoveryモード(探索する側)をサポートするクライアントも含む。
参考