¿Cómo puedo dirigir una consulta a un servidor DNS específico?

155

Me gustaría emitir una consulta a un servidor DNS específico, cuya dirección IP conozco. Realmente no importa si está en Windows o * nix.

En Windows puedo hacer 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

Pero esto usa la configuración de DNS de la máquina local. En cambio, me gustaría consultar un servidor DNS específico para probar si responde a mis consultas correctamente o si responde en absoluto.

Entonces debería ser algo como:

nslookup --dns-ip=8.8.8.8 superuser.com
Anton Daneyko
fuente

Respuestas:

201

Para registros básicos A y CNAME, simplemente puede hacer

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 si solo escribe nslookup sin ningún parámetro, puede hacer muchas más opciones ...

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
TheCompWiz
fuente
77
Es lamentable que el manual use los términos 'host' y 'servidor' en lugar de algo más claro como 'nombre de dominio' y 'servidor dns'.
ClearCrescendo
1
No es del todo incorrecto. El "nombre de dominio" es solo una parte de un nombre de host. De hecho, puede hacer búsquedas solo en la parte "host" del FQDN, omitiendo el sufijo de dominio. NSLOOKUPintentará utilizar automáticamente cualquier sufijo de búsqueda configurado en su sistema para obtener una coincidencia.
TheCompWiz
1
No tiene que tener acceso completo NSLOOKUPpara usar las opciones: la sintaxis es un poco extraña. Ejemplo :nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5
11

Simplemente profundizar en las opciones de nslookup, que puede mostrar si invoca nslookupy luego escribir helpdentro del modo interactivo nslookup me dio la respuesta correcta:

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
Anton Daneyko
fuente
16
Sonreí cuando vi que esta respuesta comienza con "Simplemente cavando ...".
Hossein
7

Sí, C:\Documents and Settings\Anton Daneyko>nslookup superuser.com buscará su propio servidor DNS para averiguar la dirección IP de superuser.com. Si agrega la dirección IP o el nombre de un servidor DNS diferente a la línea de comando, buscará en ese servidor DNS la dirección 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

Por cierto, 8.8.4.4 es la dirección IP de los servidores DNS de Google.

Pero, los dos anteriores dan "respuestas no autorizadas", ya que ninguno de ellos es SOA, que es el autorizado para el dominio superuser.com. Ambos tienen una copia en caché que se ha propagado desde SOA. Si desea preguntar al servidor autorizado, primero averigüe el nombre de la dirección IP del servidor autorizado, usando el 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

Esto devolverá una respuesta no autorizada de su servidor DNS local, de Marburg Uni, nombrando todos los servidores autorizados de superuser.com. Luego puede usar el comando que usamos anteriormente para preguntar a cualquiera de los 4 servidores autorizados, de la siguiente manera:

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 puede ver, esta vez el servidor SOA autorizado devolvió las direcciones IP, por lo tanto, ya no verá el comentario comentario "Respuesta no autorizada". Esto es particularmente útil, cuando ha creado un nuevo nombre de dominio o ha cambiado los proveedores de alojamiento o transferido a un registrador de dominio diferente, y no puede acceder a su sitio web, ya que las nuevas direcciones IP no se han propagado incluso después de 24 horas. Luego puede comenzar con el SOA y verificar que el servidor DNS proporcione su dirección IP correcta, y luego seguirla más abajo en el árbol. Es bueno verificar si los servidores DNS de Google han recibido los cambios y, por último, si su servidor DNS local puede resolver su nombre de dominio para corregir la dirección IP.

Bede Amarasekara
fuente
1

Para cambiar su servidor DNS predeterminado en nslookup, simplemente puede cambiar el servidor escribiendo el servidor NAMEorIPofDNS. En este ejemplo a continuación, he cambiado mi servidor DNS predeterminado (192.168.50.21) a uno nuevo (4.2.2.3)

C: \ Windows \ system32> nslookup

Servidor predeterminado: Desconocido

Dirección: 192.168.50.21

servidor 4.2.2.3

Servidor predeterminado: c.resolvers.level3.net

Dirección: 4.2.2.3

>

Ahora estoy listo para hacer consultas contra 4.2.2.3 versus 192.168.50.21

atlantaitservice.com
fuente
Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
Tal vez no haya contenido nuevo, sino valor. Prefiero esta respuesta a la larga :)
Pawel Cioch
0

puede configurar el DNS primario para usar con su conexión.
Vaya a las propiedades de su conexión => Internet Procol (TCP / IP). (el lugar donde puede establecer una IP estática)
Aquí puede definir manualmente qué DNS desea usar para cada conexión.
Después de la prueba, siempre puede cambiarlo a su valor anterior.

PatrickCUDO
fuente
3
No creo que sea una forma "directa" de consultar un servidor DNS.
lepe
0

Obtenga tipos de registros específicos del servidor DNS especificado con un comando

Para buscar tipos de registros distintos de los registros predeterminados A y AAAA (y CNAME) devueltos por nslookup, utilizando el servidor DNS que especifique:

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

Por ejemplo, para devolver registros MX para el dominio stackexchange.comutilizando el servidor DNS, 8.8.4.4el comando sería:

nslookup -q=MX stackexchange.com 8.8.4.4
Imitador Twisty
fuente
0

Estoy trabajando en Openwrt 18.06.1 ARMv6 Raspberry pi y configurando tor dns, así como dnscrypt-proxy, por lo que tuve un problema muy similar. La causa raíz es que el ISP local está interceptando respuestas inseguras de root-servers.net, respuestas que dicen que no se encontró el sitio, y luego redirigiendo a su propio sitio web. Si bien no es un gran defecto de seguridad, tampoco lo encuentro particularmente útil.

La primera prueba que se debe hacer cuando se consulta una dirección específica es probar una dirección no válida, para asegurarse de obtener una respuesta nula adecuada cuando se usan los parámetros del servidor, el puerto y el host. Hay muchas guías y versiones, y es fácil pensar está realizando una prueba de puerto cuando en realidad está respondiendo desde resultados almacenados en caché o servidores predeterminados. Después de obtener una respuesta nula, trabaje con una dirección de servidor y un puerto activos. Los puertos activos se pueden mostrar en openwrt con netstat -plnt, pero tenga en cuenta que algunos comandos del enrutador pueden necesitar instalarse primero. El servicio tor que configuré en el puerto 9053 no se muestra aquí, pero aún funciona después de agregar DNSPort 127.0.0.1:9053 al archivo torrc. El formato nslookup en esta plataforma acepta parámetros [host] y [servidor] y puedo probar tor dns con nslookup cnn.com 127.0.0.1 # 9053 Puedo probar dnscrypt con el comando nslookup cnn. com 127.0.0.1 # 5353 El cambio a números de puerto o dominios no válidos obtiene una respuesta; ; tiempo de conexión agotado; no se pudo llegar a ningún servidor. Dig también funciona en openwrt, pero debe instalarse desde el paquete bind-dig. dig -q 127.0.0.1 -p 9053 www.bbc.com Y nuevamente falla para puertos no válidos. En mi caso, el problema se resolvió cuando cambié las entradas en / etc / config / network y configuré la opción dns '127.0.0.1' para redes en las que anteriormente usaba entradas DNS inseguras allí.

Prada
fuente