Linux,BSDでmDNSの名前解決がavahiで行われない場合は .local ドメインがないか確認しましょう。

why avahi local domain

Linux,BSD 及びそれを組み込んでいるネットワーク上の機器では、Active Directoryで .local ドメイン名を設定しているとavahiによるmDNS検索が正常に動作しません。

Linux,BSDはAvahiを使用してインターネット標準規格のmDNSを解決していますが、mDNSでは .local を使用します。そのため、既に .local ドメインを使用しているネットワーク上では、コンフリクトが発生するので、どこに接続するのか全く解らないというセキュリティ上、とても重篤な不具合が発生します。そのために、セキュリティを重視するAvahiでは使用するLinux,BSDの各ディストリビュータに対してネットワーク上で.local ドメインを見つけたら自動的にAvahiの動作が停止するように設定することを推奨しています。

しかし、数多くある Linux,BSD のディストリビューションや、それらを採用しているルーター、プリンタ、NAS、携帯情報機器、電話機などの通信機、産業用機器、医療機器などのネットワーク上機器の中には、この勧告に従っていないものもあるかもしれませんし、勧告とは異なる実装で対応しているかもしれません。つまり、製品毎に挙動が一定しない場合があるので、注意してください。

Windows Server などで Active Directory を構築し、なおかつ .local で終わるドメイン名を設定している組織の場合はこちらに該当します。

特に日本だけは極端に多くの組織で .local 名で AD を構築している事が多い模様なのでセキュリティを重視する場合、或いは人命などに関わる産業用機器や医療機器を扱う組織は、安全のために早期に .local ドメインを変更することをお勧めします。なにしろ組み込みlinuxなどの場合にはどのような実装になっているのか全く解らない場合が多いのですから。

日本だけ極端に多く .local で構築されているドメインが多いということは、海外では問題なく使用されている機器が日本に持ってくると、なぜか日本のみで問題が多く発生するという事にも繋がります。

こちらがAvahiの勧告文章になります。
https://web.archive.org/web/20160608083415/http://avahi.org/wiki/AvahiAndUnicastDotLocal

該当箇所を翻訳します。

ディストリビューター
ディストリビューターの方は、Avahi / nss-mdnsをパッケージ化する際に以下の推奨事項に従ってください。

起動時に、新しく設定されたDNSサーバにゾーン.localが存在するかどうかをチェックして、DNS設定が変更されると(例えば、DHCPフックスクリプトから)、特別なスクリプトを実行することをお勧めします。もし .localがあれば、Avahiをシャットダウンし、nss-mdnsを無効にしてください。

つまり、勧告に従っている Linux, BSD を採用しているNASやネットワーク機器は .local ドメインのネットワークが存在する場合にはサービスを自動停止するので、想定と異なる挙動が発生します。

また、勧告に従っていないディストリビューションや製品の場合は意図しない機器に接続を行うかもしれません。どちらにしても困ったことです。

例えば、ubuntu の場合、.local ドメインを使用しているネットワークの場合は自動的にAvahiの動作を停止します。下記のubuntuリリースノートも一部、翻訳しました。
https://wiki.ubuntu.com/JauntyJackalope/ReleaseNotes#Avahi

.localドメインが存在する場合、Avahiは起動しません

mDNS “zeroconf”標準を実装しているavahi-daemonパッケージには、競合する.local DNSドメインが存在するときに実行されないようにするチェックが含まれています。 一部のISPは、そのような “.local”ドメインをネットワーク上にアドバタイズしていると報告されています。
Ubuntu 9.04ホストは、ローカルネットワーク上でアドバタイズされている名前を見つけることができません。
このように構成されたネットワーク上でmDNSを強制的に使用するには、次のコマンドを実行します。

sudo sed -i -e'/AVAHI_DAEMON_DETECT_LOCAL/s/1/0/' /etc/default/avahi-daemon
sudo service avahi-daemon start

なお、この最後のコマンドを使用すれば、強制的にAvahiが起動しますが、コンフリクトが発生して別のマシンに接続する可能性があります。なぜデフォルトで .local を見つけたら強制停止するようにしているのか、よく考えて設定しましょう。

.local ドメインが存在するだけで様々な製品の標準搭載機能が停止するか、異常動作する可能性があります。解りづらく、原因解明が遅れる場合が多いので、要注意ですね。

.local ドメインが設定されている場合の mDNS問題については、こちらの別ページに詳しく記載しています。

Mac が参加するADのドメイン名で .local を使わないでください

ピクチャーコードでは Active Directory で Mac, iPhone, iPad を一元管理するソリューションを提供しています。

そのため、Active Directory を導入されている環境に伺うことが多いのですが、大変に困ったことに .local で構築されている場合も多く見られます。

自社広告Apple AD連携サービス