Los DNS resolvers son un co­m­po­ne­n­te esencial del Domain Name System (DNS). Actúan como co­n­tra­pa­r­ti­da co­n­su­l­to­ra de los se­r­vi­do­res de nombres DNS que les responden. Desde el punto de vista del usuario, un DNS resolver sirve de interfaz entre el usuario o la apli­ca­ción y los se­r­vi­do­res de nombres.

DNS gratuito
Reduce el tiempo de carga de tus páginas web
  • Re­so­lu­ción rápida de dominios para una página web siempre di­s­po­ni­ble
  • Mayor pro­te­c­ción contra fallos y tiempos de inac­ti­vi­dad
  • No requiere tra­n­s­fe­re­n­cia de dominio

¿Qué es un DNS resolver?

Un DNS resolver es un servicio que pro­po­r­cio­na una dirección IP cuando se solicita un nombre de dominio. Se habla de resolver un dominio ob­te­nie­n­do su dirección IP; “resolver” en inglés se define en el documento de es­pe­ci­fi­ca­ción de Internet RFC 1034:

Cita

“Resolvers are programs that extract in­fo­r­ma­tion from name servers in response to client requests. Resolvers must be able to access at least one name server and use that name server’s in­fo­r­ma­tion to answer a query directly, or pursue the query using referrals to other name servers.” — Fuente: https://www.rfc-editor.org/rfc/rfc1034.html

Tra­du­c­ción: “Los resolvers son programas que extraen in­fo­r­ma­ción de los se­r­vi­do­res de nombres en respuesta a las pe­ti­cio­nes de los clientes. Los resolvers deben ser capaces de tener acceso a al menos un servidor de nombres y utilizar la in­fo­r­ma­ción de ese servidor de nombres para responder a una consulta di­re­c­ta­me­n­te, o resolver la consulta uti­li­za­n­do re­fe­re­n­cias a otros se­r­vi­do­res de nombres.” (traducido por IONOS)

Los DNS resolvers son la co­n­tra­pa­r­ti­da de los se­r­vi­do­res de nombres, los cuales contienen la in­fo­r­ma­ción real del DNS. Dado que los se­r­vi­do­res de nombres también se denominan se­r­vi­do­res DNS, el término “cliente DNS” se utiliza oca­sio­na­l­me­n­te para referirse a los DNS resolvers. Sin embargo, muchos DNS resolvers son se­r­vi­do­res, por lo que existe un uso múltiple del término servidor DNS.

Los DNS resolvers tienen formas di­fe­re­n­tes. Un DNS resolver no es ne­ce­sa­ria­me­n­te un co­m­po­ne­n­te único, ni una te­c­no­lo­gía es­pe­cí­fi­ca. Desde la pe­r­s­pe­c­ti­va del usuario, un DNS resolver es cualquier sistema que se encargue de averiguar la dirección IP asociada a un nombre de dominio concreto. El modo exacto en que el DNS resolver recibe la in­fo­r­ma­ción es irre­le­va­n­te.

En el nivel más bajo están los llamados “stub resolvers”. Por lo general, se trata de una bi­blio­te­ca de software o un servicio que se ejecuta en el equipo local. Los stub resolvers suelen co­mu­ni­car­se con los DNS resolvers ubicados en sistemas remotos, que son los que realizan el verdadero trabajo de re­so­lu­ción de nombres.

¿Por qué se necesita un DNS resolver?

El Domain Name System (DNS) es un sistema je­rá­r­qui­co di­s­tri­bui­do por todo el mundo para gestionar los datos asociados a los dominios de Internet. Un dominio es un nombre vi­sua­l­me­n­te atractivo para el ser humano, que es fácil de recordar y de in­tro­du­cir ma­nua­l­me­n­te. Una de las pri­n­ci­pa­les tareas del DNS es la re­so­lu­ción de nombres, es decir, re­la­cio­nar nombres de dominios con di­re­c­cio­nes IP. Los DNS resolvers son, por tanto, una de las piedras angulares de la es­tru­c­tu­ra técnica de Internet. Este es un ejemplo de re­so­lu­ción de nombres:

