Zero Trust en mi homelab: cómo lo implementé sin gastar un euro

Sun Tzu escribió que la victoria real no es ganar la batalla — es no tener que librarla.
En seguridad de red, eso se llama Zero Trust. No esperar a que el atacante entre para pararlo. Diseñar la red para que, si entra, no encuentre nada que merezca la pena atacar.
Y no necesitas un presupuesto de Fortinet para aplicarlo.
Índice
- El problema que Zero Trust resuelve
- OPNsense — micro-segmentación por VLANs
- Cloudflare Tunnel + Access — sin abrir puertos
- ZeroTier con OPNsense — overlay privado
- Tailscale con OPNsense — la opción más fácil
- Comparativa: CF Tunnel vs ZeroTier vs Tailscale
- El stack completo
- Lo que aprendes montándolo tú
- Zero Trust no es un producto
El problema que Zero Trust resuelve
La mayoría de homelabs — y más redes empresariales de las que debería — tienen la misma arquitectura: un firewall en el perímetro y una red plana detrás.
Si alguien entra, tiene acceso a todo. El servidor de backups, el NAS, las cámaras, el router interno. Todo en el mismo segmento, sin barreras internas.
El modelo tradicional confía en que el perímetro aguante. Zero Trust no confía en nada: ni en el perímetro, ni en la red interna, ni en los dispositivos que ya están dentro. Cada acceso se verifica explícitamente. Cada segmento es una fortaleza independiente.
La buena noticia: se puede implementar con herramientas 100% gratuitas. Esto es exactamente lo que tengo montado en mi homelab.
OPNsense — la base de la segmentación interna

