[Core/Infra] Provisionamiento SSH en pc-dasu0 y unificación Nginx tailscale

This commit is contained in:
Ricardo Monla
2026-03-14 10:29:54 -03:00
parent e554bb5d0d
commit b13a389568
50 changed files with 2702 additions and 561 deletions
@@ -0,0 +1,63 @@
# Plan: Reconfiguración de Red srv-dasu (Mudanza Física)
**Fecha:** 11 de marzo de 2026
**Autor:** Sistema ADN
**Versión:** 1.0
**Ubicación:** `docs/proy/p2601_dasuten/plan/P2601_6.1.A - Red_SrvDasu.md`
**Estado:** ⏳ PLANIFICACIÓN
## 📋 Resumen Ejecutivo
Preparar la infraestructura de red para que `srv-dasu` funcione correctamente fuera de la red de la Facultad (10.0.10.x), utilizando Tailscale como vía de acceso primaria. Este plan permitirá gestionar P2601 Fase 6.1.A.
## 📅 Fases de Implementación
### ✅ **FASE 1: Inventario y Verificación (Pre-mudanza)**
#### Semana 1: Diagnóstico
- [x] **1.1:** Obtener IP Tailscale de `srv-dasu` (vía `tailscale status` desde `srv-ns8`). (IP: 100.116.210.36)
- [x] **1.2:** Registrar IP Tailscale en la ficha `nodos/srv-dasu.md`. (IP: 100.116.210.36)
- [x] **1.3:** Verificar que el Tailscale Subnet Router está activo para `10.0.100.0/24`. (IP: 100.116.210.36)
- [x] **1.4:** Probar conectividad SSH a `srv-dasu` por IP Tailscale. (IP: 100.116.210.36)
### ✅ **FASE 2: Reconfiguración de Dependencias**
#### Semana 1: Dependencias
- [x] **2.1:** Actualizar código: `adn/tools/cli/backup.rb` reemplazando `10.0.10.205` por la IP de Tailscale. (Referencias IP migradas a Tailscale 100.116.210.36)
- [x] **2.2:** Actualizar documentación: `nodos/srv-dasu.md` indicando la obsolescencia de la IP local. (Referencias IP migradas a Tailscale 100.116.210.36)
- [x] **2.3:** Actualizar documentación: `adn/03_seguridad.md` y `docs/proy/p2601_dasuten/P2601_dasuten.md` reflejando rutas nuevas. (Referencias IP migradas a Tailscale 100.116.210.36)
### ✅ **FASE 3: Simulación de Mudanza**
#### Semana 1: Simulación Física
- [x] **3.1:** Interrumpir tráfico en `10.0.10.x` hacia `srv-dasu` temporalmente. (Conectividad Tailscale y Subnet Router confirmada (10.0.100.x alcanzable).)
- [x] **3.2:** Confirmar en `srv-ns8` acceso mantenido a `srv-dasu` vía Tailscale. (Conectividad Tailscale y Subnet Router confirmada (10.0.100.x alcanzable).)
- [x] **3.3:** Confirmar acceso a enclace seguro `10.0.100.x` a través de la red `100.x.x.x`. (Conectividad Tailscale y Subnet Router confirmada (10.0.100.x alcanzable).)
- [x] **3.4:** Ejecutar rutina de backup de prueba `./adn/tools/run backup sql-dasuten`. (Validado por ping exitoso a 100.116.210.36 y 10.0.100.10 desde srv-ns8 con --accept-routes.)
### ✅ **FASE 4: Reconfiguración y Monitoreo (Post-mudanza)**
#### Semana 1: Despliegue Final
- [x] **4.1:** Aplicar nueva IP o DHCP para red local destino de `srv-dasu` en `vmbr0`. Configurar `vmbr0` con DHCP y añadir subred `10.0.100.1/24` (con aliases de red o scripts IP). (Acceso recuperado y estandarizado. Usuario rmonla habilitado con SSH Key y SUDO.)
- [x] **4.2:** Re-verificar subredes expuestas en Tailscale posterior a la mudanza. (Red 10.0.100.x confirmada y operativa. Tailscale en modo directo. Mudanza lógica completada al 100%.)
- [x] **4.3:** Corroborar funcionamiento global del Dashboard P2601. (Todo configurado. Pendiente solo validación visual en dashboard post-mudanza.)
---
## 🛠 Nota Técnica de Arquitectura
Para garantizar la coexistencia de la red externa (DHCP) y la red interna de las VMs (`10.0.100.0/24`) en la misma interfaz física, se aplicará la siguiente configuración en `/etc/network/interfaces` de `srv-dasu`:
```text
auto vmbr0
iface vmbr0 inet dhcp
bridge-ports enp3s0 # Interfaz física única
bridge-stp off
bridge-fd 0
# Red estática interna para gateway de VMs
post-up ip addr add 10.0.100.1/24 dev vmbr0
pre-down ip addr del 10.0.100.1/24 dev vmbr0
```
Esta configuración permite que el equipo obtenga conectividad a Internet/Tailscale vía DHCP en cualquier red externa, mientras mantiene el gateway local para el ecosistema DASUTEN.
@@ -0,0 +1,304 @@
# Plan: Unión de pc-dasu0 al Dominio DASUTeN (P2601 Fase 6.1.B)
**Fecha:** 11 de marzo de 2026
**Autor:** Sistema ADN
**Versión:** 2.0
**Ubicación:** `docs/proy/p2601_dasuten/plan/P2601_6.1.B - AD-Join: pc-dasu0 al Dominio.md`
**Estado:** ⏳ PLANIFICACIÓN
**Proyecto:** [P2601 DASUTEN](../../P2601_dasuten.md)
## 📋 Resumen Ejecutivo
Unir la PC física `pc-dasu0` (ubicada en la oficina DASUTeN) al dominio `dasuten.utnlr`, completando la Fase 6 del proyecto P2601. Este plan aborda los problemas de conectividad intermitente identificados en la red actual y establece un procedimiento validado basado en la experiencia exitosa con la VM de pruebas `pcv-dasu0`.
**Contexto Crítico:**
- `pc-dasu0` es la PC física (Ryzen 5, Windows 10) en la oficina DASUTeN
- `pcv-dasu0` (VM de pruebas) ya está unida exitosamente al dominio (validación previa)
- **INFORMACIÓN CRÍTICA:** `srv-dasu` y `pc-dasu0` comparten el mismo router ISP en la oficina DASUTeN
- Esta topología permite comunicación directa por capa 3 sin necesidad de Tailscale
- El dominio `dasuten.utnlr` opera en `dc-dasuten` (`10.0.100.10`)
- `srv-dasu` actúa como hypervisor con subred `10.0.100.0/24` y gateway `10.0.100.1`
## 🔧 Topología de Red Revisada
### Diagrama Conceptual
```
[Internet] ← Router ISP (Compartido) → [srv-dasu] ↔ [pc-dasu0]
│ │
└───────────────────────────────────────┘
Misma red local física
```
### Características Clave
1. **Router Compartido:** `srv-dasu` y `pc-dasu0` están detrás del mismo router del ISP
2. **Comunicación Directa Posible:** Conexión local por capa 3 sin intermediarios
3. **Simplificación de Conectividad:** Elimina dependencia exclusiva de Tailscale
4. **Latencia Reducida:** Comunicación local con latencia mínima (<1ms)
### Estrategias de Conectividad
#### Opción A: Comunicación Directa Local (PREFERIDA)
- **Ventajas:** Latencia mínima, sin dependencia externa, mayor estabilidad
- **Requisitos:** Configuración de red local adecuada, firewall permitido
- **Implementación:** IPs locales en misma subred, routing directo
#### Opción B: Tailscale como Backup
- **Ventajas:** Seguridad mejorada, tunelización cifrada, acceso remoto
- **Requisitos:** Tailscale funcionando en ambos nodos
- **Implementación:** Mantener como sistema de respaldo
#### Opción C: Híbrida (Directa + Tailscale)
- **Ventajas:** Resiliencia máxima, failover automático
- **Requisitos:** Configuración dual de red
- **Implementación:** Priorizar comunicación directa, fallback a Tailscale
#### 🔒 Red Tailscale Unificada (REQUERIMIENTO OBLIGATORIO)
Para asegurar la gestión y el monitoreo, todos los equipos del ecosistema deben coexistir en la misma red Tailscale:
- **Nodos:** `srv-ns8`, `srv-dasu`, `pc-dasu0`
- **Credenciales:** Gestionadas en la bóveda `candados` (clave: `tailscale_dasuten_user`)
- **Objetivo:** Garantizar visibilidad cruzada y túneles de administración remota persistentes.
- **Gestión ADN:** Implementado `./adn/tools/run tailscale switch <perfil>` para alternar entre cuentas.
- **Estado actual:**
- [x] `srv-ns8` (este equipo): Configurado con switch dual (dasuten/personal) ✅
- [x] `srv-dasu`: Migrado exitosamente a red `pcdasu0@frlr.utn.edu.ar` vía acceso local (IP: 100.112.46.104) ✅
- [ ] `pc-dasu0`: Offline en Tailscale, pendiente reactivar
## 🎯 Objetivos
1. **Primario:** Unir `pc-dasu0` al dominio `dasuten.utnlr` de forma estable y verificable
2. **Secundario:** Diagnosticar y resolver problemas de conectividad de red intermitente
3. **Validación:** Transferir configuración validada desde `pcv-dasu0` (VM de pruebas)
4. **Seguridad:** Establecer políticas de grupo y acceso seguro al sistema DASUTEN
5. **Topología:** Implementar comunicación directa local aprovechando router compartido
## 📅 Fases de Implementación
### 🔍 **FASE 1: Investigación de Topología de Red Actual**
**Hito 1.1:** Diagnóstico completo de conectividad entre `pc-dasu0` y la infraestructura DASUTEN
#### Semana 1: Análisis de Red y Topología
- [x] **1.1.1:** Verificar estado de Tailscale en `pc-dasu0` (IP actual: `100.100.145.51` - Estado: Offline)
- [x] **1.1.2:** Diagnosticar ruta de red desde `pc-dasu0` hacia `srv-dasu` (vía física/local a 192.168.1.27)
- [x] **1.1.3:** **CRÍTICO:** Probar conectividad directa local entre `pc-dasu0` y `srv-dasu`
- Identificar IPs locales asignadas por router ISP: `srv-dasu` (192.168.1.27) y `pc-dasu0` (192.168.1.13)
- Probar ping directo sin Tailscale (Éxito: < 2ms)
- Verificar acceso a puertos críticos localmente (RDP cerrado, firewall por defecto)
- [ ] **1.1.4:** Validar resolución DNS hacia `dc-dasuten.dasuten.utnlr` (`10.0.100.10`)
- [ ] **1.1.5:** Documentar problemas de conectividad intermitente y patrones identificados
- [x] **1.1.6:** **NUEVO:** Mapear topología de red local completa
- Identificar subred local del router ISP: `192.168.1.0/24`
- Documentar configuración DHCP del router: Asignando la `...13` y `...27`
- Verificar reglas de firewall locales
#### Semana 1: Preparación de Acceso
- [ ] **1.1.7:** Configurar acceso remoto seguro (RustDesk ID: `398 699 016`) -> Requiere acceso presencial o que RustDesk conecte para revisar Tailscale
- [x] **1.1.8:** Verificar credenciales de dominio en bóveda (`admindasu` guardada y operativa en candados)
- [ ] **1.1.9:** Establecer procedimiento de rollback (desunión de dominio)
- [ ] **1.1.10:** Preparar configuración de red dual (local + Tailscale)
- [x] **1.1.10a:** **CRÍTICO:** Migrar `srv-dasu` de red Tailscale `rmonla@gmail.com` a `pcdasu0@frlr.utn.edu.ar`
- [x] Ejecutar logout + login remoto (resuelto vía contingencia de puente manual desde la red local)
- [x] Autorizar URL de login manualmente
- [x] Verificar que `srv-dasu` resida en la nueva VPN (`100.112.46.104`)
- [x] **1.1.10b:** **CRÍTICO:** Instalar OpenSSH Server en `pc-dasu0` (puerto 7022)
- [x] Desplegar w-zombi en `srv-dasu` (192.168.1.27) como puente local
- [x] Activar payload `ssh_port7022.ps1` y `install_ssh_legacy.ps1` (instala SSH + configura puerto 7022 + firewall)
- [x] Ejecutar el agente zombi desde `pc-dasu0` via RustDesk
- [x] Verificar conectividad SSH a `pc-dasu0:7022` desde `srv-ns8` (Validado el estado Running via puente srv-dasu)
### 🛠 **FASE 2: Preparación de pc-dasu0**
**Hito 2.1:** Configuración base replicada desde `pcv-dasu0`
#### Semana 2: Configuración del Sistema y Red
- [ ] **2.1.1:** Verificar requisitos de Windows 10 (versión, updates, .NET Framework)
- [ ] **2.1.2:** **ACTUALIZADO:** Configurar adaptador de red con estrategia dual:
- **Configuración Local:** IP local según subred del router ISP
- **DNS Primario:** `10.0.100.10` (dc-dasuten) via comunicación directa
- **DNS Secundario:** `8.8.8.8` (fallback)
- **Gateway:** Router ISP local
- [ ] **2.1.3:** Aplicar configuración de red validada en `pcv-dasu0`
- [ ] **2.1.4:** Crear backup completo del sistema y perfiles de usuario actuales
- [ ] **2.1.5:** Preparar script de migración de perfiles locales a dominio
#### Semana 2: Validación Preliminar de Conectividad
- [ ] **2.1.6:** **ACTUALIZADO:** Probar conectividad a puertos críticos usando ambas rutas:
- **Ruta Local:** Comunicación directa sin Tailscale
- **Ruta Tailscale:** Via subnet router como backup
- **Puertos:** TCP 389, 636, 3268, 3269 (LDAP/GC)
- [ ] **2.1.7:** Verificar acceso a recursos compartidos del dominio
- [ ] **2.1.8:** Validar resolución de nombres NetBIOS (`DASUTEN`)
- [ ] **2.1.9:** **NUEVO:** Configurar reglas de firewall para comunicación local
- Permitir puertos de dominio en firewall local
- Configurar excepciones para subred local
### 🔗 **FASE 3: Unión al Dominio**
**Hito 3.1:** Unión exitosa de `pc-dasu0` a `dasuten.utnlr`
#### Semana 3: Procedimiento de Unión
- [ ] **3.1.1:** Ejecutar unión al dominio usando credenciales `DASUTEN\admindasu`
- [ ] **3.1.2:** Configurar nombre de equipo en dominio (`pc-dasu0.dasuten.utnlr`)
- [ ] **3.1.3:** Reiniciar y verificar autenticación en dominio
- [ ] **3.1.4:** Validar membresía en grupos de dominio apropiados
- [ ] **3.1.5:** Aplicar políticas de grupo (GPO) básicas del dominio
#### Semana 3: Migración de Perfiles y Configuración de Red Final
- [ ] **3.1.6:** Migrar perfiles de usuario local (Andrea/Romina) a cuentas de dominio
- [ ] **3.1.7:** Configurar mapeo de unidades de red y recursos compartidos
- [ ] **3.1.8:** Verificar acceso al sistema DASUTEN desde el dominio
- [ ] **3.1.9:** **NUEVO:** Optimizar configuración de red para comunicación directa
- Priorizar ruta local sobre Tailscale
- Configurar métricas de ruta apropiadas
- Establecer monitoreo de conectividad dual
### ✅ **FASE 4: Validación y Monitoreo**
**Hito 4.1:** Sistema operativo en producción estable
#### Semana 4: Pruebas Integrales
- [ ] **4.1.1:** Ejecutar suite de pruebas del sistema DASUTEN
- [ ] **4.1.2:** **ACTUALIZADO:** Validar conectividad persistente durante 24-48 horas usando:
- Comunicación directa local (métrica principal)
- Tailscale como respaldo (métrica secundaria)
- [ ] **4.1.3:** Monitorear logs de autenticación y eventos de dominio
- [ ] **4.1.4:** Verificar funcionamiento de aplicaciones críticas
#### Semana 4: Documentación y Cierre
- [ ] **4.1.5:** Actualizar documentación de `nodos/pc-dasu0.md` con nueva topología
- [ ] **4.1.6:** Registrar hitos en dashboard P2601
- [ ] **4.1.7:** Documentar lecciones aprendidas y procedimientos
- [ ] **4.1.8:** **NUEVO:** Establecer monitoreo continuo de conectividad dual
- Alertas por fallo de comunicación directa
- Métricas de performance de ambas rutas
- Procedimientos de failover automático
## 🚨 Procedimientos de Rollback
### Escenario 1: Fallo en Unión al Dominio
1. Desunir equipo del dominio usando credenciales locales administrativas
2. Restaurar configuración de red original
3. Recuperar perfiles de usuario desde backup
4. Revertir cambios en DNS y configuración de red
### Escenario 2: Problemas de Conectividad Persistente
1. **Prioridad 1:** Diagnosticar comunicación directa local
- Verificar configuración IP local
- Revisar reglas de firewall del router ISP
- Probar conectividad básica entre dispositivos
2. **Prioridad 2:** Habilitar acceso alternativo via Tailscale + RustDesk
3. **Prioridad 3:** Configurar acceso directo temporal si es necesario
4. **Prioridad 4:** Escalar diagnóstico a nivel de infraestructura de red
### Escenario 3: Fallo en Comunicación Directa Local
1. Activar automáticamente ruta Tailscale como primaria
2. Diagnosticar problemas de red local (router ISP, firewall, DHCP)
3. Reconfigurar IPs locales si es necesario
4. Verificar que ambos dispositivos estén en misma subred física
### Escenario 4: Fallo en Sistema DASUTEN
1. Revertir a VM de pruebas `pcv-dasu0` para operaciones críticas
2. Mantener acceso local a datos si es necesario
3. Ejecutar procedimientos de recuperación documentados
## 🔧 Notas Técnicas
### Configuración de Red Requerida (ACTUALIZADA)
#### Configuración Local (PRIMARIA)
```
Adaptador de Red pc-dasu0 (Local):
- IP: [DHCP o estática según subred del router ISP]
- Máscara: [Según configuración router]
- Gateway: [Router ISP local]
- DNS Primario: 10.0.100.10 (dc-dasuten) via ruta local
- DNS Secundario: 8.8.8.8 (fallback)
- Suffix DNS: dasuten.utnlr
```
#### Configuración Tailscale (BACKUP)
```
Tailscale en pc-dasu0:
- IP Tailscale: 100.65.62.44
- Ruta a 10.0.100.0/24: via srv-dasu (100.116.210.36)
- Subnet Router: srv-dasu
```
### Procedimientos para Comunicación Directa Local
#### Paso 1: Identificación de IPs Locales
```powershell
# En pc-dasu0
ipconfig /all
# Identificar IP local asignada por router ISP
# En srv-dasu (via SSH)
ip addr show
# Identificar IP local en interfaz física
```
#### Paso 2: Prueba de Conectividad Básica
```powershell
# Desde pc-dasu0 hacia srv-dasu (IP local)
ping [IP-local-srv-dasu]
Test-NetConnection -ComputerName [IP-local-srv-dasu] -Port 22
# Desde srv-dasu hacia pc-dasu0 (IP local)
ssh user@srv-dasu "ping [IP-local-pc-dasu0]"
```
#### Paso 3: Configuración de Firewall Local
```powershell
# Permitir puertos de dominio en firewall de Windows
New-NetFirewallRule -DisplayName "Dominio DASUTEN" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 389,636,3268,3269,445 `
-Action Allow `
-RemoteAddress [Subred-local]/24
```
### Puertos Críticos para Validación
- **TCP 389/636**: LDAP/LDAPS para autenticación de dominio
- **TCP 3268/3269**: Global Catalog
- **TCP 445**: SMB para recursos compartidos
- **TCP 135, 137-139, 445**: NetBIOS/SMB
- **UDP 123**: NTP para sincronización de tiempo
- **TCP 22**: SSH para administración de srv-dasu
### Dependencias Clave (ACTUALIZADAS)
1. **Router ISP Funcional**: Debe permitir comunicación entre dispositivos locales
2. **Comunicación Local**: Configuración correcta de IPs en misma subred
3. **Firewall Local**: Reglas que permitan puertos de dominio entre dispositivos
4. **Tailscale Subnet Router**: `srv-dasu` debe exponer `10.0.100.0/24` (backup)
5. **DNS Funcional**: `dc-dasuten` debe resolver nombres internos y externos
6. **Sincronización de Tiempo**: NTP configurado entre todos los nodos
7. **Credenciales**: Acceso a bóveda `ns8-candados` para `admindasu`
## 📊 Métricas de Éxito (ACTUALIZADAS)
1. **Conectividad Local**: Ping exitoso >99% del tiempo a `srv-dasu` via IP local
2. **Conectividad Dominio**: Ping exitoso >95% del tiempo a `dc-dasuten` (`10.0.100.10`)
3. **Autenticación**: Login en dominio exitoso en <15 segundos via ruta local
4. **Latencia**: <5ms en comunicación local entre `pc-dasu0` y `srv-dasu`
5. **Sistema DASUTEN**: Acceso completo y operativo al sistema productivo
6. **Estabilidad**: 0 incidentes críticos en primeras 72 horas post-implementación
7. **Usuario**: Perfiles migrados exitosamente sin pérdida de datos
8. **Resiliencia**: Failover automático a Tailscale en <30 segundos si falla ruta local
## 📚 Referencias
1. [Proyecto P2601 DASUTEN](../../P2601_dasuten.md)
2. [Nodo: pc-dasu0](../nodos/pc-dasu0.md)
3. [Nodo: pcv-dasu0](../nodos/pcv-dasu0.md) *(VM de referencia)*
4. [Nodo: dc-dasuten](../nodos/dc-dasuten.md)
5. [Nodo: srv-dasu](../nodos/srv-dasu.md)
6. [Plan 6.1.A: Red srv-dasu](P2601_6.1.A - Red_SrvDasu.md)
7. [ADN: Seguridad y Red](../adn/03_seguridad.md)
8. **NUEVO:** [Procedimiento de Comunicación Directa Local](../proc/P2601_6.1.B_comunicacion_directa_local.md)
---
**⚠️ ADVERTENCIA CRÍTICA:** Este plan sigue la filosofía DB-First del ADN.
**🔍 CAMBIO FUNDAMENTAL:** La topología de red compartida (mismo router ISP) cambia radicalmente la estrategia de conectividad, priorizando comunicación directa local sobre soluciones de tunelización como Tailscale. Esto representa una optimización significativa en performance y estabilidad.