yunohost: Para que todo funcione en la red de casa…

Hablando con la gente, me he dado cuenta que lo que estoy haciendo es bastante avanzado o especializado y que está fuera de lo habitual de un usuario común.
Así que estoy dando por descontado muchas cosas que no son nada obvias.
Una de esta es lo de hacer que in nuestra red de casa (wifi y cable) nuestros sitios web funcionen exactamente como funcionan desde internet con el móvil o desde 5000km de distancia por fibra o 4/5G

Escenario: Hemos instalado Yunohost, en la IP 192.168.0.10, configurado el router con DMZ hacia esta misma IP, configurado el DNS a la perfección para que apunte a nuestra IP pública (por ejemplo 216.58.209.78) e instalado wordpress para nuestro blog (o cualquier otra App).
Desde fuera (por 4G por ejemplo) todo funciona a la mil maravillas… pero cuando nos conectamos a la wifi de casa, no podemos contactar con nuestro nuevo y flamante blog.

¿Que está pasando?
si no tienes mucha idea de como funciona internet, los DNS, NAT, etc, te va a ser complicado entenderlo… brevemente tienes que saber que tu router tiene una dirección IP pública (212.123.123.10 por ejemplo) y a través de esta, tu puedes navegas, pero es una puerta cerrada. El resto del mundo no puede ver los ordenadores que hay detrás de esta puerta.
Claramente activando el DMZ hacia tu servidor, si que desde internet pueden verlo, pero es como una puerta secundario que solo puede llevar a este ordenador en concreto y ninguno más.
Entonces.. Vamos hacer un pequeño experimento:
Conecta tu portátil a internet por 4G u otra red, de forma que sea independiente de la red de tu casa y te tu wifi, por ejemplo por 4G desde el móvil
Abre un terminal y escribe ping www.preparandonos.es (tu tienes que poner tu dominio no el mío)

Verás que te responde con algo como
$ ping www.preparandonos.es
PING www.preparandonos.es (216.58.209.78) 56(84) bytes of data.
64 bytes from mad07s22-in-f14.1e100.net (216.58.209.78): icmp_seq=1 ttl=110 time=22.0 ms
64 bytes from mad07s22-in-f14.1e100.net (216.58.209.78): icmp_seq=2 ttl=110 time=17.2 ms
64 bytes from mad07s22-in-f14.1e100.net (216.58.209.78): icmp_seq=3 ttl=110 time=21.0 ms
64 bytes from mad07s22-in-f14.1e100.net (216.58.209.78): icmp_seq=4 ttl=110 time=18.8 ms
^C

esto significa que la IP del router de nuestra linea de casa es el 216.58.209.78 y el router desvía todo el trafico en entrada hacia el servidor de yunohost que supongamos sea 192.168.0.10

Ahora vuelve a conectarte a tu red de casa y dale otra vez al terminal el ping a tu blog.

Verás que te dará la misma IP de antes (216.58.209.78) pero si intenta conectarte con el navegador, este te dirá que no puede contactar.

El motivo es este: Desde fuera de tu red la IP de tu blog es 216.58.209.78, pero cuando estás en casa, la IP cambia a 192.168.0.10.
Y para esto no consigues conectarte.

Soluciones:

Hay 2… 3 en realidad
Las 2 primeras que ofrece el equipo de yunohost son estas

https://yunohost.org/es/administer/tutorials/domains/dns_local_network

que pongo aquí también para comodidad y para ponerla a salvo

«
Local network access to your server
After completing your server installation, it is possible that your domain will not be accessible through the local network. This is an issue known as hairpinning – a feature that is not well supported by some internet routers.

To solve this issue you can:

configure your router's DNS
or alternatively - your /etc/hosts files on your clients workstation

Find the local IP address of your server
First you need to find out the local IP of your server

either using the tricks lister here
or if in the webadmin, in the Diagnosis section, under Internet Connectivity, IPv4, click on 'Details' and you should find an entry for 'Local IP'
or using the command line on the server : hostname -I

Configurar el DNS de la caja Internet o del router

Vas a crear una redirección que estará activa en toda tu red local. El objetivo es crear una redirección DNS hacia el IP de tu servidor en tu caja Internet. Hay que acceder a la interfaz de configuración de tu caja y a los parámetros DNS, y luego crear una redirección local (por ejemplo, yunohost.local puede redigir hacia 192.168.1.21).
Configurar el archivo hosts del ordenador cliente