Todo empieza aquí. OPNsense es el firewall que separa los segmentos de red — lo que en Zero Trust se llama micro-segmentación.
La idea es sencilla: en lugar de una red plana, creas VLANs por función. Servidores en una VLAN. Workstations en otra. IoT completamente aislado. Una DMZ para lo que tiene que ser accesible desde fuera.
Las reglas entre zonas son explícitas. Si no hay una regla que permita el tráfico entre dos segmentos, ese tráfico no pasa. El tráfico entre la VLAN de IoT y la de servidores está bloqueado por defecto — aunque los dispositivos estén en el mismo switch físico.
¿Por qué importa? Porque cuando un dispositivo IoT está comprometido (y tarde o temprano alguno lo estará), el atacante está atrapado en su segmento. No puede moverse lateralmente hacia los servidores ni hacia el NAS. La brecha está contenida.
Cómo lo monté
Paso 1 — Crear las VLANs
En Interfaces → Other Types → VLAN, añade una entrada por cada VLAN. Los campos que necesitas para cada una:
| VLAN ID | Descripción | Interfaz padre | Red |
|---|---|---|---|
| 10 | Servidores | igb0 (o tu interfaz LAN) | 192.168.10.0/24 |
| 20 | Workstations | igb0 | 192.168.20.0/24 |
| 30 | WiFi IoT | igb0 | 192.168.30.0/24 |
| 31 | WiFi Interna | igb0 | 192.168.31.0/24 |
| 32 | WiFi Invitados | igb0 | 192.168.32.0/24 |
| 40 | DMZ Externa | igb0 | 192.168.40.0/24 |
| 50 | DMZ Interna | igb0 | 192.168.50.0/24 |
Paso 2 — Asignar y activar cada interfaz
En Interfaces → Assignments, asigna cada VLAN recién creada como una interfaz nueva. Luego entra en cada una (Interfaces → VLAN10, etc.) y configura:
- Activar: checkbox Enable
- Descripción: nombre legible (Servidores, Workstations…)
- IPv4: Static IPv4, dirección gateway de esa VLAN (ej:
192.168.10.1/24)
Paso 3 — DHCP en cada VLAN
En Services → DHCPv4, selecciona la interfaz de cada VLAN y configura el rango. Ejemplo para VLAN 10:
Range: 192.168.10.100 — 192.168.10.200
Gateway: 192.168.10.1
DNS: 192.168.10.1 (o el que prefieras)
Paso 4 — Reglas de firewall entre zonas
En Firewall → Rules hay una pestaña por cada interfaz. La política implícita es denegar todo — solo pasa lo que escribas explícitamente.
Reglas mínimas recomendadas:
# VLAN 10 Servidores — solo tráfico de salida establecido
VLAN10 → any: pass (TCP/UDP, established)
# VLAN 20 Workstations — acceso a servidores y a internet
VLAN20 → VLAN10: pass
VLAN20 → WAN: pass
# VLAN 30 WiFi IoT — solo internet, nada interno
VLAN30 → VLAN10: block
VLAN30 → VLAN20: block
VLAN30 → WAN: pass
# VLAN 31 WiFi Interna — igual que workstations
VLAN31 → VLAN10: pass
VLAN31 → WAN: pass
# VLAN 32 WiFi Invitados — solo internet
VLAN32 → !VLAN32: block (bloquea cualquier destino que no sea WAN)
VLAN32 → WAN: pass
# VLAN 40 DMZ Externa — acceso desde internet, no hacia dentro
WAN → VLAN40: pass (solo puertos publicados)
VLAN40 → VLAN10: block
VLAN40 → VLAN20: block
# VLAN 50 DMZ Interna — acceso desde servidores
VLAN10 → VLAN50: pass
VLAN50 → WAN: pass
Una regla importante que se olvida siempre: bloquear el acceso desde cualquier VLAN a la IP de gestión de OPNsense (192.168.10.1 o la que uses) salvo desde la VLAN de administración.
Paso 5 — Configurar el switch
El puerto que va a OPNsense debe ser trunk (tagged en todas las VLANs). Los puertos de dispositivos finales van como access (untagged en su VLAN correspondiente).
En switches Cisco/HP esto es:
# Puerto trunk hacia OPNsense
interface GigabitEthernet0/1
switchport mode trunk
switchport trunk allowed vlan 10,20,30,31,32,40,50
# Puerto access para un servidor en VLAN 10
interface GigabitEthernet0/2
switchport mode access
switchport access vlan 10
Para puntos de acceso WiFi que soporten múltiples SSIDs, configura el puerto también como trunk y que el AP etiquete cada SSID con su VLAN (30, 31, 32).
El resultado es que cada dispositivo vive en su propio segmento y solo puede hablar con lo que tú decidas. Nada de redes planas.
Cloudflare Tunnel + Access — acceso remoto sin abrir puertos

El acceso remoto clásico abre puertos en el router. VPN en el 1194, SSH en el 22, la interfaz del NAS en el 8443. Cada puerto abierto es superficie de ataque visible desde internet.
Cloudflare Tunnel invierte esa lógica. En lugar de abrir un puerto para que entre el tráfico, tu servidor establece una conexión saliente hacia Cloudflare. Es Cloudflare quien recibe las peticiones externas y las reenvía por ese túnel hacia tu servicio. El router no expone nada. Tu IP real nunca aparece.
Cloudflare Access añade la capa de identidad encima. Antes de llegar al servicio, el usuario tiene que autenticarse — con Google, GitHub, correo con OTP, o cualquier proveedor que configures. Sin autenticación, la petición no llega al túnel.
Todo esto es gratuito hasta 50 usuarios, sin límite de ancho de banda.
Cómo lo monté
Toda la configuración se hace desde la GUI de OPNsense. No hay ficheros de configuración ni comandos — el plugin os-cloudflared gestiona el daemon por ti.
Paso 1 — Instalar el plugin
En OPNsense: System → Firmware → Plugins, buscar os-cloudflared e instalar. Tras la instalación aparece un nuevo menú en Services → Cloudflare Tunnel.
Paso 2 — Crear el túnel en el panel de Cloudflare
En Cloudflare Zero Trust (cuenta gratuita):
Networks → Tunnels → Create a tunnel- Tipo: Cloudflared
- Nombre: el que quieras (ej:
homelab) - En la pantalla siguiente aparece el token del túnel — cópialo, lo necesitas en el paso 3
Paso 3 — Conectar OPNsense al túnel
En OPNsense: Services → Cloudflare Tunnel → General
- Enable: activado
- Token: pega el token del paso anterior
- Guardar y aplicar
OPNsense arranca el daemon cloudflared automáticamente. En el panel de Cloudflare el túnel pasará a estado Healthy en unos segundos.
Paso 4 — Configurar los servicios expuestos
En OPNsense: Services → Cloudflare Tunnel → Ingress, añadir una regla por cada servicio:
| Hostname público | Servicio interno |
|---|---|
proxmox.tudominio.com | https://192.168.10.1:8006 |
nas.tudominio.com | http://192.168.10.4:80 |
monitoring.tudominio.com | http://192.168.50.10:3000 |
Para servicios con certificado autofirmado (como Proxmox), activar la opción No TLS Verify en la regla correspondiente.
Paso 5 — Añadir autenticación con CF Access
En el panel de Cloudflare Zero Trust: Access → Applications → Add an application
- Tipo: Self-hosted
- Nombre y dominio: el mismo que configuraste en el ingress
- Política: añadir una regla que exija login con tu proveedor (Google, GitHub, o email con OTP)
A partir de ese momento, cualquiera que acceda a proxmox.tudominio.com verá primero la pantalla de login de Cloudflare. Si no se autentica, la petición nunca llega al túnel.
ZeroTier con OPNsense — overlay privado entre redes