Nombre de dominio so­li­ci­ta­do Dirección IP obtenida
example.com 93.184.216.34

Aunque la mayoría de los usuarios no sean co­n­s­cie­n­tes de ello, muchas de sus ope­ra­cio­nes diarias comienzan con la co­n­ve­r­sión de un nombre de dominio en una dirección IP. El acceso a una página web, la re­cu­pe­ra­ción de un correo ele­c­tró­ni­co o el inicio de sesión en una cuenta de usuario a través de una apli­ca­ción comienzan con la re­so­lu­ción del nombre. Solo entonces tiene lugar la tra­n­s­fe­re­n­cia de datos pro­pia­me­n­te dicha.

Fase del trabajo Protocolo Servidor Ejemplo de nombre de host
Acceder a la página web HTTP Servidor web www.ionos.com
Recuperar el correo IMAP Servidor de correo imap.gmail.com
Acceso a la apli­ca­ción HTTPS Servidor API api.twitter.com

Lo que tienen en común los pasos an­te­rio­res es que los se­r­vi­do­res están in­vo­lu­cra­dos. Es decir, son sistemas remotos con los que se comunica nuestro sistema local. Para podernos comunicar, ne­ce­si­ta­mos la dirección de la otra parte que, en este caso, es la dirección IP del servidor. Sin embargo, no­r­ma­l­me­n­te solo conocemos sus nombres de dominio. Afo­r­tu­na­da­me­n­te, hay DNS resolvers que se encargan de resolver los nombres por nosotros.

DNS gratuito
Reduce el tiempo de carga de tus páginas web
  • Re­so­lu­ción rápida de dominios para una página web siempre di­s­po­ni­ble
  • Mayor pro­te­c­ción contra fallos y tiempos de inac­ti­vi­dad
  • No requiere tra­n­s­fe­re­n­cia de dominio

¿Qué ocurre si falla el DNS resolver?

Teó­ri­ca­me­n­te, también es posible hacer lo mismo sin un DNS resolver. En realidad, también se pueden utilizar las di­re­c­cio­nes IP di­re­c­ta­me­n­te. Sin embargo, hoy en día esto solo funciona de forma teórica. En la práctica, la re­so­lu­ción manual de nombres supone pérdidas co­n­si­de­ra­bles.

En primer lugar, el protocolo de seguridad HTTPS está vinculado a los nombres de dominio. Si intentas acceder a una página web sin IP, la co­mu­ni­ca­ción no se cifra. Además, solo la asi­g­na­ción del nombre de dominio permite alojar varias páginas web en un mismo servidor y dirigirse a ellos de forma es­pe­cí­fi­ca.

Los enfoques modernos de la di­s­tri­bu­ción geo­grá­fi­ca de los recursos de los se­r­vi­do­res también requieren el acceso a un DNS resolver. En este caso, un solo nombre de dominio está conectado a varias di­re­c­cio­nes IP. Esto se puede ilustrar bien con el ejemplo de la página de inicio de Google. Si solo fuera accesible bajo una única dirección IP, todo el tráfico mundial se dirigiría allí; lo que so­bre­ca­r­ga rá­pi­da­me­n­te el sistema.

¿Cómo funciona un DNS resolver?

El Domain Name System (DNS) consta de co­m­po­ne­n­tes di­s­tri­bui­dos por todo el mundo que in­ter­ac­túan entre sí. Hay cuatro clases pri­n­ci­pa­les de co­m­po­ne­n­tes; tres de ellos son se­r­vi­do­res de nombres, que contienen DNS records. La última clase comprende los DNS resolvers; la co­n­tra­pa­r­ti­da de los se­r­vi­do­res de nombres.

