Skip to content

Network map

LAN única 192.168.0.XXX/24. Sin VLANs por ahora (homelab plano). DNS interno resuelto por Pi-hole con override address=/monxas.casa/192.168.0.XXX que manda todo *.monxas.casa al Caddy de VM 208 (post-F4 cambiará a VIP .250).

Topología L3

graph TB
    WAN[Internet WAN
IP fija Movistar] ROUTER[Router Movistar R2
192.168.0.XXX
NAT + DHCP] PIHOLE[Pi-hole DNS
192.168.0.XXX] subgraph Cluster["Cluster Proxmox"] PMX50[pmx-50
.50] PMX51[pmx-51
.51] VIP{{VIP keepalived
.250}} end NAS[NAS F4-423
.237] TV[LG TV
.227] TVGW[tv-gw LXC
.210] CLIENTS[Clientes LAN
Macs, móviles, IoT] WAN --> ROUTER ROUTER --> PIHOLE ROUTER --> PMX50 ROUTER --> PMX51 ROUTER --> NAS ROUTER --> CLIENTS PMX50 -.->|VRRP MASTER.-> VIP PMX51 -.->|VRRP BACKUP.-> VIP TVGW --> TV CLIENTS -->|DNS queries| PIHOLE style PIHOLE fill:#74c0fc style VIP fill:#ff6b6b,color:#fff style NAS fill:#ffd43b

IPs reservadas (estáticas)

IP Host Rol
.1 Router Movistar Gateway, NAT, DHCP
.50 pmx-50 Proxmox nodo Ryzen
.51 pmx-51 Proxmox nodo Celeron
.138 LXC 101 hermesbot Agente Hermes
.171 VM 171 homeassistant Home Assistant
.172 LXC 172 ha-ml ML arrival predictor
.186 LXC 186 pbs Proxmox Backup Server
.188 LXC 251 rag RAG offline + Kiwix
.200 LXC 200 n8n n8n + alert forwarder
.204 Pi-hole DNS interno + sinkhole
.208 VM 208 ubuntu-media-server Docker hub, backends, observability
.210 LXC 110 tv-gw L3 gateway LG TV monitoring
.227 LG TV Monitorizada vía tv-gw
.237 NAS TerraMaster NFS exports, SMART telemetry
.247 LXC 270 caddy-primary Caddy HA MASTER (post-F4)
.248 LXC 271 caddy-secondary Caddy HA BACKUP (post-F4)
.250 VIP keepalived Ingress unificado (post-F4)

Rango DHCP del router: queda libre el resto del /24 para clientes (móviles, portátiles, IoT). Reservas estáticas se configuran en el container/VM directamente (cloud-init o /etc/network/interfaces), no en el router.

DNS

  • Resolver primario LAN: Pi-hole .204 (DHCP option 6).
  • Override *.monxas.casa: dnsmasq config en Pi-hole: address=/monxas.casa/192.168.0.XXX Post-F4 esto cambia a 192.168.0.XXX (VIP).
  • Cloudflare DNS: registro wildcard *.monxas.casa apunta al CF Tunnel (<tunnel-uuid>.cfargotunnel.com). Resuelve externo cuando se accede desde fuera de casa. Desde LAN, Pi-hole intercepta antes de salir a CF.
  • Hostnames internos (no .casa): añadidos al /etc/hosts de Pi-hole cuando hace falta (e.g. pmx-50.lan, nas.lan).

Ingress externo

sequenceDiagram
    participant U as Usuario
    participant CF as Cloudflare
    participant CFD as cloudflared LXC 123
    participant VIP as VIP .250
    participant CADDY as Caddy LXC 270/271
    participant APP as Backend (VM 208)

    U->>CF: HTTPS grafana.monxas.casa
    CF->>CF: CF Access SSO check
    CF->>CFD: Tunnel forward
    CFD->>VIP: HTTPS :443
    VIP->>CADDY: Routed by keepalived
    CADDY->>CADDY: managed.caddy match host
    CADDY->>APP: proxy_pass 192.168.0.XXX:3030
    APP-->>U: Response

VPN

  • WireGuard en LXC 155 (pmx-51). Acceso remoto a LAN cuando CF Access no basta (e.g. SSH directo a nodos, acceso a apps LAN-only como docs.home.monxas.casa).
  • Subnet WG: TBD (config en secrets/wireguard.sops.yaml post-F3).

Cosas que NO existen (intencional)

  • Sin VLANs (red plana 192.168.0.XXX/24).
  • Sin firewall L7 interno (pfSense/OPNsense). El router Movistar hace NAT y nada más.
  • Sin IPv6 (CF Tunnel maneja la dual-stack externa).
  • Sin DNS público propio (CF gestiona la zona monxas.casa).