Faça nslookup usar interface específica

4

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?

    
por Rahul Gautam 13.12.2012 / 11:50

6 respostas

4

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.

    
por 13.12.2015 / 04:00
3

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
    
por 13.12.2012 / 14:09
1

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:
    
por 13.12.2012 / 12:35
1

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 "::".
    
por 11.03.2016 / 15:14
0

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.

    
por 14.12.2012 / 11:16
0

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
    
por 14.12.2012 / 12:07