第24章 DNS サーバーの順序の設定
glibc ライブラリーの getaddrinfo() 関数は、すべての DNS 要求を /etc/resolv.conf ファイルで指定された最初の DNS サーバーに送信します。このサーバーが応答しない場合、RHEL は他のすべてのネームサーバーを試します。NetworkManager を設定して、/etc/resolv.conf 内の DNS サーバーの順序に影響を与えることができます。
24.1. NetworkManager が /etc/resolv.conf 内の DNS サーバーを順序付ける仕組み リンクのコピーリンクがクリップボードにコピーされました!
NetworkManager は、特定のルールセットを適用して、/etc/resolv.conf ファイル内の DNS サーバーを順序付けます。
順序は次の条件によって決まります。
- 接続プロファイルが 1 つしか存在しない場合、NetworkManager は、その接続で指定された IPv4 および IPv6 の DNS サーバーの順序を使用します。
複数の接続プロファイルがアクティベートされると、NetworkManager は DNS の優先度の値に基づいて DNS サーバーを順序付けます。DNS の優先度を設定すると、NetworkManager の動作は、
dnsパラメーターに設定した値によって異なります。このパラメーターは、/etc/NetworkManager/NetworkManager.confファイルの[main]セクションで設定できます。dns=defaultまたはdnsパラメーターが設定されていないと、以下のようになります。NetworkManager は、各接続の
ipv4.dns-priorityパラメーターおよびipv6.dns-priorityパラメーターに基づいて、複数の接続から DNS サーバーを順序付けます。値を指定しない場合、または
ipv4.dns-priorityおよびipv6.dns-priorityを0に設定すると、NetworkManager はグローバルのデフォルト値を使用します。dns=dnsmasqまたはdns=systemd-resolved:この設定のいずれかを使用すると、NetworkManager は
dnsmasqの127.0.0.1に設定するか、127.0.0.53をnameserverエントリーとして/etc/resolv.confファイルに設定します。dnsmasqサービスとsystemd-resolvedサービスはどちらも、NetworkManager 接続で設定された検索ドメインのクエリーをその接続で指定された DNS サーバーに転送し、他のドメインへのクエリーをデフォルトルートを持つ接続に転送します。複数の接続に同じ検索ドメインが設定されている場合は、dnsmasqおよびsystemd-resolvedが、このドメインのクエリーを、優先度の値が最も低い接続に設定された DNS サーバーへ転送します。
NetworkManager は、接続に以下のデフォルト値を使用します。
-
VPN 接続の場合は
50 -
他の接続の場合は
100
グローバルのデフォルトおよび接続固有の ipv4.dns-priority パラメーターおよび ipv6.dns-priority パラメーターの両方を -2147483647 から 2147483647 までの値に設定できます。
- 値が小さいほど優先度が高くなります。
- 負の値は、値が大きい他の設定を除外する特別な効果があります。たとえば、優先度が負の値の接続が 1 つでも存在する場合は、NetworkManager が、優先度が最も低い接続プロファイルで指定された DNS サーバーのみを使用します。
複数の接続の DNS の優先度が同じ場合、NetworkManager は以下の順番で DNS の優先順位を決定します。
- VPN 接続。
- アクティブなデフォルトルートとの接続。アクティブなデフォルトルートは、メトリックスが最も低いデフォルトルートです。