Co­m­po­ne­n­te DNS Equi­va­le­n­cia en inglés Ex­pli­ca­ción
Servidor root de nombres Root name server Contiene las di­re­c­cio­nes de los se­r­vi­do­res de nombres TLD.
Servidor de nombres TLD TLD name server Contiene las di­re­c­cio­nes de los se­r­vi­do­res de nombres au­to­ri­ta­rios de un TLD.
Se­r­vi­do­res de nombres au­to­ri­ta­rios Au­tho­ri­ta­ti­ve name server Contiene in­fo­r­ma­ción de una zona DNS.
Resolver recursivo Recursive resolver Determina las di­re­c­cio­nes IP de los nombres de equipos; realiza pe­ti­cio­nes a los se­r­vi­do­res de nombres para ese fin.
Consejo

¿Quieres pro­fu­n­di­zar más en el tema del DNS? En el artículo “Qué es un root server” puedes aprender más sobre los aspectos clave del Domain Name System.

Como ya sabes, un DNS resolver recibe una solicitud con un nombre de dominio y su cometido es de­te­r­mi­nar la dirección IP asociada. ¿Cómo funciona el proceso exac­ta­me­n­te? Lo cierto es que hay varios procesos.

Si la solicitud ya se ha realizado pre­via­me­n­te como, por ejemplo, al acceder re­pe­ti­da­me­n­te a google.com, la respuesta se carga desde la caché local. Si no fuera este el caso, el resolver realiza consultas a los se­r­vi­do­res de nombres y compila una respuesta a partir de la in­fo­r­ma­ción obtenida. El algoritmo utilizado para la re­so­lu­ción de nombres fue definido en el RFC 1034:

  1. Comprobar si la respuesta deseada está contenida en la caché local. Si es así, entregar la respuesta al cliente.
  2. Ide­n­ti­fi­car los mejores se­r­vi­do­res de nombres a los que consultar.
  3. Enviar consultas a los se­r­vi­do­res de nombres hasta que uno de ellos pro­po­r­cio­ne una respuesta.
  4. Evaluar la respuesta; po­s­te­rio­r­me­n­te:
    1. Si la respuesta resuelve la solicitud o contiene un error de nombre, almacenar en caché la respuesta y en­tre­gar­la al cliente.
    2. Si la respuesta contiene una re­fe­re­n­cia a otro servidor de nombres, se debe guardar la respuesta en caché y continuar con el paso (2).
      1. Si la respuesta es un registro CNAME, se debe guardar el CNAME en caché y continuar con el nombre canónico en el paso (1).
    3. Si la respuesta contiene un error del servidor, o parece ser in­co­rre­c­ta, se debe eliminar el servidor de la lista de se­r­vi­do­res y volver al paso (3).

¿Qué hacer en caso de que surjan problemas con el DNS resolver?

Como ya hemos visto, los DNS resolvers y la re­so­lu­ción de nombres asociada son im­po­r­ta­n­tes para el uso diario de los recursos de Internet. Sin embargo, el DNS tiene fama de ser una fuente de errores.

La su­s­ce­p­ti­bi­li­dad a los errores radica en la propia na­tu­ra­le­za del sistema. El DNS es un sistema di­s­tri­bui­do glo­ba­l­me­n­te y or­ga­ni­za­do je­rá­r­qui­ca­me­n­te en el que los cambios se propagan de forma gradual. Esto puede tardar hasta 48 horas, por lo que es fácil que surjan di­s­cre­pa­n­cias. Además, se utilizan cachés a todos los niveles, que son fu­n­da­me­n­ta­les para el re­n­di­mie­n­to, pero también son una fuente de errores.

Consejo

Los errores en la in­fo­r­ma­ción DNS al­ma­ce­na­da lo­ca­l­me­n­te pueden causar una serie de problemas. En muchas si­tua­cio­nes, ayuda borrar la caché DNS.