Sólo deberías modificar el archivo hosts si no puedes modificar el DNS de tu caja Internet / router, porque el archivo hosts únicamente afectará el ordenador en el cual el archivo esté modificado.

En Windows, encontrarás el archivo hosts aquí : %SystemRoot%\system32\drivers\etc\

    Es preciso visualizar los archivos y sistemas escondidos para ver el archivo hosts.

En sistemas UNIX (GNU/Linux, macOS), lo encontrarás aquí : /etc/hosts

    Necesitarás derechos root para modificar el archivo.

Simplemente añade al final del archivo hosts una linea conteniendo la dirección IP privada del servidor y tu nombre de dominio

192.168.1.62 domain.tld

«

La primera opción se puede usar solo si tu router tiene soporte para DNS interno y no son muchos todavía, pero si lo tiene, úsalo! es lo más fácil y funciona perfectamente

La segunda opción tiene la limitación que si tu ordenador de casa te lo lleva fuera de casa, el intentará conectarse a tu blog, a las IP interna de tu casa (192.168.0.10) por mucho que el servidor DNS le diga que la IP es 216.58.209.78.

En mi opinión la mejor si está disponible es la primera opción y la segunda es para pruebas o para ordenadores de mesa. Para portatiles que por su naturaleza pueden conectarse a varias redes, es un incordio

La tercera opción que propongo yo, mata 3 pájaros de un tiro.
a) Cualquier sistema que tengamos en casa necesita de una copia de seguridad… o sea que es más importante la copia que los proprios datos que tenemos en nuestro portátil o móviles, y para esto usamos el sistema PiHole + OpenMediaVault.

b) Sobre PiHole vamos a instalar OpenMediaVault, que es respectivamente un mini-DNS que filtra todos los anuncios. Así no nos van a molestar y la navegación es más rápida, mientras que OpenMediaVault es un servidor de archivos donde podrás guardar todas tus copias de respaldo de todos tus dispositivos

c) el más importante: PiHole tiene en su configuración la posibilidad de añadir muchos dominios internos a la red de casa…(Perfecto!!)

Ahora, después este largo preámbulo empieza el tutorial de verdad.

Material necesario:

Un raspberryPi (cualquiera) u otro clon como por ejemplo el OrangePi, el BananaPi y muchos otros elencados en https://armbian.org.
Claramente se puede usar cualquier ordenador, e incluso una maquina virtual, pero esto significa un poco más de gasto energético. Así que todo depende de lo que tengas a la mano y cuanta energía pueden entregar tus baterías y placas solares.

Al ordenador le conectamos por USB/SATA, uno o más discos duro externos que sean del tipo de 3.5″.
Si vas a usar discos de 2.5″ que el adaptador sea con 2 salidas USB. El raspberryPi no tiene capacidad para alimentar el disco duro externo por usb, así que tendrás que usar 2 tomas usb o usar una fuente de alimentación externa al disco, como por ejemplo un cargador de móviles.
Pero lo mejor es usar discos de 3.5″ porqué ya vienen con su fuente de alimentación y tienen más capacidad.

Conecta también el cable ethernet. (no vamos a usar wifi para estas cosas)

Instalamos la última imagen para servidor de debian11-bullseyse (sin escritorio, que no sirve de nadad y está en conflicto con openMediaVault) en mi caso he usado el programa IMAGER y seleccionado la imagen RaspberryPiOS Lite 32bit que está basada en Debian 11.

Una vez instalado y configurado todo, le asignamos una IP fija. Se puede hacer tanto desde el router (casi todos lo tienen) o desde el raspberryPi.

Mira este articulo

En mi caso ha sido la IP 192.168.0.101

ahora un poco de comodidad y nos tomamos la seguridad de poder volver a limpiar el sistema en caso algo salga mal

Ahora actualizamos la base de datos, instalamos eventuales actualizaciones, añadimos MC. DebFoster y guardamos una lista de los paquetes instalados.. .todo en una única linea

apt update && apt upgrade -y && apt install mc debfoster curl && debfoster -q