ZeroTier crea una red privada virtual que funciona como una LAN, aunque los dispositivos estén distribuidos en redes distintas y separadas por NAT. Cada dispositivo con el cliente instalado se une a la red con una IP asignada y puede comunicarse con el resto como si estuviera en el mismo segmento físico.
La integración con OPNsense convierte el firewall en un router para toda la subred interna. Cualquier dispositivo de la red ZeroTier puede acceder a las VLANs del homelab a través de OPNsense, con las mismas reglas de firewall aplicadas. Gratuito hasta 25 nodos.
Cómo lo monté
Toda la configuración se hace desde la GUI de OPNsense más el panel web de ZeroTier. Sin comandos, sin ficheros de configuración.
Paso 1 — Crear la red en ZeroTier
En my.zerotier.com: crear una cuenta gratuita, ir a Networks → Create Network. ZeroTier genera un Network ID de 16 caracteres — anótalo, es lo único que necesitas para unir nodos.
En la configuración de la red, ajusta:
- Access Control: Private (los nodos requieren autorización manual)
- IPv4 Auto-Assign: activa el rango que quieras (ej:
10.147.17.0/24)
Paso 2 — Instalar el plugin en OPNsense
En OPNsense: System → Firmware → Plugins, buscar os-zerotier e instalar. Tras la instalación aparece el menú VPN → ZeroTier.
Paso 3 — Conectar OPNsense a la red
En OPNsense: VPN → ZeroTier → General
- Enable ZeroTier: activado
- Guardar. OPNsense genera automáticamente su identidad ZeroTier (un Node ID).
En VPN → ZeroTier → Networks, añadir la red:
- Network ID: pega el ID del paso 1
- Guardar y aplicar
Paso 4 — Autorizar el nodo en el panel de ZeroTier
En my.zerotier.com, dentro de la red, aparecerá OPNsense como nodo pendiente. Activar el checkbox Auth y asignarle una IP dentro del rango de la red (ej: 10.147.17.1).
Paso 5 — Configurar OPNsense como subnet router
Para que los clientes ZeroTier puedan llegar a las VLANs internas, OPNsense tiene que anunciar esas rutas. Dos pasos:
En OPNsense: VPN → ZeroTier → Networks → editar la red → activar Allow Managed y añadir las rutas locales en el campo Routes:
192.168.10.0/24
192.168.20.0/24
192.168.30.0/24
192.168.40.0/24
192.168.50.0/24
En el panel de ZeroTier: dentro de la red, sección Routes, añadir las mismas subredes con el gateway apuntando a la IP de OPNsense en la red ZeroTier:
192.168.10.0/24 via 10.147.17.1
192.168.20.0/24 via 10.147.17.1
Paso 6 — Reglas de firewall para la interfaz ZeroTier
En OPNsense se crea automáticamente una interfaz ZeroTier al unirse a la red. En Firewall → Rules → ZeroTier, añadir las reglas que necesites:
# Permitir acceso a servidores desde clientes ZT autorizados
ZeroTier → VLAN10: pass (TCP cualquier puerto)
ZeroTier → VLAN20: pass (TCP :22 solo — SSH)
# Bloquear acceso a la interfaz de gestión de OPNsense
ZeroTier → 192.168.10.1: block
Desde ese momento, cualquier dispositivo con el cliente ZeroTier instalado y autorizado en la red puede acceder a los servicios internos del homelab como si estuviera en la misma LAN.
Tailscale con OPNsense — la opción más fácil