A di­fe­re­n­cia del in­te­r­ca­m­bio de datos real en Internet, que se realiza pri­n­ci­pa­l­me­n­te a través del protocolo TCP/IP, el protocolo UDP se utiliza para la co­mu­ni­ca­ción del DNS. El User Datagram Protocol (UDP) es más sencillo y requiere menos recursos. De­s­gra­cia­da­me­n­te, son pre­ci­sa­me­n­te esas pro­pie­da­des las que hacen que los DNS resolvers públicos sean objetivos atra­c­ti­vos para los ci­be­r­de­li­n­cue­n­tes.

Con un ataque UDP flood, los DNS resolvers públicos se utilizan in­de­bi­da­me­n­te como am­pli­fi­ca­do­res de ataques DDoS. Además, hay ataques de en­ve­ne­na­mie­n­to de caché que tienen como objetivo in­tro­du­cir in­fo­r­ma­ción DNS falsa en los DNS resolvers. A nivel del servidor, se utiliza la asi­g­na­ción aleatoria del puerto de origen como medida de pro­te­c­ción.

¿Cómo se comprueba si la re­so­lu­ción de nombres funciona?

Si se producen errores extraños en el sistema local que podrían apuntar al DNS como causa, es aco­n­se­ja­ble comprobar primero el fu­n­cio­na­mie­n­to de la re­so­lu­ción de nombres. Esto es fácil de hacer y facilita tener rá­pi­da­me­n­te in­fo­r­ma­ción sobre posibles problemas.

La he­rra­mie­n­ta nslookup está di­s­po­ni­ble como programa de línea de comandos en casi todos los sistemas ope­ra­ti­vos. En el caso más sencillo se ejecuta la he­rra­mie­n­ta e se introduce el nombre del host deseado como argumento. Si la re­so­lu­ción del nombre funciona, se recibe como respuesta su dirección IP co­rre­s­po­n­die­n­te. Además, la he­rra­mie­n­ta muestra el DNS resolver ya co­n­fi­gu­ra­do:

nslookup example.com
bash

En la práctica, nslookup también puede uti­li­zar­se para reverse DNS lookup. En este caso, se introduce una dirección IP como argumento y se recibe uno o varios nombres:

nslookup 9.9.9.9
bash

Como al­te­r­na­ti­va a nslookup, se puede hacer un ping al nombre de dominio. El comando ping está prei­n­s­ta­la­do en la mayoría de los sistemas y activa la re­so­lu­ción de nombres cuando se le solicita. Se introduce el nombre del host como argumento:

ping example.com
bash

Si nslookup o ping no pro­po­r­cio­nan una dirección IP, hay que asumir que la re­so­lu­ción de nombres no funciona. En ese caso, vale la pena intentar cambiar el DNS resolver o registrar una entrada temporal en el archivo de hosts, tema que será tratado más adelante.

Si se mostrara una dirección IP, eso quiere decir que la re­so­lu­ción de nombres funciona, al menos en un principio. Sin embargo, la in­fo­r­ma­ción puede ser in­co­rre­c­ta. A la hora de evaluar el resultado obtenido, merece la pena co­m­pa­rar­lo con las entradas DNS al­ma­ce­na­das glo­ba­l­me­n­te. Se recurre a DNS Pro­pa­ga­tion Checker de whats­m­y­d­ns.net para mostrar los registros A del nombre del host.

¿Cómo cambiar el DNS resolver?

Como se ha explicado al principio, el término DNS resolver tiene varios si­g­ni­fi­ca­dos. Cuando se trata de cambiar el DNS resolver, hace re­fe­re­n­cia a la dirección del servidor co­n­fi­gu­ra­do en el sistema que realiza la re­so­lu­ción de nombres por los usuarios. La mayoría de los usuarios pro­ba­ble­me­n­te no saben que se utiliza un servidor externo para esto.

En su estado básico, el DNS resolver del re­s­pe­c­ti­vo proveedor de Internet se utiliza en la mayoría de los sistemas, ya sea un PC, un portátil o un sma­r­t­pho­ne. En las redes do­mé­s­ti­cas, la dirección IP del DNS resolver suele estar guardada en el router. Al utilizar el DNS resolver pree­s­ta­ble­ci­do pueden surgir bastantes in­co­n­ve­nie­n­tes.

