Seguridad

Cómo utilizar DNS personalizado resuelto por Systemd en Linux

Cuando comencé a escribir esta publicación, pensé que conocía la ruta hacia el destino al que me propuse llevarte. Pero cuando volví sobre mis pasos para asegurarme de haber entendido el camino, terminé desviándome del rumbo. Aunque me irritaban las lagunas en mi conocimiento, este ejercicio me llevó a escribir algunos de mis artículos favoritos: Aprendí tanto como tú, si no más.

Teniendo en cuenta que el tema de este artículo varía mucho entre distribuciones de Linux (y ha cambiado con el tiempo), no debería sorprenderme haber ido en la dirección equivocada. Con las computadoras, el conocimiento se vuelve obsoleto rápidamente.

Ah, ¿dónde están mis modales? Nuestro tema de hoy es configurar los ajustes DNS de Linux de escritorio. En principio, es simple y puede aportar beneficios de privacidad, seguridad y usabilidad. Sin embargo, a pesar de ser muy sencillo en teoría e históricamente en la práctica, personalizar el DNS de un dispositivo ya no es una cuestión intuitiva.

Toma el control del dominio de tu ordenador

¿Por qué tanto alboroto por el DNS? Porque la configuración de DNS es una opción fácil para recuperar algo de agencia en su vida digital. Para entender por qué, consulte la siguiente breve descripción general de DNS.

El Sistema de Nombres de Dominio a menudo se describe como la «guía telefónica» de Internet. Cualquier conexión a Internet, conocida como Protocolo de Internet, sólo entiende direcciones IP, no nombres de dominio, como linuxinsider.com. Cuando ingresa una URL que contiene un dominio, su computadora solicita al servidor DNS la dirección IP asociada con ese dominio. Una vez que el servidor DNS responde, su computadora marca la dirección IP y se conecta.

Es posible que hayas notado una situación como la de la gallina y el huevo. Si su computadora necesita una respuesta de un servidor DNS antes de conectarse, ¿cómo encuentra un servidor DNS? Su computadora almacena una cantidad de IP de servidor DNS para saber a quién solicitar información de dominio.

Entonces, ¿de dónde vienen estas IP de servidores DNS? Hay algunas posibilidades, pero normalmente provienen de la red a la que estás conectado.

Los administradores de puntos de acceso (AP) pueden personalizarlos o, como es más común en redes domésticas o de pequeñas empresas, el proveedor de servicios de Internet (ISP) que conecta el AP a Internet puede configurar la IP automáticamente. Los servidores DNS proporcionados por los ISP suelen pertenecer al ISP. No importa quién configure en última instancia los servidores DNS del AP, el AP enviará su dirección al dispositivo cliente.


Bien, empezando desde antes de este desvío, ¿por qué podría necesitar un servidor DNS diferente al que proporciona el AP para su computadora?

Primero, el AP puede usar DNS para impedirle acceder a ciertos dominios. Una de las formas más fáciles de alejar un dispositivo de un sitio web es no proporcionar la respuesta «correcta» a sus solicitudes de DNS. Puedes eludir esta censura básica eligiendo un servidor DNS que sepas que responderá a tus consultas con sinceridad.

En segundo lugar, si el DNS de su ISP falla, es posible que aún desee utilizar Internet.Hace unos años, un Ataque DDoS al proveedor de DNS Dyn Bloquear eficazmente el uso de Internet de millones de usuarios.

¿Está caído Internet? Oh, para nada. Los dispositivos de los usuarios simplemente no pueden acceder a los servidores Dyn DNS que les proporcionan sus ISP. Cualquiera que haya personalizado su dispositivo para acceder directamente a un servidor DNS alternativo puede seguir navegando como si nada.

Hay una razón por la que cumplir tus propósitos es tan difícil

Por mucho que aprecio el DNS, esta es una de las cosas que nunca recordaré. Exactamente Cómo configurar. Parte de la razón por la que quería escribir este artículo era para que perdurara. Dudo que lo olvide ahora.

En los viejos tiempos de Linux, la configuración de DNS era sencilla.Cuando su dispositivo recibe las direcciones del servidor DNS del AP, el sistema las escribe directamente en /etc/resolv.conf. Simplemente desactive el servicio que cubre el archivo (para Linux de escritorio, generalmente es NetworkManager), escriba en cualquier servidor DNS que desee y listo.

Systemd complica la personalización de DNS (y muchas otras cosas). Nos ceñiremos a lo básico. systemd es una gran pieza de software que es a la vez un sistema de inicio y una aplicación de control de demonios. Sin embargo, sólo nos preocupan los demonios, son sólo servicios en segundo plano.

Uno de estos demonios, systemd-resolved, es responsable de manejar DNS. Las diferentes distribuciones de escritorio de Linux interactúan con systemd-resolved a su manera, por lo que es difícil describir el proceso de resolución de DNS en todos los casos.Pero systemd-resolved es la razón por la que no podemos anularlo. /etc/resolv.conf. El servicio ejecuta un «escucha de código auxiliar» en su computadora en la dirección IP 127.0.0.53 (todas las direcciones IP 127.0.0.x están reservadas para que los dispositivos hagan referencia a sí mismos).

Un escucha de código auxiliar es un «servidor DNS» que solo a) reenvía solicitudes a un servidor DNS real yb) almacena en caché las respuestas que devuelve.Para asegurarse de recibir todas las solicitudes de DNS del sistema, systemd resuelve el control /etc/resolv.conflo que lo obliga a contener solo oyentes auxiliares.

Esta no es la única forma en que systemd-resolved puede capturar todas las solicitudes de DNS para su computadora; es solo un último recurso. Pero como todas las páginas de manual resueltas por systemd le advierten que no lo desactive, debemos configurar nuestro DNS a través de systemd-resolved.

