让 nslookup 使用特定的接口

让 nslookup 使用特定的接口

我的计算机上有两个网卡。两者都使用不同的互联网提供商服务。

两家互联网服务提供商都有不同的 DNS 服务器,并且我知道他们的 IP 地址。

我想确保nslookup发送查询时,它完全通过指定的接口传递。

就像是:
ping -I eth1 google.com

nslookup -I eth1 google.com无论如何都是可能的,我知道没有-I选择,我什至不希望它仅以这种方式具体化。

我该怎么做?

答案1

这并不完全nslookup具体,但应该适用于一般情况(如果您在计算机上具有 root 访问权限)。它使用 IP 网络堆栈来确保您使用的是一个接口而不是另一个接口。在调用 nslookup 之前,只需通过特定网络接口添加一条到 DNS 服务器 IP 地址的路由即可。

如果您有 2 个接口(eth0eth1),您的默认网关是通过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 "::".

相关内容