Además del filtrado de in­fo­r­ma­ción DNS personal conocido como DNS leak, existe otro problema conocido como DNS spoofing. En este último caso el proveedor de Internet entrega al usuario datos DNS ma­ni­pu­la­dos. Puede, por ejemplo, bloquear a los co­m­pe­ti­do­res o redirigir el tráfico de Internet a páginas con pu­bli­ci­dad. Por lo tanto, ge­ne­ra­l­me­n­te es una buena idea co­n­fi­gu­rar el DNS resolver uno mismo.

Para cambiar el DNS resolver se procede de forma diferente según el sistema operativo. Como regla general, hay que co­n­fi­gu­rar la conexión a la red e in­tro­du­cir la dirección de Internet de un DNS resolver conocido. De forma análoga al DNS se­cu­n­da­rio, se debe in­tro­du­cir un servidor se­cu­n­da­rio junto al DNS resolver primario. Este pro­po­r­cio­na re­du­n­da­n­cia y protege contra los errores cuando el servidor DNS no responde.

Para cambiar el DNS resolver hay que conocer las di­re­c­cio­nes IP exactas de uno o varios se­r­vi­do­res en los que se está eje­cu­ta­n­do un DNS resolver. Dado que la re­so­lu­ción de nombres no se da sin un DNS resolver, ló­gi­ca­me­n­te no se pueden utilizar nombres fáciles de memorizar para el ser humano.

Los DNS resolvers gratuitos ofrecen una serie de ventajas. Además de una mayor velocidad y pro­te­c­ción de la pri­va­ci­dad, en parte también ofrecen funciones de filtrado. Algunos ejemplos conocidos son Clou­d­fla­re con la dirección IP 1.1.1.1 y Quad9 con 9.9.9.9.

¿Cómo se puede evitar un DNS resolver?

Como hemos podido comprobar, los DNS resolvers son ese­n­cia­les para trabajar con Internet. Sin embargo, hay algunas si­tua­cio­nes en las que tiene sentido evitar la re­so­lu­ción de nombres a través de DNS resolvers. El truco técnico consiste en registrar entradas en el archivo hosts.

El archivo hosts es una reliquia de los primeros días de Internet. En aquella época, no había DNS, ya que el número de or­de­na­do­res co­ne­c­ta­dos era manejable. Se in­tro­du­cen las co­m­bi­na­cio­nes co­rre­s­po­n­die­n­tes di­re­c­ta­me­n­te en el archivo hosts para tra­n­s­fo­r­mar los nombres de host en di­re­c­cio­nes IP. A la izquierda se encuentra una sola dirección IP, a la derecha uno o varios nombres de host. El nombre de host localhost para el “Loopback Interface” también suele co­n­fi­gu­rar­se de este modo:

# IPv4
127.0.0.1       localhost
# IPv6
::1                 localhost

El stub DNS resolver local evalúa las entradas re­gi­s­tra­das en el archivo hosts de­s­ti­na­das a la re­so­lu­ción de nombres. Si se encuentra algún resultado para el nombre de host co­n­su­l­ta­do, el stub resolver retorna la dirección IP co­rre­s­po­n­die­n­te. En ese caso, se estaría ma­n­te­nie­n­do la consulta úni­ca­me­n­te en el equipo local. De lo contrario, el proceso normal de re­so­lu­ción de nombres tiene lugar a través del DNS resolver externo que se haya co­n­fi­gu­ra­do.

El archivo hosts permite trabajar sin un DNS resolver. Sin embargo, este requiere registrar una entrada para cada nombre de host que se quiere resolver. Lo cual no es muy práctico para el trabajo diario, pero sí es muy adecuado para algunas apli­ca­cio­nes es­pe­cí­fi­cas. Dado que el archivo de hosts se evalúa en primer lugar, puede uti­li­zar­se como solución a diversos problemas.

