Bloque de Red I - Dominios
Introducción
Bueno, como en la entrada anterior comenté, iba a dividir el enseñar mi HomeLab en diferentes posts para no hacerlo demasiado largo. Esta es la segunda publicación de todas las que se vienen. Podría haber puesto todo el bloque de red junto, pero esta parte tiene bastante contenido y se va a hacer largo.
Este es el bloque de red que hace referencia a toda la parte de Internet que no gestiono yo directamente.
Si esta es vuestra primera vez leyendo este blog, os invito a ver el resto de entradas aquí:
- Introducción a mi HomeLab - Puesta en marcha y primeros pasos
- Bloque de Red I - Dominios
- Bloque de Red II - Servicios
- Bloque de Gestión I - Administración
- Bloque de Gestión II - Monitorización
- Bloque de Servicios
- Retoques, copias de seguridad y extras
A continuación, os muestro el diagrama de red lógico solo con las partes que enseñaré en este bloque:
(nginx proxy manager)
npm.jrodriiguezg.lan"]:::proxyNode end %% Subgraph Raspberry Pi 4 subgraph RPi4 ["Raspberry Pi 4"] subgraph LAN_RPi ["Red Local LAN"] phns1["phns1.jrodriiguezg.lan
(PiHole + Unbound / DNS 1)"]:::rpiNode wireguard["Tailscale / Wireguard
(deprecado)
wireguard.jrodriiguezg.lan"]:::vpnNode end end %% Subgraph HP Elitedesk subgraph HP ["HP Elitedesk"] subgraph LAN_HP ["Red Local LAN"] phns2["phns2.jrodriiguezg.lan
(DNS 2)"]:::eliteNode end end %% Flujos y Conexiones tunnel --> npm npm -.-> phns1 npm -.-> phns2 npm -.-> wireguard %% Estilos de los subgrafos (Fondo Transparente) style WAN fill:none,stroke:#27272a,stroke-width:1px,color:#a1a1aa; style Proxy fill:none,stroke:#27272a,stroke-width:1px,color:#a1a1aa; style RPi4 fill:none,stroke:#f43f5e,stroke-width:1px,color:#fda4af; style HP fill:none,stroke:#3b82f6,stroke-width:1px,color:#93c5fd; style LAN_RPi fill:none,stroke:#2d2d30,stroke-width:1px; style LAN_HP fill:none,stroke:#2d2d30,stroke-width:1px;
Algo de teoría
Antes de empezar a hablar del bloque de red y, sobre todo, de esta primera parte (dominios), voy a comentar algo de teoría por si la persona que está leyendo esto no conoce los términos de los que hablo. Lo primero de todo es:
¿Qué es un dominio?
Es una dirección única y exclusiva que identifica un sitio web en Internet, permitiendo así a un usuario encontrarlo con facilidad. Es el nombre o dirección postal digital que evita tener que recordar las direcciones IP numéricas. Un ejemplo de esto es este mismo dominio: docs.jrodriiguezg.link.
Ahora la siguiente,
¿DNS?
El sistema de DNS (Domain Name System) es como la agenda telefónica de Internet. Su única función es almacenar el dominio y la dirección IP donde se encuentra. Así, cuando alguien escribe un dominio en el buscador, este sistema le redirige de manera automática al servidor de alojamiento.
Ahora que sabemos lo que es un dominio y el DNS, vamos a ver el proveedor que he elegido: Cloudflare.
¿Y por qué Cloudflare? Después de ver varias opciones (Ionos, Hostinger, etc.), Cloudflare era el que más me ofrecía por menos precio. El plan base tiene bastantes funciones interesantes, es rápido y seguro, y el panel de analíticas es una maravilla.
Ahora voy a explicar los dominios que tengo: tengo dos públicos y uno privado, que luego se ramifican en subdominios.
Los Dominios
A nivel interno tengo un dominio con terminación .lan, que luego resuelve a 12 subdominios para cada servicio desplegado, los cuales podemos ver en el siguiente diagrama:
(Nginx Proxy Manager)"]:::proxyNode CatProxy --> npm %% Subdominios en Raspberry Pi 4 hmr["hmr.jrodriiguezg.lan
(Homarr)"]:::rpiNode phns1["phns1.jrodriiguezg.lan
(DNS 1 / PiHole)"]:::rpiNode uptime["uptime-kuma.jrodriiguezg.lan
(Uptime Kuma)"]:::rpiNode gitea["gitea.jrodriiguezg.lan
(Gitea Server)"]:::rpiNode wg["wireguard.jrodriiguezg.lan
(VPN)"]:::rpiNode portainer1["portainer.jrodriiguezg.lan
(Portainer)"]:::rpiNode CatRPi4 --> hmr CatRPi4 --> phns1 CatRPi4 --> uptime CatRPi4 --> gitea CatRPi4 --> wg CatRPi4 --> portainer1 %% Subdominios en HP Elitedesk jelly["jellyfin.jrodriiguezg.lan
(Jellyfin Media)"]:::eliteNode navi["navidrome.jrodriiguezg.lan
(Navidrome)"]:::eliteNode qbtt["qbtt.jrodriiguezg.lan
(qBittorrent)"]:::eliteNode phns2["phns2.jrodriiguezg.lan
(DNS 2)"]:::eliteNode zabbix["zabbix.jrodriiguezg.lan
(Zabbix)"]:::eliteNode CatHP --> jelly CatHP --> navi CatHP --> qbtt CatHP --> phns2 CatHP --> zabbix %% Estilos de los Subgrafos de Fondo (Fondo Transparente) style Root font-size:16px; style CatProxy fill:none,stroke:#27272a,stroke-width:1px; style CatRPi4 fill:none,stroke:#f43f5e,stroke-width:1px; style CatHP fill:none,stroke:#3b82f6,stroke-width:1px;
Estos no son accesibles desde Internet
A nivel externo, es decir, de cara al público, tengo dos dominios, ambos comprados en Cloudflare. Estos son jrodriiguezg.link y lemoe.link, de los cuales cuelgan varios subdominios, como vemos ahora:
Como creo que os habéis dado cuenta porque lo he mencionado, yo uso Cloudflare para la gestión de la parte expuesta a Internet, así como de los dominios. Por ello, y a modo de que veáis un poco la consola de Cloudflare (dash.cloudflare.com), voy a enseñar algunas de las configuraciones más importantes y partes más destacadas de la consola.
Paseíto por el dash
Como he comentado hace medio párrafo, ahora voy a enseñar un poco la consola de Cloudflare, algunas de las configuraciones que tiene y que he aplicado (solo algunas, ¡esto tiene mil cosas!), así como partes interesantes de la misma.
Configuraciones básicas y partes interesantes
Lo primero así que voy a remarcar son los buckets, que son instancias de almacenamiento que Cloudflare da de forma gratuita (hasta 10 GB gratis). Las imágenes que veis aquí se almacenan ahí.
Otra cosa interesante es el poder bloquear ciertos crawlers. Estos son los bots que usan las IA y algunos buscadores para escanear las páginas web y ver su contenido; yo los tengo bloqueados (solo algunos).
La siguiente es la pantalla más básica, el dashboard de tráfico web, que muestra en tiempo real el tráfico del dominio o de ambos (depende de la configuración).
Desde los ajustes de seguridad, se pueden bloquear ciertas cosas o activar medidas de seguridad. Algunas son el laberinto de IA o el bloqueo de ataques DDoS.
Cloudflare no ofrece buzones de correo (al menos no los he encontrado); lo que sí ofrece son direcciones con redirección a correos usando el dominio.
Y, por último, los workers y pages. Esto es almacenamiento de sitios web estáticos; aquí, por ejemplo, se almacena este mismo blog.
El paseo ha sido cortito ya que ver todas las opciones del dash haría este post muy largo. Yo, si estáis buscando un dominio, os animo a usar Cloudflare ya que va muy bien.
Esto no lo he dicho, pero hay dos dominios a nivel externo que sirven el contenido desde mi infraestructura local, haciendo uso de un servicio oficial de Cloudflare llamado cloudflared, el cual vamos a ver ahora.
Conexión con la infraestructura local
Como he mencionado antes, tengo dos dominios que se sirven desde la infraestructura local (no voy a decir cuáles son, pero están ahí). Para servir estos dominios, he usado un servicio de Cloudflare llamado cloudflared que crea un túnel entre mi infraestructura y la de Cloudflare.
La parte del dashboard donde encontramos esto se llama Cloudflare Zero Trust o Cloudflare One.
En este caso, nos vamos a los conectores donde tenemos el conector creado; desde aquí se gestionan los dominios que queremos exponer.
Gracias a este servicio, no necesito abrir puertos en el router ni exponer mi infraestructura. Ahora explicaré cómo se instala, lo cual es bastante simple:
Para instalar el túnel, nos vamos a la consola, a la parte de conectores, y pulsamos en Create a tunnel.
Después, nos pedirá el tipo de túnel que queremos usar; por ahora, solo he probado cloudflared.
Le asignamos un nombre.
Y nos saldrá una lista de opciones para desplegar; yo uso Docker para todo.
Esto nos devolverá un comando con un token; esto es solo copiar y pegar en la terminal y se configura solo. Pasados unos segundos, nos aparecerá en la consola de conectores.
Final
Esta entrada quizás ha sido algo corta. La siguiente, os aseguro que es algo más larga, pero es mejor ofrecer trocitos pequeños y con información de calidad que un texto gigante que nadie se va a leer. Por ello, hasta aquí hemos visto todo lo que conecta mi infraestructura de cara al exterior. Ahora hacemos un punto y aparte hasta el siguiente post, en el cual empezaremos a ver la infraestructura a nivel local.
Comentarios
Cargando comentarios...