¡Consultemos y dividamos!

Entiendo la mayor parte. Pero si bien la explicación anterior no es errónea, está incompleta. Ingenuamente, creí que ajustar systemd-resolved era tan simple como insertar el servidor que quería en su archivo de configuración: /etc/systemd/resolved.conf. Lo que no puedo entender es la arquitectura de «DNS dividido» de systemd-resolved.

En systemd-resolve, cada interfaz de red individual (por ejemplo, tarjeta inalámbrica, adaptador Ethernet, etc.) o «enlace» tiene su propia configuración DNS específica del enlace. La razón detrás de esto es sólida: es posible que desee utilizar diferentes servidores para resolver consultas de DNS en diferentes situaciones.este Artículo de blog El sitio web de Gnome Foundation proporciona una descripción general fácil de entender de la funcionalidad de DNS dividido y proporciona ejemplos fáciles de entender de cuándo se requiere la configuración de DNS por enlace.


Las conclusiones clave de este artículo son que para controlar completamente a dónde van las consultas DNS en el escritorio Linux, debemos:

  • Configure los servidores DNS a los que se deben reenviar enlaces específicos o dominios completos, y
  • Especifica las condiciones bajo las cuales systemd-resolved debe reenviarse a este enlace o alcance.

systemd-resolved puede determinar el enlace para enrutar consultas de varias maneras. Este artículo de la revista Fedora También es esencial comprender cómo se desarrollan todas estas decisiones.

Para nuestros propósitos, el detalle más importante es el uso del «~» especial. Para enrutar solo dominios, podemos decirle a systemd-resolved que predetermina todas las consultas a una configuración de enlace/dominio a menos que la consulta se ajuste a una coincidencia de dominio más específica para otro enlace.

Vale la pena mencionar la complejidad de enrutar a esta configuración DNS «predeterminada» y no enrutar a esta configuración DNS «predeterminada». Pero hay tantas cosas en este artículo que de poco sirve hacer estas observaciones ahora. Como quiero hacer mi parte para preservar todo el conocimiento que he acumulado en este proyecto, publicaré una exploración de DNS de la «Parte 2», continuando donde lo dejé por ahora.

finalmente resuelve el problema

Por muy esclarecedores que sean, una crítica que tengo de los dos artículos citados anteriormente (y por la que veo el valor de escribir mis propios artículos) es que ninguno de los artículos detalla cómo se articularon los conceptos y se pusieron en práctica. Entonces, resolvamos este problema.

Primero debemos decidir si establecer como predeterminada la configuración DNS de enlace único o global. Si, como yo, sólo desea que la resolución DNS sea más resistente, entonces una configuración global tiene más sentido. De esta manera, si conectamos un cable Ethernet a nuestro dispositivo, la consulta DNS se seguirá enviando al servidor que queramos, pero a través del cable Ethernet.

En cambio, si establecemos Conexión inalámbrica Como dominio de solo ruta predeterminado, nuestra computadora intentará usar la tarjeta inalámbrica para resolver DNS, aunque en realidad estará conectada al sitio web mediante un cable Ethernet o cualquier otra interfaz. Si nuestra tarjeta inalámbrica no está conectada a la red, la situación es aún peor porque la consulta DNS fallará y probará con otros enlaces, que quizás no hayamos personalizado.

La configuración de cada enlace tiene su propósito, que se analiza más adelante en este artículo.

Elegir un «enlace» global para nuestra configuración DNS significa que Hacer Editar solo /etc/systemd/resolved.conf (Con derechos de superusuario), pero con función de agregar con un solo clic.

1. Descomente la línea «DNS=» y agregue hasta tres direcciones IP DNS después de «=», separadas por espacios.

2. Descomente la línea «Dominios=» y agregue «~». (sin comillas) inmediatamente después de «=».

3. Guarda el archivo.

4. Reinicie systemd-resuelto ejecutando systemctl reiniciar systemd-resuelto Como superusuario.

Puede verificar su configuración ejecutando analizar gramaticalmente. En el resultado debajo de Configuración global, verá los servidores DNS que el AP envía a la computadora.

Analizar el valor predeterminado del dominio

Para DNS dividido, auditar servidores es muy importante de hecho Cumpla con su solicitud de DNS.

1. Establezca el nivel de registro de resolvctl en «depurar» ejecutando depuración a nivel de registro resolvectl Como superusuario.

2. Ejecutando una actualización de caché (para forzar una nueva consulta de DNS) Analizar caché de actualización.

3. Realice una búsqueda de DNS a través de Analizar dominio de consulta (donde «dominio» es cualquier dominio real).

4. Abra el registro ejecutando Journalctl -u systemd-resuelto.

consulta de análisis

Al leer los registros, haga clic en «/» para buscar, escriba «Usando el servidor DNS» (sin comillas) y presione «Entrar» (el registro se abre en el paginador «menos») para encontrar rápidamente dónde systemd-resolved está reenviando solicitudes.

Si solo ve los servidores que configuró en la configuración global y no ve todos los servidores vinculados en la salida de resolvctl, entonces todo está bien:

Usar la configuración global del servidor DNS

Estén atentos a mi artículo de seguimiento, donde presentaré el proceso de enrutamiento de DNS de systemd-resolved y cubriré la configuración de DNS por enlace. Finalmente, informaré sobre mi misión de exploración y discutiré por qué parece difícil encontrar información para realizar esta tarea teóricamente básica.


Sugerir un tema

¿Hay algún tutorial destacado que le gustaría ver?

Envíeme sus opiniones por correo electrónico y las consideraré en una columna futura.

¡Y utilice la función de comentarios de los lectores a continuación para brindar su opinión!

LEER  Economía de la seguridad: la clave para la resiliencia

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba