my.sample-domain.local
Linux Debian 9では、Postgresクライアントなど、他のコマンド以外のコマンドなどのコマンドを使用して特定のローカルドメインを確認できます。nslookup
host
ping
psql
Network Managerのようなものが私のDNSリゾルバを正しく設定したよう/etc/resolv.conf
ですが、なぜこれが起こるのかわかりません。
Windows 10を使用している同僚と確認すると、ホストファイルにカスタムエントリがありません。ただし、これらの場合は、ping
WindowsバージョンのPostgresとデータベースUIが期待どおりに機能し、ドメインをIPアドレスとして解決します。
以下をご覧ください:
$ ping my.sample-domain.local
ping: my.sample-domain.local: Name or service not known
$ host my.sample-domain.local
my.sample-domain.local has address <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>
$ ping -c 5 <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>
PING <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN> (<THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>) 56(84) bytes of data.
64 bytes from <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>: icmp_seq=1 ttl=128 time=1.16 ms
64 bytes from <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>: icmp_seq=2 ttl=128 time=0.644 ms
64 bytes from <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>: icmp_seq=3 ttl=128 time=0.758 ms
64 bytes from <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>: icmp_seq=4 ttl=128 time=0.684 ms
64 bytes from <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>: icmp_seq=5 ttl=128 time=0.794 ms
--- <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN> ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4056ms
rtt min/avg/max/mdev = 0.644/0.808/1.160/0.183 ms
$ nslookup my.sample-domain.local
Server: <THE_IP_REPRESENTING_THE_NAMESERVER>
Address: <THE_IP_REPRESENTING_THE_NAMESERVER>#53
Non-authoritative answer:
Name: my.sample-domain.local
Address: <THE_IP_REPRESENTING_THE_LOCAL_DOMAIN>
$ cat /etc/resolv.conf
domain <AN_INTERNAL_DOMAIN>
search <AN_INTERNAL_DOMAIN>
nameserver <THE_IP_REPRESENTING_THE_NAMESERVER>
nameserver <ANOTHER_IP_REPRESENTING_THE_NAMESERVER>
編集する:
同時に、同じオフィスLANにUbuntu 16仮想マシンがあることに気づき、ログインしてそこからping
実行したコマンドを試しました。
また、Ubuntu VMには特定のカスタマイズはありません/etc/hosts
(カスタマイズされていないDebian 9ノートブックと同じ/etc/hosts
)。
どちらも/etc/resolv.conf
似ているようです(一部の共有ドメイン/ IP、同じドメインの他のIP)。
ただし、ファイルが異なるため、/etc/nsswitch.conf
このファイルとホストが以前と同じように解決される順序に問題があるようです。mdsn4_minimal
mdsn4_minimal
dns
hosts: files mdns4_minimal [NOTFOUND=return] dns
Ubuntuから:
hosts: files dns
編集2:
Ubuntu 16 VMとDebian 9ノートブックの両方が.local
このコマンドを使用してdig
ドメインを確認できました。
答え1
host
nslookup
DNS検索を実行しますが、ほとんどのアプリケーションはglibcを使用します。ネームサービススイッチホスト名の検索方法を決定します。
mDNSが有効になっている可能性があり、/etc/nsswitch.conf
名前を解決するときに問題が発生する可能性があります。.local
ルックアップ順序を変更したり、必要ないと思われる場合は、mDNSサービスを削除してください。
あなたの場合はnsswitch.conf
そうですmdns4_minimal
。マルチキャストDNS(.local
名前)を見つけてください。その後[NOTFOUND=return]
、検索は停止されるため、DNSは使用されず、アプリケーションはホスト名を解決できません。mdns4_minimal [NOTFOUND=return]
mDNS ルックアップが使用されないように全体を削除するか、mDNS ルックアップが失敗した場合に DNS ルックアップが発生するように NOTFOUND ジョブのみを削除できます。
詳しくは確認してみることをお勧めします。ネームサービス移行ガイド。
答え2
.local
ここで大きな問題は、DNSインフラストラクチャを設定するときに.で終わるDNSドメイン名を使用しないでください。
.local
DNSに加えて、ローカル名/サービスを検証するための並列サービスであるZeroconf / avahi(別名bonjour)で使用するように予約されています。
場合によっては、内部DNSネームサービスがZeroconfと確実に競合する可能性があります。だからあなたは質問の解決策を受け入れます。
長期的に内部ネットワークDNS名は.local
。
PSしかし、DNSに加えてローカルのMicrosoft DC / AD.local
にも名前を付けないでください。これにより、奇妙な問題に封じ込められます。
マルチキャストDNS(mDNS)標準。
Internet Engineering Task Force (IETF) 標準トレース RFC 6762 (2013 年 2 月 20 日) は、マルチキャスト DNS 経由で解決できる LAN のホスト名に対してドメイン名ラベル local を使用する擬似最上位ドメイン名解決プロトコルを予約します。 。
MS Technet(Wikipedia)
Macintosh クライアント コンピュータで Macintosh OS を実行している場合 .local タグを使用する必要がある場合 Macintosh コンピュータでもネットワーク上の他のコンピュータを検索できるように設定を構成する必要があります。
RFC 6762
「.local」で終わる名前のDNSクエリです。
mDNS IPv4リンク - ローカルマルチキャストアドレス224.0.0.251(またはIPv6に
対応するFF02 :: FB)で送信する必要があります。
...
逆方向アドレスマッピング
「.local」と同様に、IPv4およびIPv6リバースマッピングドメインもリンクローカルとして定義されています。
「254.169.in-addr.arpa」で終わる名前のDNSクエリです。 mDNS IPv4リンク - ローカルマルチキャストアドレス224.0.0.251またはmDNS IPv6マルチキャストアドレスFF02 :: FBに送信する必要があります。このドメインの下の名前はIPv4リンク - ローカルアドレスに対応するため、リンク - ローカルがこれらの名前に関する情報を見つけるのに最適な場所であることは論理的です。
...
明示的に「.local」で終わる名前の場合、マルチキャストDNSを有効または無効にするために特別な制御は必要ありません。ユーザーが入力しました。
ユーザーが「.local」で終わる名前に対してマルチキャストDNSを無効にする必要はありません。ユーザーがマルチキャストDNSを使用したくない場合は、その名前を使用しないことでこれを達成できるためです。
ユーザーの場合する「.local」で終わる名前を入力すると、ユーザーの意図が機能することを安全に想定できます。
公式のソースではありませんが、問題を非常によく説明する段落があるこの内容も見つけました。.localをLANの最上位ドメインとして無効にする
.localドメインは擬似トップレベルドメインと呼ばれます。それはどういう意味ですか?つまり、インターネット上で利用可能な(ルーティング可能な)正式なトップレベルドメインではありませんが、一部のアプリケーションで使用されるため、正式な状態になります。
.local の場合は、マルチキャストドメインネームサービス(mDNS)で使用されます。このサービスを実装するホストには、.localをドメイン名として使用し、一意の名前解決方法があります。通常、これは問題ではありません。ただし、ネットワークにDNSを実装し、.localを最上位ドメインとして使用すると、重大な名前解決の問題が発生する可能性があります。
私はこのようなことがLinuxシステムでたくさん起こっているのを見てきましたが、AppleのOS Xもこれらの問題に苦しんでいると思います。この種のネットワークでは、DNS名解決がまったく機能しない場合や、一部の時間でのみ機能することがよくあります。結局のところ、名前が解決されるかどうかはわかりませんので、常にIPアドレスを使用する必要があります(これはもともとDNSサーバー保有のポイントを破棄します)。