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 | Sí |
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 | Sí |
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:
- Allow Return Traffic (top, all interfaces). Connection state = Established + Related.
- Allow Trusted → IoT (cualquier puerto, cualquier protocolo). Vos tenés que poder hablar a tus devices.
- Allow IoT → HA specific (opcional, para devices que push estado a HA por sí solos):
- IoT →
192.168.10.X(IP del HA Yellow) port 8123 (HA API) - IoT →
192.168.10.Xport 1883 (MQTT broker) - IoT →
192.168.10.Xport 5353 (mDNS unicast response) - Allow mDNS vía UniFi mDNS reflector (no es traffic rule, es feature aparte).
- Block IoT → Trusted (all other). Esto cae si las anteriores no matchearon.
- Block IoT → Internet (todos los devices IoT por default no salen a Internet).
- 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.
IPv6 link-local (para Matter futuro)¶
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¶
- Semana 1: crear VLAN Guest. Mover visitas. Cero riesgo, primera práctica con VLANs.
- Semana 2: crear VLAN IoT vacía + reglas. Validar mDNS reflector funcionando con un device de prueba.
- Semana 3-4: migrar IoT devices uno a uno desde Trusted a IoT. Validar después de cada uno.
- Mes 2: habilitar WAN egress blocking por default. Whitelist a medida que descubras qué devices necesitan internet legítimamente.
- 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 SÍ 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¶
- Apoya: meta operativa "no tinkering" — un device IoT comprometido NO requiere intervención.
- Conecta con: ../entities/matter (IPv6 link-local requirement).
- Conecta con: ../entities/bluetooth-le y ../concepts/esphome-ble-proxy-pattern (proxies van a VLAN IoT).
- Conecta con: ../analysis/q5-observability-stack-v1 (UniFi metrics → Prometheus).
Citas / evidencia¶
- IPv6 link-local requirement — ../sources/terrywhite-unifi-iot-vlan.
- Stateful firewall model — ../sources/terrywhite-unifi-iot-vlan.
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.