17.4. 特定のインターフェイスを介して DNS トラフィックをルーティングする
NetworkManager は、システム内の DNS サーバーを設定するためのさまざまなメカニズムをサポートしています。これには、/etc/resolv.conf
ファイルへの設定の追加や、systemd-resolved
、dnsmasq
、dnsconfd
などの DNS サービスの設定が含まれます。
接続プロファイルに記載されている各 DNS サーバーは、特定のネットワークインターフェイスに関連付けられています。DNS バックエンドサービス systemd-resolved
および dnsmasq
により、各 DNS ネームサーバーは正しいネットワークインターフェイス経由でのみアクセス可能になります。ただし、他のバックエンドサービスではこの機能はサポートされていません。これに関連して、NetworkManager には、各ネームサーバーに正しいインターフェイス経由でのみアクセスできるように専用ルートを自動的に追加する機能があります。この機能を使用するには、ipv4.routed-dns
および ipv6.routed-dns
プロパティーを設定します。
サンプルシナリオ:
接続プロファイル 1 <example-connection-1>:
-
デフォルトケートウェイ:
192.0.2.254
-
DNS サーバー:
10.0.0.1
- 検索ドメイン: example-domain.com
-
デフォルトケートウェイ:
接続プロファイル 2 <example-connection-2> :
-
デフォルトゲートウェイ:
198.51.100.254
(このゲートウェイは10.0.0.0/24
ネットワークにアクセスできません) -
DNS サーバー:
203.0.113.1
-
デフォルトゲートウェイ:
この例では、enp1s0
および enp7s0
ネットワークインターフェイスを介して接続される <example-connection-1> と <example-connection-2> の 2 つの接続プロファイルがあります。2 番目のプロファイル <example-connection-2> が最初に接続された場合、この接続のデフォルトゲートウェイ 198.51.100.254
のメトリクスの方が引っ杭ため、最初のプロファイルよりも優先されます。その結果、RHEL は最初のプロファイルの DNS サーバー 10.0.0.1
に接続する際に、2 番目の接続のデフォルトゲートウェイを使用します。その結果、DNS 解決は失敗します。この問題を解決するには、両方の接続プロファイルに対して ipv4.routed-dns
設定を有効にして、NetworkManager が正しいインターフェイス (この場合は enp1s0
) を介して 10.0.0.1
DNS サーバーの専用ルートを作成するようにします。
前提条件
- 接続プロファイルがある。
手順
ネームサーバーへのルートの作成を有効にするために、接続プロファイルを変更します。
接続プロファイル 1 の場合は、次のように入力します。
nmcli connection modify <example-connection-1> ipv4.routed-dns yes
# nmcli connection modify <example-connection-1> ipv4.routed-dns yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接続プロファイル 2 の場合は、次のように入力します。
nmcli connection modify <example-connection-2> ipv4.routed-dns yes
# nmcli connection modify <example-connection-2> ipv4.routed-dns yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
接続を再度有効にします。
nmcli connection up <example-connection-1> nmcli connection up <example-connection-2>
# nmcli connection up <example-connection-1> # nmcli connection up <example-connection-2>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
IP アドレスに到達するためのルートを表示します。
ip route get 203.0.113.1
# ip route get 203.0.113.1 203.0.113.1 dev enp1s0 table 20053 src 10.0.0.1 uid 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、ネームサーバーに正しいインターフェイス経由でアクセスしているかどうかを確認し、DNS サーバーのすべてのルートを特別なルーティングテーブル
20053
に配置するポリシールーティングメソッドを使用します。