mc es el Midnight Commander y es un gestore de fichero y editor de textos. El mejor en mi opinión para consola
…y debfoster toma nota de lo que hay instalado al principio y puede volver a dejar el sistema limpio desinstalando todo lo que no estaba al principio.
Va a crear una lista de paquetes y ya puedes olvidarte de el.
Pero si por algún motivo quieres volver atrás y dejar el sistema limpio como ahora…

debfoster -f

y el va a limpiar todo, dejándote el sistema impecable.

MC en cambio aconsejo de aprenderlo a usasar con una pequeña configuración inicial:

pulsa F9 y con las flechas vete a opciones/Paneles y allí activa «Navegación estilo Lynx». pulsa la barra del espacio, para activar la opción dale a Enter para salir
otra vez F9 y vete con las flechas en opciones/aspecto. Allí selecciona el tema que más te gusta. (yo uso el Gotar)

Sal de MC con F10 (o Esc-0) y listo.

Primero hay que instalar Pihole

curl -sSL https://install.pi-hole.net | bash

Con esto comando se lanza la instalación y te hará algunas preguntas.
Acepta lo que viene por defecto a parte el mensaje donde te avisa que la IP del equipo tiene que ser fija. A esto tiene que confirmar que la IP es fija y luego seguir adelante.

En pocos minutos bajará todos los paquetes necesarios y la instalación de PiHole estará terminada

Al final en un mensaje del terminal te dará la contraseña auto generada.
Personalmente no me gustan estas contraseñan, así que la voy a cambiar con algo más simple de recordar y de doy este comando:

pihole -a -p MiContraseñaSegreta

Ahora desde otro ordenador abrimos con el navegador esta IP 192.168.0.101 y se va abrir PiHole. (a bajo hay el enlace para ir al panel de control.
Allí vamos a poner la contraseña secreta y podremos poner en el apartado de Local DNS los subdominios con la IP internas, así podremos ver nuestro blog también desde la wifi de casa.

Para que funcione el bloqueo de los anuncios que lo del las IP internas hay que ir al panel de configuración de nuestro router, Avazado/RED/LAN (o algo parecido) y en el apartado del DNS le ponemos la IP del server de PiHole, guardamos y para aplicar la nueva configuración también a nuestro ordenados apagamos la interfaz de red y volvemos a encenderla. De esta forma el servidor DHCP del router nos asignará la nueva IP junto con la IP del servidor DNS.

A este punto prueba a navegar en algún periódico digital que están siempre plagados de anuncios, y verás que desaparecen al 99%.

Entra en la administración de PiHole y añade las entradas de tu dominio interno. En mi caso tengo varios servidores con varias IP. Pero en el casi más simple hay 2 servidores: uno que es el Pihole+OpenMEdiaVault (192.168.0.101) y el otro es Yunohost (192.168.0.103) donde tego varias app, entre ellas mi blog a la dirección de www.preparandonos.es

Ahora vamos a instalar openmediavault por fin

wget -O - https://raw.githubusercontent.com/OpenMediaVault-Plugin-Developers/installScript/master/install | sudo bash

Esto puede tardar bastante rato…. es tiempo de un café/té/bocadillo/brioche… o hacer 100 abdominales… lo que prefieras

Cuando termina se reinicia el solo (no estoy seguro en i386 y amd64), de todas formas en este momento se están peleando OpenMediaVault y pihole por el control del puerto 80.

Vamos a resolver este conflicto cambiando el puerto de OpenMediaVaul a desde el 80 a por ejemplo el 8080, pero puede ser cualquier otro por encima del 1.024 y por de bajo del 65. 536

Para esto lanzamos desde el terminal al programa omv-firstaid

# omv-firstaid

Esto es el panel de recuperación de OpenMediaVault (OMV)

Selecciona la opción 2 (no toques nada del resto) y cambia el puerto en por ejemplo 8080

y con esto ya ha concluido.
Creo que ahora lo ideal sea reiniciar el ordenador, aunque se podría volver a reinciar los servicios, peor como que aún no está en producción no merece la pena escribir mucho en el terminal

reboot

ahora si vamos al 192.168.0.101 encontramos a pihole como antes

Pero si vamos a la misma IP con el puerto 8080 (192.168.0.101:8080) vamos a encontrar OMV

Y con esto doy concluido este articulo.

Comentarios cerrados.