Cómo cambiar la configuración de DNS en servidores Ubuntu (comandos)

Configurar un servidor DNS específico en Ubuntu Server (sin una interfaz de escritorio) suele ser uno de los primeros pasos de la configuración inicial, pero no es tan intuitivo como podría ser. Estoy acostumbrado a editar el archivo resolv.conf para hacer esto, pero ya no es el método correcto. Hice algunas pruebas y, en este artículo, compartiré el procedimiento exacto para cambiar el servidor DNS en su sistema.

En versiones recientes de Ubuntu, la configuración de DNS ahora se guarda en la carpeta /etc/netplan. Se crea un archivo de configuración predeterminado durante la instalación y se puede editar con un servidor DNS diferente, según la infraestructura de la red.

No te preocupes, te guiaré a través de todos los pasos. Comencemos por verificar su configuración actual, aprender a actualizarla y elegir un buen servidor DNS que pueda usar.

¿Dónde está configurado el DNS en Ubuntu Server?

Históricamente, la configuración de DNS en la mayoría de las distribuciones de Linux se guardaba en el archivo /etc/resolv.conf. En Ubuntu Server, hay un nuevo servicio (resuelto por systemd) que lo reemplaza. La configuración de la red principal se almacena en /etc/netplan.

Si intenta abrir el archivo /etc/resolv.conf en una versión reciente de Ubuntu Server, leerá algo como esto: «No editar». No debe cambiar nada en este archivo, se sobrescribirá.

La configuración de red actual en Ubuntu Server se almacena en /etc/netplan, donde encontrará un archivo YAML, probablemente llamado algo así como «00-installer-config.yaml». Parece que de forma predeterminada, para una configuración de DHCP estándar:

Puede ser diferente si establece una dirección IP estática durante la instalación o incluso elige un servidor DNS específico en el asistente de instalación.

En este ejemplo típico, no tengo nada configurado manualmente. Obtengo todo del servidor DHCP, por lo que ni siquiera veo en este archivo cuál es mi servidor DNS actual.

¡Consigue mi hoja de trucos!
¡Obtenga su archivo PDF gratuito con todos los comandos que necesita saber en Linux!

¿Cómo ver el servidor DNS actual en Ubuntu Server?

Para obtener la dirección IP del servidor DNS actual en Ubuntu Server, se puede usar el comando «sudo resolvectl status». Mostrará la configuración para todas las interfaces de red.

Entonces, puedes usar:
sudo resolvectl status
Y obtendrás algo como:

En mi caso, solo tengo configurado un servidor DNS (192.168.222.1, que es mi enrutador de Internet).
Es posible que tenga varias direcciones IP en la línea «servidores DNS», las otras se usan como respaldo.

Ahora que sabemos cómo verificar la configuración actual, veamos cómo actualizarla.

Cómo cambiar el servidor DNS en la línea de comandos

Cuando se instala systemd-resolved, el servidor DNS se puede cambiar editando el archivo de configuración ubicado en /etc/netplan. En instalaciones de sistemas antiguos, editar /etc/resolv.conf podría ser suficiente.

Te mostraré ambos métodos, pero lo más probable es que solo necesites el primero.

Método 1: Actualizar /etc/netplan

  • Encuentre el nombre del archivo de configuración actual:
    sudo ls /etc/netplan
  • Abra el archivo de configuración ubicado en /etc/netplan:
    sudo nano /etc/netplan/00-installer-config.yaml
    Cambie el nombre del archivo si es necesario o cree uno nuevo si no lo hay.
  • Actualice el contenido del archivo para que se parezca a:

    Entonces, mantuve la configuración de DHCP para la dirección IP, la máscara y la puerta de enlace (dhcp4: verdadero).
    Solo agregué la parte de los servidores de nombres:
    nameservers:
    addresses: [IP_1, IP_2]

  • Guarde el archivo y salga (CTRL+O, CTRL+X).

Para actualizar la configuración de red actual, puede usar:
sudo netplan apply
Si algo sale mal, puede agregar la opción detallada para obtener más detalles:
sudo netplan --verbose apply

Luego puede usar «resolvectl» nuevamente para verificar que la configuración se haya actualizado:
sudo resolvectl status
Y verifique que la línea «Servidores DNS» ahora esté usando su nueva configuración.

Como mantuve una configuración de DHCP en mi ejemplo, la dirección IP de mi enrutador todavía aparece aquí, pero primero usará las que configuré en la configuración.

Método 2: Actualizar /etc/resolv.conf

En versiones antiguas de Ubuntu, algunas otras distribuciones de Linux, o simplemente para una prueba temporal, aún puede editar /etc/resolv.conf para usar un servidor DNS diferente.

El contenido del archivo es generalmente muy corto, generalmente de una a tres líneas, incluida la dirección IP del servidor DNS actual:

