Como posso direcionar uma consulta para um servidor DNS específico?


155

Gostaria de emitir uma consulta para um servidor DNS específico, cujo endereço IP eu conheço. Realmente não importa se está no Windows ou * nix.

No Windows, posso fazer algo como:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
Name:    superuser.com
Address:  64.34.119.12

Mas isso usa as configurações de DNS da máquina local. Em vez disso, eu gostaria de consultar um servidor DNS específico para testar se ele está respondendo corretamente às minhas consultas.

Portanto, deve ser algo como:

nslookup --dns-ip=8.8.8.8 superuser.com

Respostas:


201

Para registros básicos A e CNAME, você pode simplesmente fazer

nslookup somewhere.com some.dns.server

Usage: 
   nslookup [-opt ...]             # interactive mode using default server
   nslookup [-opt ...] - server    # interactive mode using 'server'
   nslookup [-opt ...] host        # just look up 'host' using default server
   nslookup [-opt ...] host server # just look up 'host' using 'server'

ou se você digitar nslookup sem nenhum parâmetro, poderá fazer muito mais opções ...

Commands:   (identifiers are shown in uppercase, [] means optional)
NAME            - print info about the host/domain NAME using default server
NAME1 NAME2     - as above, but use NAME2 as server
help or ?       - print info on common commands
set OPTION      - set an option
    all                 - print options, current server and host
    [no]debug           - print debugging information
    [no]d2              - print exhaustive debugging information
    [no]defname         - append domain name to each query
    [no]recurse         - ask for recursive answer to query
    [no]search          - use domain search list
    [no]vc              - always use a virtual circuit
    domain=NAME         - set default domain name to NAME
    srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.
    root=NAME           - set root server to NAME
    retry=X             - set number of retries to X
    timeout=X           - set initial time-out interval to X seconds
    type=X              - set query type (ex. A,AAAA,A+AAAA,ANY,CNAME,MX,NS,PTR,SOA,SRV)
    querytype=X         - same as type
    class=X             - set query class (ex. IN (Internet), ANY)
    [no]msxfr           - use MS fast zone transfer
    ixfrver=X           - current version to use in IXFR transfer request
server NAME     - set default server to NAME, using current default server
lserver NAME    - set default server to NAME, using initial server
root            - set current default server to the root
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
    -a          -  list canonical names and aliases
    -d          -  list all records
    -t TYPE     -  list records of the given RFC record type (ex. A,CNAME,MX,NS,PTR etc.)
view FILE           - sort an 'ls' output file and view it with pg
exit            - exit the program

7
É lamentável que o manual use os termos 'host' e 'servidor' em vez de algo mais claro, como 'nome do domínio' e 'servidor DNS'.
ClearCrescendo

1
Não é totalmente incorreto. O "nome do domínio" é apenas parte de um nome de host. Você pode realmente fazer pesquisas apenas na parte "host" do FQDN, omitindo o sufixo do domínio. NSLOOKUPtentará usar automaticamente os sufixos de pesquisa configurados no seu sistema para obter uma correspondência.
TheCompWiz

1
Você não precisa ter acesso completo NSLOOKUPpara usar as opções - a sintaxe é um pouco estranha. Exemplo :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

Apenas investigar as opções do nslookup, que você pode exibir se invocar nslookupe digitar helpdentro do modo interativo do nslookup, me deu a resposta certa:

C:\Documents and Settings\Anton Daneyko>nslookup help
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

*** DNSs2.Uni-Marburg.DE can't find help: Non-existent domain

C:\Documents and Settings\Anton Daneyko>nslookup
Default Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

> stackoverflow.com 8.8.8.8
Server:  [8.8.8.8]
Address:  8.8.8.8

Non-authoritative answer:
Name:    stackoverflow.com
Address:  64.34.119.12

16
Eu sorri quando vi essa resposta começar com "Apenas cavando ...".
Hossein

7

Sim, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com procurará seu próprio servidor DNS para descobrir o endereço IP do superuser.com. Se você adicionar o endereço IP ou o nome de um servidor DNS diferente à linha de comando, ele procurará nesse servidor DNS o endereço IP de superuser.com. Ex:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 8.8.4.4
Server:  google-public-dns-b.google.com
Address:  8.8.4.4

Non-authoritative answer:
Name:    superuser.com
Addresses:  190.93.245.58
      190.93.246.58
      141.101.114.59
      190.93.247.58
      190.93.244.58

A propósito, 8.8.4.4 é o endereço IP dos servidores DNS do Google.

Porém, ambas as opções acima fornecem "Respostas não autorizadas", como nenhuma delas SOA, que é a autoridade para o domínio superuser.com. Ambos têm uma cópia em cache que foi propagada a partir do SOA. Se você deseja perguntar ao servidor autoritário, primeiro descubra o nome do endereço IP do servidor autoritário, usando o comando:

C:\Documents and Settings\Anton Daneyko>nslookup -type=ns superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
superuser.com   nameserver = cf-dns02.superuser.com
superuser.com   nameserver = cf-dns01.superuser.com

