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
または、nisplus
NIS / NIS +システムの集中管理ホストテーブルを参照してください(実際には使用されていません)。compat
に似ていますfiles
が、以前に使用された古いNIS拡張構文も許可します/etc/nsswitch.conf
。 (実際には昔ながら)
最新のシステムには、次の新しいキーワードを追加できます。
resolve
システムにを使用するように指示しますsystemd-resolved
。このキーワードがある場合は、このresolvectl
コマンドを使用して実際のDNSサーバー設定を確認してください。dns
キーワードがない場合、/etc/resolv.conf
ファイル完全に無視される。mdns4_minimal
、mdns6_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/hosts
DNSサーバーが構成されておらず、ネットワーク接続が存在しない場合でも、システムは常に自分のホスト名を正常に解決できるようにします。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
直接読み取られます。
resolve
inキーワードを使用すると、/etc/nsswitch.conf
C標準ライブラリのホスト名解決機能がに直接ルーティングされsystemd-resolved
、nameserver 127.0.0.53
inは/etc/resolv.conf
ローカルですsystemd-resolved
。
キーワードの交換を考慮すると、接続ごとのDNSサーバーの概念を実際にはサポートしていないため、すべてのDNSサーバーが同じことを知っているという基本的な前提があるため、1つのDNSサーバーが何かを言うとわかりませんdns
。/etc/resolv.conf
存在する場合、彼らは他のDNSサーバーに二次コメントを要求する理由がないと思います。
systemd-resolved
接続ごとのDNSサーバー構成を許可し、特定のドメインに対するクエリを接続ごとのDNSサーバーに転送することを許可します。
(技術的には、DNSサーバーが「要求されたレコードが存在しません」と応答した場合、エラーではなく有効な答えです。- これはあなたが望む答えではないかもしれません。 「私はその質問に答えることはできません」または「私はあなたに話すことはできません」のような答えだけが間違っています。 )