web-dev-qa-db-ja.com

異なるDNSサーバーを異なるネットワークインターフェイスに割り当てることはできますか?

Eth1に10.50.1.11および10.50.1.12DNSサーバーを使用させようとしていますが、eth0インターフェイスには8.8.8.8および8.8.4.4DNSサーバーを使用しています。 xenserver6.5内でcentos7vmsを実行しています。 eth1は閉回路VLANであり、eth0はパブリックネットワークです。私が抱えている問題は、centosクライアントが、最初に起動するインターフェイスに基づいて、使用するDNSサーバーを自動的に選択することです。/etc/network-scripts/ifcfg-eth0または/ etc/network-scripts/ifcfg-eth1でDNSサーバーを定義すると、/ etc/resolv.conf内に出力されることは知っていますが、回避策が見つかりません。このため。異なるDNSサーバーを異なるネットワークインターフェイスに割り当てることができるかどうか誰かが知っていますか?

1
Dode

いいえ、アドレス解決の仕組みのためにそれを行うことはできません。

マシン上のプロセスが、たとえばexample.comに接続する場合、最初にgetaddrinfogethostbynameなどのライブラリルーチンを呼び出します。これらのルーチンの目的は、DNS名をIPアドレスに変換することです。そこで、彼らは/etc/resolv.confを調べ、DNSサーバーのIPアドレスを読み取り、そのサーバーにDNSクエリパケットを送信し、応答を受信して​​、結果のIPアドレスを呼び出し元に返します。

その時点で、プロセスは解決されたIPアドレスを取得し、それをconnectなどのシステムコールに渡します。これは、カーネルがステップインし、ルーティングテーブルを調べて、そのアドレスへの接続に使用するインターフェイスを特定する場所です。

つまり、DNS設定は、通信に使用されるインターフェイスに依存することはできません。そのインターフェイス自体の選択はDNS設定に依存するためです。

1
TooTea