Para crear un Servidor DNS en tu red local vamos a usar una herramienta sencilla y práctica llamada dnsmasq el cual nos ayudará a conectarnos a los dispositivos de la red local sin necesidad de aprendernos las IPs de los dispositivos, adicionalmente es muy importante que tanto tu servidor dns y todos los equipos a los que deseamos acceder mediante dns tengan asignada una ip estática de lo contrario, no funcionará de forma permanente..
Copiar código
# actualizar el sistema e instalar dnsmasq
sudo apt-get update && sudo apt-get upgrade -y && sudo apt install dnsmasq -y
Una vez instalado dnsmasq debemos modificar el archivo de configuración:
Copiar código
# modificar archivo de configuración de dnsmasq
sudo nano /etc/dnsmasq.conf
Dentro del archivo, nos desplazamos hasta el final del documento y añadiremos los siguientes registros:
Copiar código
# añadir registros al final del documento
interface=eth0 # Interfaz de red del equipo, puedes obtenerla con el comando [ip a] (puede ser wlan0 si usas WiFi), en este caso uso eth0
bind-interfaces # Asegura que dnsmasq solo escuche en la interfaz especificada
server=8.8.8.8 # Servidor DNS de respaldo (Google DNS u otro)
domain-needed # Solo resuelve nombres de dominio completos
bogus-priv # Bloquea consultas a direcciones privadas que no deberían salir de la red
local=/mi-red.local/ # Dominio local personalizado
expand-hosts # Expande nombres de host con el dominio especificado
domain=mi-red.local # Dominio DNS local
addn-hosts=/etc/hosts.dnsmasq # Archivo donde defines los nombres de host y sus IPs
Creamos el archivo con los hosts personalizados para ello debemos conocer las ips de todos los dispositivos que queremos acceder a través de esta modalidad, considerando que en la configuración indicamos que los hosts iban a estar en la ruta /etc/hosts.dnsmasq (addn-hosts=/etc/hosts.dnsmasq), ejecutamos el siguiente comando:
Copiar código
# crear y editar el archivo con la lista de host e ips
sudo nano /etc/hosts.dnsmasq
Una vez abierto el archivo añadimos la lista de ips de la red local y seguido, separado por un espacio, el nombre de los hosts, ejemplo:
Copiar código
# crear y editar el archivo con la lista de ips y los nombres de host deseados
192.168.1.1 server1
192.168.1.2 server2
192.168.1.3 server3
192.168.1.4 server4
192.168.1.5 server5
Guardamos y cerramos el archivo, luego reiniciamos el servicio de dnsmasq:
Copiar código
# reiniciar dnsmasq
sudo systemctl restart dnsmasq
En el equipo cliente donde usas alguna distribución de linux debes modificar el archivo resolv.conf, para ello ejecutamos el comando:
Copiar código
# en cliente modificar archivo resolv.conf
sudo nano /etc/resolv.conf
Al final del archivo añadimos lo siguiente:
Copiar código
# cliente conf resolv.conf
nameserver 192.168.1.12 # ip local del servidor dns
nameserver 8.8.8.8 # dns google
nameserver 8.8.4.4 # dns google
El archivo resolv.conf es un archivo que puede ser sobreescrito por el sistema por lo tanto debes de protegerlo de escritura con el siguiente comando:
Copiar código
# comando para hacer inmutable el archivo resolv.conf
sudo chattr +i /etc/resolv.conf
En caso de que quieras volver a modificarlo es importante que primero lo vuelvas a hacer mutable con el comando:
Copiar código
# comando para hacer mutable el archivo resolv.conf
sudo chattr -i /etc/resolv.conf
Finalmente para verificar que esta funcionando el servidor DNS lo que podemos hacer es un simple ping al server1 y verificar que si hay tráfico o en su defecto conectarnos mediante ssh ejemplo ssh usuario@server1
Si tienes problemas para hacer inmutable el archivo te recomiendo que primero copies el contenido del archivo resolv.conf y luego lo elimines, lo vuelves a crear y finalmente pegarle el archivo e intenta nuevamente hacerlo inmutable, esto seguramente lo resolverá:
Copiar código
# moverse a la ruta etc donde esta el archivo de configuración
cd /etc
# copiar el contenido y hacer un respaldo del archivo de configuración, eliminar el archivo original de configuración
sudo cat resolv.conf > backup_resolv.conf && sudo rm resolv.conf
# tomar la información del archivo de respaldo para crear un nuevo archivo resolv.conf y asignarle una propiedad inmutable
sudo cat backup_resolv.conf > resolv.conf && sudo chattr +i /etc/resolv.conf
Si la maquina cliente es Windows deberás usar WSL y adicional a los pasos anteriores de cliente, deberas modificar el archivo wsl.conf mediante el comando:
Copiar código
# modificar archivo wsl.conf
sudo nano /etc/wsl.conf
Una vez abierto el archivo, al final del documento pegarás la siguiente información:
Copiar código
[network]
generateResolvConf = false
nameserver=192.168.1.12 # IP del servidor DNS en este ejemplo