Files
dtic-DIIAA/docs/ambito/dtic-ADN/A01.P010_W-ZOMBI-Relay-Switch.md
T

122 lines
3.6 KiB
Markdown

# A01.P010 - W-ZOMBI Relay Switch (Alcance a Redes Internas)
> **Estado**: ⏳ Pendiente
> **Pertenece a**: [A01 - Ecosistema ADN](./A01_dtic-ADN.md)
> **Fecha**: 2026-04-09
> **Responsable**: Lic. Ricardo MONLA
> **Versión**: 1.0 — Plan inicial
> **Prerequisito**: W-Zombi v2.1 (A01.P003)
---
## 📋 Resumen Ejecutivo
Extender W-Zombi para alcanzar **PCs y VMs en redes internas** que no tienen conectividad directa con NS8 vía Tailscale, usando un nodo intermedio (ej: `srv-dasu`) como **relay/switch**.
**Topología actual (problema):**
```
NS8 (Tailscale) ──✔──► srv-dasu (Tailscale + LAN)
NS8 ──────✖──────────► VM-interna (solo LAN)
```
**Topología objetivo:**
```
NS8 ──► srv-dasu (relay) ──► VM/PC interna (LAN)
↕ retransmite
cmd.json + log
```
---
## 🎯 Objetivo
Permitir que W-Zombi controle PCs/VMs en redes internas inaccesibles directamente desde NS8, utilizando un nodo intermedio con visibilidad en ambas redes como relay transparente.
---
## 🏗️ Opciones de Arquitectura
### Opción A: Relay HTTP en srv-dasu (Recomendada)
srv-dasu corre un mini-servidor que:
1. Escucha en puerto local (ej: 8001)
2. El zombi PS1 en la VM interna se conecta a `srv-dasu:8001`
3. srv-dasu reenvía `cmd.json` desde NS8 y `log` hacia NS8
**Pros:** Independiente, no requiere cambios en firewall
**Contras:** Requiere un servicio en srv-dasu
```
NS8:8000 ←──tailscale──→ srv-dasu:8001 ←──LAN──→ VM-target
(server) (relay) (zombi)
```
### Opción B: SSH Port Forward
```bash
# Desde NS8:
ssh -L 8001:IP_VM_INTERNA:8000 srv-dasu
```
**Pros:** Cero código nuevo
**Contras:** Requiere sesión SSH activa, no es autónomo
### Opción C: Tailscale Subnet Router
Configurar srv-dasu como subnet router para exponer la LAN interna.
**Pros:** Solución nativa Tailscale, todas las VMs accesibles
**Contras:** Requiere configuración de Tailscale admin, posibles implicaciones de seguridad
---
## 📋 Tareas (Opción A — Relay HTTP)
| ID | Tarea | Descripción | Estado |
|:--:|-------|-------------|--------|
| T1 | Diseño del relay | Definir protocolo de retransmisión | ✅ |
| T2 | `relay.rb` / `relay.ps1` | Comando sub-relay y engine ps1 | ✅ |
| T3 | Multi-target | Soportar múltiples VMs (ej: `cmd_vm101.json`, `cmd_vm102.json`) | ⏳ |
| T4 | CLI `w-zombi relay` | Subcomando para gestionar relays | ✅ |
| T5 | Validación | Test con PC Windows real vía relay | ⏳ |
---
## 📝 Contexto Técnico
### Nodos involucrados
| Nodo | Red | Rol | IP Tailscale |
|------|-----|-----|-------------|
| NS8 | Tailscale | Servidor W-Zombi (control) | 100.111.195.4 |
| srv-dasu | Tailscale + LAN | Relay/Switch | 100.116.210.36 |
| PC target | Solo LAN | Zombi (ejecuta comandos) | ¿? (LAN interna) |
### Flujo de datos
```
1. NS8 escribe cmd.json (id:201, cmd:"ipconfig")
2. srv-dasu (relay) polling NS8:8000/cmd.json cada 5s
3. srv-dasu sirve cmd.json en su puerto local 8001
4. PC-target (zombi PS1) polling srv-dasu:8001/cmd.json cada 5s
5. PC-target ejecuta "ipconfig", POST resultado a srv-dasu:8001/log
6. srv-dasu reenvía log a NS8:8000/log
```
---
## 🔮 Evolución Futura
- **Multi-relay**: Cadena de relays para redes muy segmentadas
- **Registro automático**: Zombis se anuncian al conectarse
- **Dashboard**: Ver estado de todos los zombis (directos + relay)
- **Integración Dron**: Lanzar comandos remotos como drones con eventos en Bitácora
---
## 📚 Referencias
- [A01.P003 — W-ZOMBI v2.0](./A01.P003_W-ZOMBI-v2.0.md)
- Fix v2.1: Ruta `/cmd` + JSON parsing robusto (2026-04-09)