cf-dns02.superuser.com  internet address = 173.245.59.4
cf-dns02.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3b04
cf-dns01.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3a35
cf-dns01.superuser.com  internet address = 173.245.58.53

Isso retornará uma resposta não autorizada do servidor DNS local, da Marburg Uni, nomeando todos os servidores autoritativos para o superuser.com. Em seguida, você pode usar o comando que usamos anteriormente para solicitar qualquer um dos 4 servidores autorizados, da seguinte maneira:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 173.245.59.4
Server:  cf-173-245-59-4.cloudflare.com
Address:  173.245.59.4

Name:    superuser.com
Addresses:  141.101.114.59
      190.93.246.58
      190.93.245.58
      190.93.247.58
      190.93.244.58

Como você vê, desta vez o servidor SOA autoritativo retornou os endereços IP; portanto, você não vê mais o comentário "Resposta não autoritativa". Isso é particularmente útil quando você cria um novo nome de domínio ou altera os provedores de hospedagem ou transfere para um registrador de domínio diferente e não consegue acessar o site, pois os novos endereços IP não são propagados mesmo após 24 horas. Em seguida, você pode começar com a SOA e verificar se o endereço IP correto é fornecido pelo servidor DNS e segui-lo mais abaixo na árvore. É bom verificar se os servidores DNS do Google receberam as alterações e, finalmente, se o servidor DNS local pode resolver seu nome de domínio para corrigir o endereço IP.


1

Para alterar seu servidor DNS padrão no nslookup, você pode simplesmente mudar o servidor digitando o servidor NAMEouIPofDNS Neste exemplo abaixo, mudei meu servidor DNS padrão (192.168.50.21) para um novo (4.2.2.3)

C: \ Windows \ system32> nslookup

Servidor Padrão: Desconhecido

Endereço: 192.168.50.21

servidor 4.2.2.3

Servidor padrão: c.resolvers.level3.net

Endereço: 4.2.2.3

>

Agora estou pronto para fazer consultas no 4.2.2.3 versus 192.168.50.21


Isso duplica outra resposta e não adiciona novo conteúdo. Não poste uma resposta, a menos que você realmente tenha algo novo para contribuir.
DavidPostill

Talvez não haja novo conteúdo, mas valor. Eu prefiro esta resposta a longo onces :)
Pawel Cioch

0

você pode configurar o DNS primário para ser usado com sua conexão.
Vá para as propriedades da sua conexão => Internet Procol (TCP / IP). (o local em que você pode definir um IP estático)
Aqui você pode definir manualmente qual DNS você deseja usar para cada conexão.
Após o teste, você sempre pode voltar ao seu valor anterior.


3
Não acho que seja uma maneira "direta" de consultar um servidor DNS.
Lepe

0

Obtenha tipos de registro específicos do servidor DNS especificado com um comando

Para procurar tipos de registro diferentes dos registros A e AAAA (e CNAME) padrão retornados pelo nslookup, usando o servidor DNS especificado:

nslookup -q=<record type> <host> <DNS server>

Por exemplo, para retornar registros MX para o domínio stackexchange.comusando o servidor DNS, 8.8.4.4o comando seria:

nslookup -q=MX stackexchange.com 8.8.4.4

0

Estou trabalhando no Openwrt 18.06.1 ARMv6 Raspberry pi e configurando tor dns e dnscrypt-proxy, então tive um problema muito semelhante. A causa principal é que o provedor de serviços de Internet local está interceptando respostas inseguras do root-servers.net, respostas que dizem que o site não foi encontrado e depois redirecionando para o próprio site. Embora não seja uma grande falha de segurança, também não a acho particularmente útil.

O primeiro teste a ser feito ao consultar um endereço específico é realmente tentar um endereço inválido, para garantir que você obtenha uma resposta nula adequada ao usar os parâmetros de servidor, porta e host. Existem muitos guias e versões e é fácil pensar você está realizando um teste de porta quando, na verdade, está respondendo de resultados em cache ou de servidores padrão. Após obter uma resposta nula, trabalhe com um endereço e uma porta ativos do servidor. As portas ativas podem ser mostradas em openwrt com netstat -plnt, mas observe que alguns comandos do roteador podem precisar ser instalados primeiro. O serviço tor que defini na porta 9053 não aparece aqui, mas ainda funciona depois de adicionar o DNSPort 127.0.0.1:9053 ao arquivo torrc. O formato nslookup nesta plataforma aceita os parâmetros [host] e [server] e posso testar o DNS com nslookup cnn.com 127.0.0.1 # 9053 Posso testar o dnscrypt com o comando nslookup cnn. com 127.0.0.1 # 5353 A alteração para números de porta ou domínios inválidos recebe uma resposta; ; a conexão expirou; nenhum servidor foi encontrado O Dig também funciona com o openwrt, mas precisa ser instalado a partir do pacote bind-dig. dig -q 127.0.0.1 -p 9053 www.bbc.com E novamente falha para portas inválidas. No meu caso, o problema foi resolvido quando alterei as entradas em / etc / config / network e configurei a opção dns '127.0.0.1' para redes nas quais eu anteriormente usava entradas inseguras de dns lá.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.