Saltar a contenido

Network segmentation UniFi para el setup del usuario

El usuario tiene UniFi. Plan concreto: 3 VLANs (Trusted, IoT, Guest), firewall stateful, mDNS reflector enabled, IPv6 link-local para Matter futuro. Trade-off: más complejidad de network inicial vs menos blast radius cuando un IoT device se comprometa. Se justifica si tenés ≥10 devices IoT o cualquier device que phone-home a cloud.

Contexto

Network segmentation no es essential para que las luces prendan. Es essential para dormir tranquilo: si un device IoT chino con firmware sospechoso se compromete, no debería poder ver tu laptop, tu NAS, tu HA. Es seguro pasivo — invisible cuando funciona, salvavidas cuando hace falta.

Contenido

Las 3 VLANs propuestas

VLAN Subnet ejemplo Devices Internet egress
Trusted (VLAN 10) 192.168.10.0/24 Laptops, phones, mini-PC, HA Yellow, NAS, Sonos
IoT (VLAN 20) 192.168.20.0/24 Aqara hub, SwitchBot Hub 2, ESPHome devices, cámaras, vendor bridges (Hue, Lutron), smart appliances Restringido (bloquear o whitelist)
Guest (VLAN 30) 192.168.30.0/24 Visitantes, devices personales temporales

Wireless networks: 1 SSID por VLAN. Trusted con WPA3, IoT con WPA2 (muchos devices no soportan WPA3), Guest con captive portal.

Decisión sobre Zigbee / BLE / ESPHome

Stack Va a VLAN?
Z2M coordinator (USB on Yellow) No — el radio Zigbee es out-of-band. El HA Yellow está en Trusted.
BLE proxies ESPHome Van a VLAN IoT (sus packets MQTT hacia HA cruzan VLAN-boundary controlado).
ESPHome custom devices Van a VLAN IoT.
Cámaras WiFi VLAN IoT (especialmente las chinas — bloquear su WAN egress).
Matter devices (cuando aparezcan) VLAN IoT, pero requiere IPv6 link-local entre VLANs (ver abajo).

Firewall rules (orden importa)

UniFi traffic rules / zone-based firewall:

  1. Allow Return Traffic (top, all interfaces). Connection state = Established + Related.
  2. Allow Trusted → IoT (cualquier puerto, cualquier protocolo). Vos tenés que poder hablar a tus devices.
  3. Allow IoT → HA specific (opcional, para devices que push estado a HA por sí solos):
  4. IoT → 192.168.10.X (IP del HA Yellow) port 8123 (HA API)
  5. IoT → 192.168.10.X port 1883 (MQTT broker)
  6. IoT → 192.168.10.X port 5353 (mDNS unicast response)
  7. Allow mDNS vía UniFi mDNS reflector (no es traffic rule, es feature aparte).
  8. Block IoT → Trusted (all other). Esto cae si las anteriores no matchearon.
  9. Block IoT → Internet (todos los devices IoT por default no salen a Internet).
  10. Whitelist específicas sobre la 6: ESPHome OTA → GitHub, vendor bridges si necesitan firmware updates.

Variante stateful (simplificada) según ../sources/terrywhite-unifi-iot-vlan: - Allow return traffic - Block IoT initiation hacia Trusted - Trusted → IoT permitido implícitamente

mDNS (crítico para HomeKit / Matter / Chromecast)

UniFi tiene mDNS reflector built-in. Habilitarlo en ambas VLANs (Trusted + IoT): - Settings → Networks → Multicast Settings → "IoT Auto Discovery (mDNS)" toggle on. - Multicast Filtering (IGMP Snooping): NO networks (deja pasar todo el multicast). - WiFi Advanced: disable "Multicast to Unicast".

Sin esto: - Chromecast no se ve desde Trusted hacia IoT. - HomeKit accessories no aparecen. - HA discovery no encuentra Matter devices en IoT.

Aunque tu ISP no tenga IPv6 público, Matter over WiFi requiere IPv6 link-local routing entre VLANs. Es un gotcha real.

Config en UniFi por cada VLAN: - IPv6 Interface Type: Static - Address (ejemplo Trusted): fd00:1::1/64 - Address (ejemplo IoT): fd00:3::1/64 - Client Assignment: SLAAC - Router Advertisement: enabled

Cuándo configurar: ANTES de comprar tu primer device Matter, no después. Devices Matter pairean con la red activa al momento del pairing.

WAN egress blocking — privacy bonus

Por default, devices IoT pueden phone-home (telemetry, firmware update calls, vendor cloud).

Política recomendada: default deny WAN egress de la VLAN IoT, whitelist solo: - NTP servers (sync de hora). - Firmware update endpoints conocidos del vendor (validar caso por caso). - Para ESPHome: NADA hacia internet (los devices solo hablan con HA local).

Si la cámara china deja de funcionar tras esto, bien: probablemente requería cloud y eso es el opuesto de local-first.

Para Z2M / Mosquitto que viven en el Yellow (Trusted)

Devices ESPHome en VLAN IoT necesitan llegar al broker MQTT en Yellow (Trusted): - Allow 192.168.20.0/24<HA_Yellow_IP>:1883 (MQTT). - Allow 192.168.20.0/24<HA_Yellow_IP>:6053 (ESPHome native API, si lo usás directo).

Estas son las únicas dos perforaciones IoT→Trusted necesarias.

Para el agente AI

Operando desde mini-PC (Trusted): - Acceso a Yellow (Trusted) directo. - Acceso a IoT devices vía rules whitelist (Trusted → IoT permitido por default). - Lectura UniFi API via unifi_controller integration → métricas de network al observability stack.

Plan de adopción

  1. Semana 1: crear VLAN Guest. Mover visitas. Cero riesgo, primera práctica con VLANs.
  2. Semana 2: crear VLAN IoT vacía + reglas. Validar mDNS reflector funcionando con un device de prueba.
  3. Semana 3-4: migrar IoT devices uno a uno desde Trusted a IoT. Validar después de cada uno.
  4. Mes 2: habilitar WAN egress blocking por default. Whitelist a medida que descubras qué devices necesitan internet legítimamente.
  5. Mes 3+: IPv6 link-local cuando aparezca el primer device Matter.

Lo que NO se rompe

  • Zigbee, BLE, Z-Wave (out-of-band; no van por IP).
  • Wired devices en switch UniFi (si están en el mismo VLAN como antes).

Lo que se rompe inicialmente

  • Devices descubiertos por broadcast (Sonos, Chromecast) sin mDNS reflector.
  • Apps móviles de vendor que asumen LAN único (algunas no manejan multi-VLAN).
  • Setup wizard del vendor que requiere phone + device en misma WiFi (usar SSID IoT temporal).

Relaciones

Citas / evidencia

Abierto / gaps

  • ¿La integration UniFi de HA expone enough metrics para Prometheus / Grafana dashboards?
  • Documento concreto del whitelist de WAN egress por vendor (Aqara needs X, SwitchBot needs Y).
  • Patrón para handle setup-wizard de vendor que asume LAN único — uso de SSID temporal en IoT.
  • Decision tree: ¿Mosquitto debería estar en Trusted (con Yellow) o aparte en mini-PC? Si mini-PC corre Mosquitto, IoT devices apuntan a mini-PC, Yellow es solo HA Core.