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
/24para 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.XXXPost-F4 esto cambia a192.168.0.XXX(VIP). - Cloudflare DNS: registro wildcard
*.monxas.casaapunta 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/hostsde 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 comodocs.home.monxas.casa). - Subnet WG: TBD (config en
secrets/wireguard.sops.yamlpost-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).