Come posso indirizzare una query a un server DNS specifico?


155

Vorrei inviare una query a un server DNS specifico, di cui conosco l'indirizzo IP. Non importa se è su Windows o * nix.

In Windows posso fare qualcosa del tipo:

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

Ma questo utilizza le impostazioni DNS del computer locale. Vorrei invece eseguire una query su un server DNS specifico per verificare se risponde correttamente alle mie domande o non risponde affatto.

Quindi dovrebbe essere qualcosa del tipo:

nslookup --dns-ip=8.8.8.8 superuser.com

Risposte:


201

Per i record di base A e CNAME, puoi semplicemente farlo

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'

o se digiti nslookup senza parametri, puoi fare molte più opzioni ...

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
È un peccato che il manuale usi i termini "host" e "server" piuttosto che qualcosa di più chiaro come "nome-dominio" e "server-DNS".
ClearCrescendo,

1
Non è del tutto errato. Il "nome dominio" è solo una parte di un nome host. Puoi infatti effettuare ricerche solo sulla parte "host" del nome di dominio completo, omettendo il suffisso di dominio. NSLOOKUPtenterà automaticamente di utilizzare tutti i suffissi di ricerca configurati nel proprio sistema per ottenere una corrispondenza.
TheCompWiz,

1
Non è necessario accedere completamente NSLOOKUPper utilizzare le opzioni: la sintassi è solo un po 'strana. Esempio :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

Basta scavare nelle opzioni di nslookup, che puoi visualizzare se invochi nslookupe quindi digitando helpall'interno della modalità interattiva nslookup mi ha dato la risposta giusta:

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
Ho sorriso quando ho visto che questa risposta inizia con "Basta scavare ...".
Hossein,

7

Sì, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com cercherà il tuo server DNS per scoprire l'indirizzo IP per superuser.com. Se aggiungi l'indirizzo IP o il nome di un altro server DNS alla riga di comando, cercherà nel server DNS specificato l'indirizzo IP di 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 proposito, 8.8.4.4 è l'indirizzo IP dei server DNS di Google.

Ma entrambe le risposte precedenti forniscono "risposte non autorevoli", in quanto nessuna delle due SOA, che è l'autorevole del dominio superuser.com. Entrambi hanno una copia cache che è stata propagata dalla SOA. Se vuoi chiedere al server autorevole, prima scopri il nome dell'indirizzo IP del server autorevole, usando il 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

Ciò restituirà una risposta non autorevole dal tuo server DNS locale, dalla Marburg Uni, nominando tutti i server autorevoli per superuser.com. Quindi puoi usare il comando che abbiamo usato in precedenza per chiedere a uno dei 4 server autorevoli, come segue:

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

Come vedi, questa volta il server SOA autorevole ha restituito gli indirizzi IP, quindi non vedi più il commento "Risposta non autorevole". Ciò è particolarmente utile quando hai creato un nuovo nome di dominio o modificato i provider di hosting o trasferito a un registrar di domini diverso e non puoi accedere al tuo sito Web, poiché i nuovi indirizzi IP non si sono propagati anche dopo 24 ore. Quindi è possibile iniziare con la SOA e verificare che l'indirizzo IP corretto sia fornito dal server DNS, quindi seguirlo più in basso nella struttura. Buono a verificare se i server DNS di Google hanno ricevuto le modifiche, e infine se il tuo server DNS locale è in grado di risolvere il tuo nome di dominio per correggere l'indirizzo IP.


1

Per cambiare il tuo server DNS predefinito in nslookup puoi semplicemente cambiare il server digitando il server NAMEorIPofDNS In questo esempio di seguito ho cambiato il mio server DNS predefinito (192.168.50.21) con uno nuovo (4.2.2.3)

C: \ Windows \ system32> nslookup

Server predefinito: sconosciuto

Indirizzo: 192.168.50.21

server 4.2.2.3

Server predefinito: c.resolvers.level3.net

Indirizzo: 4.2.2.3

>

Ora sono pronto a fare domande contro 4.2.2.3 contro 192.168.50.21


Questo duplica un'altra risposta e non aggiunge nuovi contenuti. Per favore, non pubblicare una risposta a meno che tu non abbia effettivamente qualcosa di nuovo da contribuire.
DavidPostill

Nessun nuovo contenuto forse, ma valore. Preferisco questa risposta a quelle lunghe :)
Pawel Cioch,

0

puoi configurare il DNS primario da usare con la tua connessione.
Vai alle proprietà della tua connessione => Internet Procol (TCP / IP). (il luogo in cui è possibile impostare un IP statico)
Qui è possibile definire manualmente quale DNS si desidera utilizzare per ogni connessione.
Dopo il test, è sempre possibile ripristinarlo al valore precedente.


3
Non penso che sia un modo "diretto" di interrogare un server DNS.
lepe,

0

Ottieni tipi di record specifici dal server DNS specificato con un comando

Per cercare tipi di record diversi dai record A e AAAA (e CNAME) predefiniti restituiti da nslookup, utilizzando il server DNS specificato:

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

Ad esempio, per restituire i record MX per il dominio stackexchange.comutilizzando il server DNS 8.8.4.4il comando sarebbe:

nslookup -q=MX stackexchange.com 8.8.4.4

0

Sto lavorando su Openwrt 18.06.1 ARMv6 Raspberry pi e configurando tor dns e dnscrypt-proxy, quindi ho avuto un problema molto simile. La causa principale è che l'isp locale sta intercettando risposte non sicure da root-servers.net, risposte che dicono che il sito non è stato trovato, quindi reindirizzamento al proprio sito Web. Anche se non è un grande difetto di sicurezza, non lo trovo particolarmente utile.

Il primo test da eseguire quando si esegue la query di un indirizzo specifico è in realtà provare un indirizzo non valido, per assicurarsi di ottenere una risposta nulla corretta quando si utilizzano i parametri server, porta e host, ci sono molte guide e versioni ed è facile pensare si sta eseguendo un test della porta quando in realtà risponde dai risultati memorizzati nella cache o dai server predefiniti. Dopo aver ottenuto una risposta nulla, lavora con un indirizzo e una porta del server attivi. Le porte attive possono essere mostrate su openwrt con netstat -plnt ma potrebbe essere necessario installare prima alcuni comandi del router. Il servizio tor che ho impostato sulla porta 9053 non viene mostrato qui ma funziona ancora dopo aver aggiunto DNSPort 127.0.0.1:9053 al file torrc. Il formato nslookup su questa piattaforma accetta i parametri [host] e [server] e posso testare dns con nslookup cnn.com 127.0.0.1 # 9053 Posso testare dnscrypt con il comando nslookup cnn. com 127.0.0.1 # 5353 La risposta a numeri di porta o domini non validi ottiene una risposta; ; connessione Scaduta; nessun server è stato raggiunto Dig funziona anche su openwrt ma deve essere installato dal pacchetto bind-dig. dig -q 127.0.0.1 -p 9053 www.bbc.com E di nuovo fallisce per le porte non valide. Nel mio caso il problema è stato risolto quando ho cambiato le voci in / etc / config / network e impostato l'opzione dns '127.0.0.1' per le reti in cui in precedenza avevo usato voci dns non sicure.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.