LinuxがDNSをチェックする順序は何ですか?

LinuxがDNSをチェックする順序は何ですか?

Linuxの解析順序は何ですかDNS?を読ん/etc/nsswitch.confでを読んhostsでからDNSに移動し、/etc/resolv.confネットワーク接続に移動しますかDNS

私はこれについてほとんど知らず、DNS理解するのに役立つ可能性がある回答をいただきありがとうございます。

答え1

LinuxがDNSをチェックする順序は次のとおりです。非常に構成可能

hosts:の行を読むことから始めてください/etc/nsswitch.conf。この行のキーワードは、さまざまなソースが使用される順序を指定します。

利用可能なキーワードセットは、Linuxディストリビューションによって異なります。古典的なものは次のとおりです。

  • filesシステムに読み込むように指示する/etc/hosts
  • dnsで指定されたDNSサーバーを使用するようにシステムに指示します/etc/resolv.conf。 (最新のシステムでは、systemd-resolved最終的にこの機能を無効にすることができます。)
  • nisまたは、nisplusNIS / NIS +システムの集中管理ホストテーブルを参照してください(実際には使用されていません)。
  • compatに似ていますfilesが、以前に使用された古いNIS拡張構文も許可します/etc/nsswitch.conf。 (実際には昔ながら)

最新のシステムには、次の新しいキーワードを追加できます。

  • resolveシステムにを使用するように指示しますsystemd-resolved。このキーワードがある場合は、このresolvectlコマンドを使用して実際のDNSサーバー設定を確認してください。dnsキーワードがない場合、/etc/resolv.confファイル完全に無視される

  • mdns4_minimalmdns6_minimalまたはそれぞれIPv4、IPv6、またはその両方を使用して、適切なマルチキャストアドレスにmDNSパケットを送信して、短いホスト名または長い名前の形式を解決するようにmdns_minimalシステムに指示します。shortname.localマルチキャストアドレスはIPv4の場合は224.0.0.251、IPv6の場合はff02::fb、どちらの場合も宛先ポートは5353/UDPです。同じネットワーク上の他のシステムが異なるmDNSレスポンダで構成されている場合は、物理DNSサーバーを設定したり、各システムでファイルを維持したりすることなく、avahi-daemonローカルネットワークセグメントのホスト名を使用できます。/etc/hosts

  • myhostname/etc/hostsDNSサーバーが構成されておらず、ネットワーク接続が存在しない場合でも、システムは常に自分のホスト名を正常に解決できるようにします。

  • mymachinesシステムは、以下を使用して設定された仮想マシンのホスト名を自動的に解決できます。systemd-machined.service

/etc/nsswitch.confネームサービストランジションAPIを実装する共有ライブラリを提供してシステムを拡張できるため、他のキーワードがある可能性がありますlibnss_<keyword>.so*


nameserver 127.0.0.53に行が表示されている場合、/etc/resolv.confこのフラグも使用中のフラグなので、実際のDNS設定を確認するためにsystemd-resolved使用する必要があります。resolvectl

ほとんどのプログラムはC標準ライブラリのホスト名解決機能(通常はglibc)を使用しますが、いくつかの非常に古いプログラムやDNS診断用に特別に設計されたプログラムは/etc/resolv.conf直接読み取られます。

resolveinキーワードを使用すると、/etc/nsswitch.confC標準ライブラリのホスト名解決機能がに直接ルーティングされsystemd-resolvednameserver 127.0.0.53inは/etc/resolv.confローカルですsystemd-resolved

キーワードの交換を考慮すると、接続ごとのDNSサーバーの概念を実際にはサポートしていないため、すべてのDNSサーバーが同じことを知っているという基本的な前提があるため、1つのDNSサーバーが何かを言うとわかりませんdns/etc/resolv.conf存在する場合、彼らは他のDNSサーバーに二次コメントを要求する理由がないと思います。

systemd-resolved接続ごとのDNSサーバー構成を許可し、特定のドメインに対するクエリを接続ごとのDNSサーバーに転送することを許可します。

(技術的には、DNSサーバーが「要求されたレコードが存在しません」と応答した場合、エラーではなく有効な答えです。- これはあなたが望む答えではないかもしれません。 「私はその質問に答えることはできません」または「私はあなたに話すことはできません」のような答えだけが間違っています。 )

関連情報