A maneira mais fácil de fazer isso é travando o endereço IP atribuído à interface que você precisa consultar FROM.
Se você tiver várias interfaces, poderá usar dig -b z.b.c.d
e usará essa interface para executar a consulta.
No meu computador, tenho duas placas de rede. Ambos estão usando diferentes serviços de Provedores de Internet.
Ambos os provedores de serviços de Internet têm um servidor DNS diferente e seus endereços IP são conhecidos por mim.
Eu quero ter certeza de que quando nslookup
envia consultas, ele passa exatamente pela interface especificada.
Algo como: ping -I eth1 google.com
nslookup -I eth1 google.com
é possível de qualquer forma, eu sei que não há -I
opção, eu ainda não quero que seja específico apenas dessa forma.
Como faço isso?
A maneira mais fácil de fazer isso é travando o endereço IP atribuído à interface que você precisa consultar FROM.
Se você tiver várias interfaces, poderá usar dig -b z.b.c.d
e usará essa interface para executar a consulta.
Isso não é exatamente nslookup
específico, mas deve funcionar no caso geral (se você tiver acesso root em sua máquina). Ele usa a pilha de rede IP para garantir que você esteja usando uma interface em vez de outra. Antes de chamar o nslookup, basta adicionar uma rota aos seus endereços IP do servidor DNS por meio de uma interface de rede específica.
Se você tiver duas interfaces ( eth0
e eth1
), o seu gateway padrão será via eth0
(192.168.0.1) e você deseja consultar o DNS do Google (8.8.8.8) por meio de eth1
onde o seu caminho para a Internet é 192.168.1.1, você poderia fazer:
ip route add 8.8.8.8/32 via 192.168.1.1
Adicionar dev eth1
ao comando não é útil, pois deve haver apenas um caminho para 192.168.1.1.
Quando terminar, você deve remover a rota para restaurar o roteamento padrão:
ip route del 8.8.8.8/32
em cacho existe opção para o mesmo. deixe-nos saber o que você quer alcançar?
você também pode usar 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:
homem cavar:
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 "::".
Combine as duas respostas de jfgagne e Rhaul Patil
O roteamento acontece em duas direções. Sua rota para o destino e a rota dos destinos para você.
Se suas pesquisas vierem de um IP do mundo real ou se o roteamento local for o que você está testando, será necessário configurar as rotas locais e para que a solicitação venha do endereço IP correto
Por exemplo, se você executar uma pesquisa em um servidor de nomes no ISP2, a partir de um endereço de origem de IP1 pertencente ao ISP1. O ISP2 normalmente encaminhará os dados para a saída IP1 através dos links WAN para o ISP1, que encaminhará os dados para você (a menos que você tenha rotas manuais adicionadas em cada ISP ou esteja fazendo algo avançado como Anúncios BGP )
isp1 - isp2
| |
ip1 ip2
\ /
box
Você já deve ter mais rotas gerais como @jfgagne sugeridas para cada rede de provedores, então os dados de um provedor via rota mais rápida, se não os mais específicos para o servidor de nomes podem ser adicionados
ip route add ns.ip.isp.1/32 via gw.ip.isp.1
ip route add ns.ip.isp.2/32 via gw.ip.isp.2
Em seguida, você pode obter dig
para usar um endereço de origem com -b
dig @ns.ip.isp.1 -b ur.ip.isp.1 whatever.com
dig @ns.ip.isp.2 -b ur.ip.isp.2 whatever.com
Se você estiver executando a pesquisa dentro de dois gateways NAT, o IP de origem será atendido no gateway e não será necessário se preocupar com a configuração do endereço de origem da solicitação. Basta definir o roteamento para o gateway desejado.
Se você quiser afetar o roteamento especificamente para esses servidores de nomes, mas não alterar o roteamento, geralmente você está indo para iptables
e roteamento de políticas , que é uma outra questão.
Isso é não como o nslookup funciona, ou deve ser usado.
Edite seu /etc/resolv.conf ou similar para que seus servidores DNS estejam em ordem de preferência.
Na CLI, você pode usar a seguinte instrução "server" para consultar dois servidores DNS diferentes (Open DNS e Google DNS neste exemplo);
user@machine ~ $ nslookup
> server 208.67.222.222
Default server: 208.67.222.222
Address: 208.67.222.222#53
> set type=a
> www.google.com
Server: 208.67.222.222
Address: 208.67.222.222#53
Non-authoritative answer:
Name: www.google.com
Address: 74.125.132.99
Name: www.google.com
Address: 74.125.132.105
Name: www.google.com
Address: 74.125.132.106
Name: www.google.com
Address: 74.125.132.147
Name: www.google.com
Address: 74.125.132.104
Name: www.google.com
Address: 74.125.132.103
> server 8.8.4.4
Default server: 8.8.4.4
Address: 8.8.4.4#53
> www.google.com
Server: 8.8.4.4
Address: 8.8.4.4#53
Non-authoritative answer:
Name: www.google.com
Address: 74.125.132.147
Name: www.google.com
Address: 74.125.132.105
Name: www.google.com
Address: 74.125.132.104
Name: www.google.com
Address: 74.125.132.106
Name: www.google.com
Address: 74.125.132.99
Name: www.google.com
Address: 74.125.132.103
> exit
Tags dns routing dynamic-dns