Tailscale resuelve el mismo problema que ZeroTier pero con una configuración mucho más simple. Está construido sobre WireGuard — el protocolo VPN más rápido y moderno que existe. La diferencia con WireGuard puro es que Tailscale gestiona el control plane por ti: no hay que intercambiar claves manualmente ni mantener un servidor de coordinación propio.
OPNsense tiene soporte nativo con el paquete os-tailscale. Una vez configurado como subnet router, los dispositivos de la red Tailscale pueden acceder a las subredes internas sin instalar el cliente en cada máquina. Gratuito para uso personal hasta 100 dispositivos.
Cómo lo monté
Toda la configuración se hace desde la GUI de OPNsense más el panel web de Tailscale. El proceso es más directo que ZeroTier porque Tailscale gestiona el control plane automáticamente.
Paso 1 — Crear la cuenta en Tailscale
En tailscale.com: crear una cuenta gratuita con Google, GitHub o Microsoft. El plan gratuito incluye hasta 100 dispositivos y todas las funciones que necesitas para un homelab.
Paso 2 — Instalar el plugin en OPNsense
En OPNsense: System → Firmware → Plugins, buscar os-tailscale e instalar. Tras la instalación aparece el menú VPN → Tailscale.
Paso 3 — Autenticar OPNsense en la red Tailscale
En OPNsense: VPN → Tailscale → Settings
- Enable: activado
- Guardar. OPNsense genera un enlace de autenticación — abrirlo en el navegador e iniciar sesión con la cuenta de Tailscale.
OPNsense aparece en el panel de Tailscale como un nodo más de la red. A diferencia de ZeroTier, no hace falta autorizar manualmente — la autenticación OAuth se encarga de todo.
Paso 4 — Configurar OPNsense como subnet router
En OPNsense: VPN → Tailscale → Settings, en el campo Advertised Routes, añadir las subredes internas que quieres exponer:
192.168.10.0/24
192.168.20.0/24
192.168.30.0/24
192.168.40.0/24
192.168.50.0/24
Paso 5 — Aprobar las rutas en el panel de Tailscale
En el panel de Tailscale, en la sección Machines, seleccionar el nodo de OPNsense → Edit route settings → activar cada subred anunciada.
Desde este momento, cualquier dispositivo con Tailscale instalado y autenticado puede acceder a las subredes internas del homelab a través de OPNsense.
Paso 6 — Reglas de firewall para la interfaz Tailscale
En OPNsense se crea automáticamente la interfaz Tailscale. En Firewall → Rules → Tailscale, añadir las reglas que necesites:
# Acceso a servidores desde la red Tailscale
Tailscale → VLAN10: pass
Tailscale → VLAN20: pass (TCP :22 solo)
# Bloquear acceso a la gestión de OPNsense
Tailscale → 192.168.10.1: block
Paso 7 — (Opcional) Exit node
Si quieres que todo el tráfico de internet de tus dispositivos salga por OPNsense cuando estás fuera de casa, activa también la opción Exit node en VPN → Tailscale → Settings. Útil para usar la conexión de casa cuando estás en redes WiFi públicas.
La diferencia con ZeroTier es que Tailscale es más fácil de arrancar pero el control plane vive en los servidores de Tailscale. Si quieres independencia total, existe Headscale — una implementación open source del servidor de coordinación de Tailscale que puedes autoalojar.
Cloudflare Tunnel vs Access vs ZeroTier vs Tailscale
No son cuatro herramientas que compitan entre sí — son herramientas que resuelven problemas distintos y se complementan. Esta tabla muestra cuándo usar cada una:
| CF Tunnel | CF Access | ZeroTier | Tailscale | |
|---|---|---|---|---|
| Para qué | Exponer un servicio interno a internet | Autenticación delante del servicio | Red overlay privada entre dispositivos | Red overlay basada en WireGuard |
| Abre puertos en el router | No | No | No | No |
| Cliente en el dispositivo remoto | No — solo navegador | No — solo navegador | Sí — cliente ZeroTier | Sí — cliente Tailscale |
| Acceso a toda la red interna | No — servicio a servicio | No | Sí — vía subnet router en OPNsense | Sí — vía subnet router en OPNsense |
| Control plane | Cloudflare | Cloudflare | ZeroTier Inc. (o autoalojado con ZT Controller) | Tailscale Inc. (o autoalojado con Headscale) |
| Integración con OPNsense | Plugin os-cloudflared (GUI) | Panel web Cloudflare | Plugin os-zerotier (GUI) | Plugin os-tailscale (GUI) |
| Coste | Gratis | Gratis hasta 50 usuarios | Gratis hasta 25 nodos | Gratis hasta 100 dispositivos |
| Complejidad | Baja | Baja | Media | Baja |
| Ideal para | Exponer una app web con subdominio propio | Añadir login a una app ya expuesta con Tunnel | Acceso completo a la red desde cualquier dispositivo | Acceso remoto rápido de montar, sin complicaciones |
Cloudflare Tunnel y Access siempre van juntos: Tunnel crea el canal, Access pone la autenticación delante. ZeroTier y Tailscale son alternativas para el mismo caso de uso — acceso remoto a toda la red — y la elección entre ellas es cuestión de cuánto control quieres sobre la configuración.
El stack completo: Zero Trust gratis para tu homelab
| Herramienta | Qué resuelve | Coste |
|---|---|---|
| OPNsense | Segmentación interna, micro-segmentación por VLANs | Gratis |
| Cloudflare Tunnel | Exponer servicios sin abrir puertos en el router | Gratis |
| Cloudflare Access | Autenticación de identidad antes de llegar al servicio | Gratis (hasta 50 usuarios) |
| ZeroTier | Overlay privado, acceso remoto a subredes internas | Gratis (hasta 25 nodos) |
| Tailscale | Overlay privado basado en WireGuard, más fácil de configurar | Gratis (hasta 100 dispositivos) |
No hacen falta todas a la vez. El punto de partida es OPNsense con VLANs — sin eso, el resto es maquillaje sobre una red plana.
Para el acceso remoto día a día uso ZeroTier: llevo años con él en el homelab y es estable. Para exponer servicios concretos con autenticación delante uso Cloudflare Tunnel + Access — es la opción más limpia cuando quieres que algo sea accesible sin necesidad de instalar nada en el cliente. Tailscale lo tengo como alternativa a recomendar cuando alguien empieza desde cero: la curva de entrada es más baja.
Zero Trust en producción: lo que aprendes montándolo tú
Después de tener esto funcionando en producción, las conclusiones que no aparecen en ninguna guía:
OPNsense con VLANs es el cambio que más se nota. Antes de segmentar, un dispositivo comprometido en la red de IoT podía llegar a cualquier parte. Después de segmentar, ese escenario está contenido. No es un cambio que veas en el día a día, pero cuando algo falla o se comporta raro, la segmentación hace que el problema sea más fácil de aislar.
Cloudflare Tunnel elimina el miedo a exponer servicios. Antes de usarlo, abrir algo a internet implicaba revisar el firewall, gestionar certificados, actualizar religiosamente el software para evitar exploits. Con Tunnel, el servicio no es accesible directamente desde internet — solo a través del canal cifrado de Cloudflare. El vector de ataque desaparece. La combinación con Access para poner autenticación delante es lo que hace el stack realmente potente.
ZeroTier y Tailscale no son lo mismo, aunque parezca que sí. Con los plugins os-zerotier y os-tailscale los dos se configuran desde la GUI de OPNsense en un número similar de pasos — la brecha de complejidad que había antes ya no existe. La diferencia real es de filosofía: ZeroTier te da más control sobre el routing y permite desplegar tu propio controlador; Tailscale simplifica el control plane a cambio de depender de sus servidores. Para un homelab consolidado donde quieres decidir exactamente qué rutas se anuncian, ZeroTier. Para alguien que empieza o para un caso de uso puntual, Tailscale.
Todo el stack vive en OPNsense. Una cosa que no aparece en ninguna guía genérica: os-cloudflared, os-zerotier y os-tailscale son tres plugins del mismo sistema. Se instalan, configuran y monitorizan desde la misma GUI. No hay servicios dispersos en máquinas distintas, no hay daemons que mantener por separado. OPNsense se convierte en el punto central de toda la arquitectura Zero Trust.
Zero Trust no es todo o nada. No hace falta implementar todo el stack de golpe. Empezar por segmentar la red con VLANs en OPNsense ya es un salto enorme respecto a la red plana. El resto se añade cuando tiene sentido.
Zero Trust no es un producto
Palo Alto tiene su versión. Zscaler tiene la suya. Cisco, Microsoft, Fortinet — todos tienen la suya. Y todas cuestan un dineral.
El argumento de venta es siempre el mismo: Zero Trust es complejo, requiere integración experta, necesitas su consola centralizada, su agente en cada endpoint, su soporte 24/7. Sin ellos no puedes. El miedo es parte del producto.
Lo que no te cuentan es que Zero Trust no es una solución que se compra. Es una decisión de diseño: no confío en ningún segmento de mi red, ni siquiera en el interno. El tráfico está denegado por defecto. Cada acceso requiere verificación explícita. Eso es todo.
John Kindervag lo describió en 2010 mientras trabajaba en Forrester. Era un modelo conceptual, no una licencia. Los vendors llegaron después, le pusieron logo y precio, y convirtieron un principio de arquitectura en una categoría de mercado de varios miles de millones de dólares.
¿Que su producto escala mejor para mil usuarios? Seguramente. ¿Que tiene integraciones que OPNsense no tiene? También. Pero el problema de fondo es que ese discurso deja fuera a quienes más lo necesitan.
Una PYME con diez empleados y un NAS en la oficina tiene exactamente los mismos riesgos de movimiento lateral que una multinacional. Un dispositivo IoT comprometido en una red plana es igual de peligroso en una empresa de 8 personas que en una de 8.000. La diferencia es que la multinacional tiene presupuesto para el vendor y la PYME cree que esto no va con ella.
Va con ella. Y puede permitírselo.
Lo sé porque llevo tiempo aplicando exactamente este stack en mi propio homelab — el mismo entorno que uso para aprender, probar y romper cosas antes de llevarlo a producción. OPNsense con VLANs, Cloudflare Tunnel con autenticación, ZeroTier para acceso remoto. Herramientas reales, en producción, con coste cero. La experiencia acumulada en un homelab no es un juguete — es exactamente el conocimiento que necesita un técnico para implantarlo en una empresa pequeña que no puede pagar una licencia de Zscaler.
Las PYMEs tienen derecho a la misma arquitectura de seguridad que las grandes. Solo necesitan a alguien que conozca las herramientas y sepa aplicarlas. El stack existe. Es gratuito. Y funciona.
Eso se puede implementar hoy, sin gastar un euro.
Sun Tzu tenía razón: la victoria real se construye antes de la batalla. No se subcontrata.
