私のコンピュータには2つのネットワークカードがあります。どちらも異なるインターネットプロバイダを使用します。
どちらのISPにも異なるDNSサーバーがあり、私は自分のIPアドレスを知っています。
nslookup
クエリが送信されたときに指定されたインターフェイスを介して正しく渡されることを確認したいと思います。
それは次のとおりです。
ping -I eth1 google.com
nslookup -I eth1 google.com
とにかく可能です。-I
選択の余地がないことを知っています。このように実現されることも望ましくありません。
どうすればいいですか?
答え1
これは完全にnslookup
具体的ではありませんが、一般的な場合には機能します(コンピュータにrootアクセス権がある場合)。 IPネットワークスタックを使用して、他のインターフェイスではなく1つのインターフェイスを使用していることを確認します。 nslookupを呼び出す前に、特定のネットワークインターフェイスを介してDNSサーバーのIPアドレスにルートを追加するだけです。
eth0
2つのインターフェイス(および)があり、eth1
デフォルトゲートウェイがeth0
(192.168.0.1)であり、インターネットパス192.168.1.1を介してGoogle DNS(8.8.8.8)にクエリする場合は、eth1
次のことができます。
ip route add 8.8.8.8/32 via 192.168.1.1
dev eth1
192.168.1.1に到達する方法は1つしかないので、コマンドに追加することは役に立ちません。
完了したら、パスを削除してデフォルトのパスを復元する必要があります。
ip route del 8.8.8.8/32
答え2
最も簡単な方法は、照会する必要があるインターフェースに割り当てられたIPアドレスをロックすることです。
使用可能なインターフェイスが複数ある場合は、dig -b z.b.c.d
そのインターフェイスを使用してクエリを実行します。
答え3
カールでも同じオプションを使用できます。何を達成したいのか教えてください。
また、使用することができますdig @ipaddress yourquery
--interface <name>
Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example
could look like:
答え4
男の発掘:
The -b option sets the source IP address of the query to address.
This must be a valid address on one of the host's network interfaces
or "0.0.0.0" or "::".