You are here

Dominios con wildcard en local en Linux

isholgueras's picture
Submitted by isholgueras on Thu, 05/11/2023 - 11:21

¿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:

address=/mi-proyecto.local/127.0.0.1

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.

 

Tags:

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.