Uno de los usos del archivo host es el de asignar una dirección IP fija a un nombre de host. Este truco se utiliza a menudo para silenciar las apli­ca­cio­nes que “llaman a casa”. Esto se debe a que algunas apli­ca­cio­nes informan de forma periódica del nombre del host y tra­n­s­mi­ten los datos sin marcar a un servidor de­te­r­mi­na­do. Para evitarlo, basta con registrar una entrada en el archivo hosts.

Ilu­s­tra­ción del principio con un ejemplo. El objetivo es evitar que un programa interno acceda a spy.example.com. Para ello, se introduce el nombre de dominio en el archivo hosts y se hace re­fe­re­n­cia al loopback IP 127.0.0.1. De esta manera, las pe­ti­cio­nes van dirigidas al equipo local y nunca llegan al servidor. Desde el punto de vista de la apli­ca­ción, las pe­ti­cio­nes se cuelgan como si, por ejemplo, se hubiera cortado la conexión a Internet:

127.0.0.1   spy.example.com

El principio también puede in­ve­r­ti­r­se. Hoy en día, muchos países utilizan el bloqueo de páginas web a nivel de DNS. Los pro­vee­do­res de Internet se ven obligados, por orden judicial, a no entregar di­re­c­cio­nes IP o a fa­l­si­fi­car­las para de­te­r­mi­na­dos nombres de dominio. En términos técnicos se trata de una su­pla­n­ta­ción de DNS sa­n­cio­na­da por el Estado. Desde el punto de vista del usuario, no se puede acceder a los dominios deseados.

El uso in­te­li­ge­n­te del archivo hosts en el propio sistema permite evitar el bloqueo web por medio del DNS. Lo único que se necesita es la dirección IP real de la página web bloqueada. Esta se introduce en el archivo hosts junto a su nombre de dominio. Por ejemplo, si el dominio blocked.example.com está bloqueado por el proveedor a través de un bloqueo web por DNS, se puede recuperar el acceso si se introduce la dirección IP de la web en el archivo hosts:

93.184.216.34 blocked.example.com

Por último, pero no por ello menos im­po­r­ta­n­te, se presenta una apro­xi­ma­ción desde el de­sa­rro­llo web para co­n­fi­gu­rar la re­so­lu­ción de nombres en el di­s­po­si­ti­vo local a través del archivo hosts. Se supone que se va a trasladar una página web existente bajo el dominio www.example.com. Para preparar el traslado, primero se tra­n­s­fie­re la página web al nuevo servidor. Una vez fi­na­li­za­da la tra­n­s­fe­re­n­cia hay que probar la in­s­ta­la­ción, pero hay un problema: el nombre de dominio sigue llevando a la página web existente en el antiguo servidor 93.184.216.34; la página tra­n­s­fe­ri­da al nuevo servidor no puede ser ve­ri­fi­ca­da de esta manera.

Así que si­m­ple­me­n­te se introduce en el archivo hosts la dirección IP del nuevo servidor junto con el nombre del dominio. De esta manera, nuestras so­li­ci­tu­des locales van al nuevo servidor y podemos co­m­pro­bar­lo sin problemas. Al mismo tiempo, todos los demás vi­si­ta­n­tes siguen re­ci­bie­n­do la dirección IP del antiguo servidor. De este modo, la página sigue siendo co­m­ple­ta­me­n­te accesible para los vi­si­ta­n­tes.

198.51.100.0 localhost www.example.com

Se utiliza un pro­ce­di­mie­n­to similar para de­sa­rro­llar una página web de puesta en escena a nivel local. Si se quiere re­co­n­s­truir la página web de www.example.com, se configura una página de puesta en escena en un entorno de de­sa­rro­llo local que sea accesible bajo la dirección loopback 127.0.0.1. Se añade una entrada para el nombre de host dev.example.com en el archivo hosts:

127.0.0.1 localhost dev.example.com
Ir al menú principal