Pasar al contenido principal
26-04-2023

LANRecientemente, adquirí una Raspberry y configuré un pequeño servidor en casa con un servidor Ubuntu.También compré un nombre de dominio, contraté una IP fija con mi proveedor, abrí un puerto ssh y comencé a poder acceder al servidor de mi casa desde cualquier lugar.

Pero noté que no podía acceder a mi servidor usando el nombre de dominio cuando estaba conectado a mi red local. Por ejemplo desde una tablet, un celular u otra computadora conectada por Wifi en mi red local. Creo que esto se debe a que el enrutador de la red local asigna una dirección IP al servidor que es diferente de la dirección IP fija asociada con el nombre de dominio.

Esto podría solucionarse fácilmente asignando nombres de dominio a direcciones IP locales en la configuración del enrutador, pero resultó que mi proveedor de Internet bloquea esto en los enrutadores que instalan. La razón es evitar que las personas cambien su DNS (Servidor de nombres de dominio) y creen problemas para que ellos los resuelvan. Así que tuve que pensar en una forma de crear un DNS alternativo dentro de mi red local.

Una posibilidad es definir el nombre en cada dispositivo que se quiera conectar. Esto no es demasiado prácticvo, y si aparece un dispositivo nuevo, hay que configurarlo. Además, según de qué dispositivo se trate, no es trivial (por ejemplo en dispositivos Android).

Mirando las alternativas, leí que lo que hay que hacer es tener un servidor DHCP en otro dispositivo diferente al router, y ahí hacer las asignaciones de nombres de dominio. En mi caso el candidato obvio era el servidor instalado en la Raspberry. Vi que había dos paquetes que proporcionan un servidor DHCP, isc-dhcp-server y dnsmasq. También está bind, que es más completo, pero es más complejo de configurar, así que traté de evitar usarlo.

Primero intenté usar isc-dhcp-server y logré que distribuyera las IP en la LAN, pero no pude encontrar una manera de definir nombres de dominio para los dispositivos dentro de la LAN. Así que probé con dnsmasq. Así que aquí están los pasos que hay que hacer.

Mi servidor está protegido con un firewall provisto por ufw, con solo dos puertos abiertos, uno para ssh y otro para html. Así que tuve que abrir los puertos para los servidores DHCP y DNS:

sudo ufw allow bootps

sudo ufw allow 53/udp

sudo ufw allow 53/tcp

sudo ufw allow 67/udp

sudo ufw allow 67/tcp

El siguiente paso es dejar de gestionar la resolución de nombres de systemd, ya que utiliza el mismo puerto (53) que utilizará el nuevo servidor DHCP/DNS:

sudo systemctl disable systemd-resolved 

sudo systemctl stop systemd-resolved 

sudo unlink /etc/resolv.conf

El último paso elimina un enlace simbólico con el archivo resolv.conf generado por systemd. Por lo tanto, se debe crear un nuevo archivo:

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf

Aquí, el servidor de nombres que se utiliza es el servidor de nombres de Google, pero puede utilizar cualquier otro servidor de nombres que desee.

El último paso consiste en instalar y configurar el paquete dnsmasq:

sudo apt install dnsmasq

Para configurarlo, debe editar su archivo de configuración /etc/dnsmasq.conf. Estas primeras son las lineas que hay que descomentar y/o cambiar:

domain-name

bogus-priv

strict-order

strict-order

expand-hosts

Puede definir un nombre de dominio general en su LAN, de modo que identifique sus dispositivos con un subdominio:

local=/mylan.eu/

domain=mylan.eu

El enrutador de Internet le asigna a mi Raspberry 192.168.1.18, por lo que esta línea le indicará dónde tiene que escuchar el tráfico de red de Internet:

listen-address=::1,127.0.0.1,192.168.1.18

La siguiente línea define el rango de IPs que asignará el nuevo servidor DHCP, así como el tiempo de cesión de la IP asignada:

dhcp-range=192.168.1.150,192.168.1.250,255.255.255.0,12h

Estas IPs son diferentes a las que asigna el router de Internet (de 192.168.1.1 a 192.168.1.149). El servidor DCHP del enrutador de Internet podría deshabilitarse una vez que se esté ejecutando el nuevo servidor DHCP, pero en mi caso, si lo desactivo y reinicio la Raspberry, no se le asigna una IP y pierde la conexión a Internet. Tengo que investigar esto más a fondo porque puede ser posible solucionarlo. Así que mantengo ambos servidores DHCP en ejecución, y la siguiente línea le dice a la LAN que se debe dar prioridad al servidor DHCP de Raspberry:

dhcp-authoritative

Esto es todo para la configuración de dnsmasq. El último paso consiste en establecer las asignaciones de IP. Esto se hace en el archivo /etc/hosts. Tengo una instancia de nextcloud en Raspberry. Así que agregué la siguiente línea en este archivo:

192.168.1.18 mydomain.eu nextcloud.mydomain.eu

Y eso es. Después de iniciar el servicio dnsmasq en el servidor Raspberry, este servidor DHCP comienza a asignar direcciones IP para todos los dispositivos en mi LAN, y el dominio "mydomain.eu" funciona para identificar dispositivos dentro de la red de área local.

 

 

 

 

Funciona con Drupal

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer