En esta página
¿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-resolvedComprobamos 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.confDespués lo deslinkamos
sudo unlink /etc/resolv.confY creamos nuestro propio resolv.conf con un dominio que funcione temporalmente (Google, cloudflare, ...)
echo nameserver 8.8.8.8 | sudo tee /etc/resolv.confY por último instalamos Dnsmasq
sudo apt update sudo apt install dnsmasqConfiguració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.1Reiniciamos dnsmasq para que pille los cambios
sudo systemctl restart dnsmasqY 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.comEsto 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:
address=/mi-proyecto.local/127.0.0.1Dominio con wildcard
address=/.local/127.0.0.1Como 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.