¿Te has preguntado alguna vez, cuando editas el fichero /etc/hosts, si habría alguna forma de que todos los subdominios apunten al local? Algo así como que todos los dominios que acaben en .local apunten a 127.0.0.1.
Esto, con el fichero por defecto /etc/hosts no es posible. Únicamente puedes apuntar un dominio o subdominio exacto a una IP.
Para hacer esto yo utilizo el servicio dnsmasq. Dnsmasq es un pequeño servidor DNS que, entre otras muchas cosas, permite asignaciones de dominios (y sus subdominios) a IPs.
Instalación de Dnsmasq en Ubuntu 22.04
Lo primero será deshabilitar del inicio el sistema por defecto de resolución de dominio, systemd-resolved.
sudo systemctl disable systemd-resolved sudo systemctl stop systemd-resolved
Comprobamos dónde está el fichero actual de resolv.conf. Suele estar en /run/systemd/resolve/stub-resolv.conf, pero confírmalo con un
ls -lh /etc/resolv.conf
Después lo deslinkamos
sudo unlink /etc/resolv.conf
Y creamos nuestro propio resolv.conf con un dominio que funcione temporalmente (Google, cloudflare, ...)
echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf
Y por último instalamos Dnsmasq
sudo apt update sudo apt install dnsmasq
Configuración de Dnsmasq en Ubuntu 22.04
Editamos el fichero /etc/dnsmasq.conf y le añadimos al final del fichero lo siguiente
port=53 domain-needed bogus-priv strict-order expand-hosts listen-address=127.0.0.1
Reiniciamos dnsmasq para que pille los cambios
sudo systemctl restart dnsmasq
Y añadimos al fichero resolv.conf nuestro nuevo servidor DNS:
sudo vim /etc/resolv.conf nameserver 127.0.0.1 nameserver 192.168.1.51
(en mi caso, el DNS 192.168.1.51 es un pi-hole funcionando en una raspberry pi. Incluye aquí los servidores DNS que quieras)
Por último, reinicia dnsmasq y comprueba que funciona
sudo systemctl restart dnsmasq dig A google.com
Esto debería devolverte la IP de google.com ylgún dato más.
Añadir dominios con wildcard
Para añadir un dominio con wildcard al dnsmasq es muy sencillo. Aquí te pongo dos ejemplos:
Dominio exacto sin widcard:
Dominio con wildcard
address=/.local/127.0.0.1
Como ves, la única diferencia es el punto inicial al dominio, aunque con esto únicamente resolveras subdominios, no el dominio local.
Si quieres que local y sub.local apunten a 127.0.0.1, tienes que añadir dos registros.
Add new comment