¡Consigue mi hoja de trucos!
¡Obtenga su archivo PDF gratuito con todos los comandos que necesita saber en Linux!

Simplemente abra el archivo con su editor favorito para cambiar la dirección IP.
sudo nano /etc/resolv.conf
El servidor utilizado debe actualizarse inmediatamente.

Pero, ¿qué debería usar para su servidor DNS de todos modos? ¿Es obligatorio usar el de tu proveedor de Internet, o hay algo mejor?

¿Cuáles son los mejores servidores DNS para Linux?

Google, OpenDNS, Cloudflare o Quad9 son las opciones más populares para servidores DNS públicos. Son más rápidos, más confiables y brindan mayor seguridad para el usuario final.

A veces, necesita usar un servidor DNS específico. Por ejemplo, si tiene Pi-Hole en casa o trabaja en una empresa donde hay Active Directory, no tiene otra opción, debe usarlo para obtener todos los beneficios.

Pero la mayoría de las veces, puede beneficiarse de cambiar el servidor DNS de su proveedor de Internet actual a algo mejor. En este caso, la confianza y el rendimiento son factores importantes a considerar (si el servidor no funciona, ya no tiene acceso a Internet, si está cargado, tiene Internet lento).

Tiendo a confiar en los más grandes, incluso si sé que a algunos de ustedes no necesariamente les gustará usar Google DNS para su navegación personal, lo uso mucho y rara vez tengo problemas.

Estos son algunos de los servidores DNS más populares que puede probar en Linux:

  • Google:
    • Primaria: 8.8.8.8
    • Secundario: 8.8.4.4
  • OpenDNS (ahora propiedad de Cisco):
    • Primaria: 208.67.222.222
    • Secundario: 208.67.220.220
  • Llamarada en la nube:
    • Primaria: 1.1.1.1
    • Secundario: 1.0.0.1
  • Quad9:
    • Primaria: 9.9.9.9
    • Secundario: 149.112.112.112

Hay herramientas y sitios web que le mostrarán la opción más rápida en su área si lo desea, pero supongo que debería cambiar con frecuencia (consulte DNS Perf, por ejemplo).

¡Consigue mi hoja de trucos!
¡Obtenga su archivo PDF gratuito con todos los comandos que necesita saber en Linux!

Recordatorio: Recuerda que todos los miembros de mi comunidad tienen acceso a este sitio web sin anuncios, cursos exclusivos y mucho más. Puede convertirse en parte de esta comunidad por tan solo € 5 por mes y obtener todos los beneficios de inmediato.

Cómo probar si el DNS está funcionando en Linux

Una vez que el servidor DNS está configurado, el comando «nslookup» se puede usar para enviar cualquier solicitud de DNS y verificar la respuesta del servidor.

Tomemos un ejemplo. Simplemente escriba este comando:
nslookup
Luego, escriba un nombre de dominio, por ejemplo:
revhardware.com

Obtendrás algo así:

Lo primero que le dirá es el servidor que se está utilizando. En mi ejemplo, no conocemos exactamente cada uno, ya que se está ejecutando el servicio local resuelto por systemd. Utilice el comando resolvectl si tiene alguna duda:
sudo resolvectl status

De todos modos, obtienes la respuesta del servidor DNS principal. En este caso, devuelve 3 direcciones IP diferentes (porque uso un CDN para el sitio web). ¡Esta funcionando!

Puede especificar un servidor DNS diferente (para una prueba o para verificar el secundario, por ejemplo), simplemente use:
server <IP-ADDRESS>
Por ejemplo:
server 1.1.1.1
Y repite la misma prueba con un nombre de dominio:

¡Eso es! Creo que ahora sabe todo para comprobar la configuración actual, actualizar su servidor DNS y asegurarse de que funciona correctamente.

Si te gustó este tutorial, asegúrate de revisar mis otros artículos en el sitio web, por ejemplo:

¡Consigue mi hoja de trucos!
¡Obtenga su archivo PDF gratuito con todos los comandos que necesita saber en Linux!

Recursos adicionales

¿Perdido con la línea de comando?
No necesitas aprender y recordar todo, solo descarga mi hoja de trucos donde explico los comandos más importantes en Linux, con una breve explicación y algunos ejemplos.
Descarga mi hoja de trucos en PDF gratis.

Comunidad VIP
Si solo quieres pasar el rato conmigo y otros fanáticos de Linux, también puedes unirte a la comunidad. Comparto tutoriales exclusivos y contenido detrás de escena allí. Los miembros Premium también pueden visitar el sitio web sin anuncios.
Más detalles aquí.

¿Necesita ayuda para construir algo con Python?
Python es un gran lenguaje para comenzar a programar en cualquier computadora con Linux.
Aprende lo esencial, paso a paso, sin perder tiempo entendiendo conceptos inútiles.
Obtenga el libro electrónico ahora.