17.4. 特定のインターフェイスを介した DNS トラフィックのルーティング
NetworkManager は、systemd-resolved、dnsmasq、および dnsconf DNS バックエンドを設定できます。マルチインターフェイスシステムでの DNS 解決の問題を回避するために、NetworkManager は特定のネットワークインターフェイスに関連付けられた 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 yesCopy 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 yesCopy 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 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、ネームサーバーに正しいインターフェイス経由でアクセスしているかどうかを確認し、DNS サーバーのすべてのルートを特別なルーティングテーブル
20053に配置するポリシールーティングメソッドを使用します。