我的计算机上有两个网卡。两者都使用不同的互联网提供商服务。
两家互联网服务提供商都有不同的 DNS 服务器,并且我知道他们的 IP 地址。
我想确保nslookup
发送查询时,它完全通过指定的接口传递。
就像是:
ping -I eth1 google.com
nslookup -I eth1 google.com
无论如何都是可能的,我知道没有-I
选择,我什至不希望它仅以这种方式具体化。
我该怎么做?
答案1
这并不完全nslookup
具体,但应该适用于一般情况(如果您在计算机上具有 root 访问权限)。它使用 IP 网络堆栈来确保您使用的是一个接口而不是另一个接口。在调用 nslookup 之前,只需通过特定网络接口添加一条到 DNS 服务器 IP 地址的路由即可。
如果您有 2 个接口(eth0
和eth1
),您的默认网关是通过eth0
(192.168.0.1),并且您想通过eth1
您的 Internet 方式 192.168.1.1 查询 Google DNS (8.8.8.8),您可以执行以下操作:
ip route add 8.8.8.8/32 via 192.168.1.1
添加dev eth1
到命令没有用,因为只有一种方法可以到达 192.168.1.1。
完成后,您应该删除该路由以恢复默认路由:
ip route del 8.8.8.8/32
答案2
最简单的方法是锁定分配给您需要查询的接口的 IP 地址。
如果您有多个可以使用的接口dig -b z.b.c.d
,它将使用该接口来运行查询。
答案3
在curl中也有同样的选项。请告诉我们您想要实现什么目标?
你也可以使用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 "::".