diff --git a/adn/tools/cli/dns.rb b/adn/tools/cli/dns.rb new file mode 100644 index 00000000..0050f2a1 --- /dev/null +++ b/adn/tools/cli/dns.rb @@ -0,0 +1,285 @@ +# frozen_string_literal: true + +# DNS CLI — Gestión del servidor DNS (srvv-dns) +# +# Responsabilidad: Comandos para administración de CoreDNS +# +# Uso: +# ./adn/tools/run dns help # Ayuda +# ./adn/tools/run dns status # Estado del servidor +# ./adn/tools/run dns zona # Listar zona activa +# ./adn/tools/run dns registros # Listar todos los registros +# ./adn/tools/run dns buscar +# ./adn/tools/run dns backup # Crear backup de zona +# ./adn/tools/run dns reload # Forzar reload de CoreDNS + +require 'open3' +require 'time' +require_relative '../core/colores' + +module ADN + class SubcomandoDNS + SSH_HOST = 'rmonla@10.0.10.2' + SSH_OPTS = '-o StrictHostKeyChecking=no -o ConnectTimeout=10' + ZONA_PATH = '/docker/coreDNS/zones/frlr.utn.edu.ar.db' + COREFILE_PATH = '/docker/coreDNS/Corefile' + ZONA_NAME = 'frlr.utn.edu.ar' + + def initialize(args, logger) + @args = args + @logger = logger + end + + def ejecutar + if @args.empty? || @args[0] == 'help' + mostrar_ayuda + return + end + + comando = @args[0] + + case comando + when 'status' + status + when 'zona' + zona + when 'registros' + registros + when 'buscar' + buscar(@args[1]) + when 'backup' + backup + when 'reload' + reload + when 'corefile' + corefile + else + puts "#{Color::RED}✗ Comando DNS desconocido: #{comando}#{Color::RESET}" + mostrar_ayuda + exit 1 + end + end + + private + + def mostrar_ayuda + puts <<~HELP + #{Color::CYAN}🌐 DNS CLI — Gestión del servidor DNS (srvv-dns)#{Color::RESET} + + #{Color::GREEN}Uso:#{Color::RESET} ./adn/tools/run dns [args] + + #{Color::YELLOW}━━━ Comandos de Consulta ━━━#{Color::RESET} + #{Color::BOLD}status#{Color::RESET} Estado del servidor CoreDNS + #{Color::BOLD}zona#{Color::RESET} Información de la zona #{ZONA_NAME} + #{Color::BOLD}registros#{Color::RESET} Listar todos los registros DNS + #{Color::BOLD}buscar #{Color::RESET} Buscar registros por nombre + + #{Color::YELLOW}━━━ Comandos de Mantenimiento ━━━#{Color::RESET} + #{Color::BOLD}backup#{Color::RESET} Crear backup de la zona + #{Color::BOLD}reload#{Color::RESET} Forzar reload de CoreDNS + #{Color::BOLD}corefile#{Color::RESET} Mostrar configuración CoreDNS + + #{Color::YELLOW}Ejemplos:#{Color::RESET} + #{Color::DIM}# Ver estado del servidor#{Color::RESET} + ./adn/tools/run dns status + + #{Color::DIM}# Listar todos los registros#{Color::RESET} + ./adn/tools/run dns registros + + #{Color::DIM}# Buscar registros de ns8#{Color::RESET} + ./adn/tools/run dns buscar ns8 + + #{Color::DIM}# Crear backup antes de cambios#{Color::RESET} + ./adn/tools/run dns backup + HELP + end + + def status + puts "#{Color::CYAN}🌐 Estado del servidor DNS (srvv-dns)#{Color::RESET}\n\n" + + # Verificar conectividad + print " Conectividad SSH... " + if ssh_exec_simple('true') + puts "#{Color::GREEN}✅ OK#{Color::RESET}" + else + puts "#{Color::RED}❌ Fallido#{Color::RESET}" + return + end + + # Verificar contenedor CoreDNS + print " Contenedor CoreDNS... " + output = ssh_exec('docker ps --filter "name=coredns" --format "{{.Status}}"') + if output&.include?('Up') + puts "#{Color::GREEN}✅ Activo (#{output.strip})#{Color::RESET}" + else + puts "#{Color::RED}❌ Inactivo#{Color::RESET}" + end + + # Verificar puerto 53 + print " Puerto 53... " + output = ssh_exec('ss -tuln | grep ":53" | head -1') + if output&.include?('53') + puts "#{Color::GREEN}✅ Escuchando#{Color::RESET}" + else + puts "#{Color::RED}❌ Cerrado#{Color::RESET}" + end + + # Verificar zona + print " Zona #{ZONA_NAME}... " + output = ssh_exec("test -f #{ZONA_PATH} && echo 'exists' || echo 'missing'") + if output&.include?('exists') + puts "#{Color::GREEN}✅ Existente#{Color::RESET}" + else + puts "#{Color::RED}❌ No encontrada#{Color::RESET}" + end + + # Serial de zona + print " Serial de zona... " + serial = obtener_serial + if serial + puts "#{Color::GREEN}#{serial}#{Color::RESET}" + else + puts "#{Color::RED}❌ No se pudo leer#{Color::RESET}" + end + + puts "\n #{Color::DIM}Última consulta: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}#{Color::RESET}" + end + + def zona + puts "#{Color::CYAN}📋 Zona DNS: #{ZONA_NAME}#{Color::RESET}\n\n" + + serial = obtener_serial + puts " SOA Serial: #{serial || 'N/A'}" + + output = ssh_exec("cat #{ZONA_PATH}") + return unless output + + # Contar registros por tipo + registros = { 'A' => 0, 'CNAME' => 0, 'MX' => 0, 'TXT' => 0, 'NS' => 0, 'SRV' => 0 } + output.each_line do |line| + next if line.start_with?('$', ';') + registros.each_key do |tipo| + registros[tipo] += 1 if line.include?(" IN #{tipo} ") + end + end + + puts "\n Registros por tipo:" + registros.each do |tipo, count| + puts " #{tipo}: #{count}" if count > 0 + end + + # Nameservers + puts "\n Nameservers:" + output.each_line do |line| + puts " #{line.strip}" if line.include?(' IN NS ') + end + end + + def registros + output = ssh_exec("cat #{ZONA_PATH}") + return unless output + + puts "#{Color::CYAN}📋 Registros de zona #{ZONA_NAME}#{Color::RESET}\n\n" + puts "```\n" + + # Imprimir solo líneas de registros (no comentarios ni directivas) + output.each_line do |line| + line = line.strip + next if line.empty? || line.start_with?('$', ';', '(', ')') + puts line if line.include?(' IN ') + end + + puts "```" + end + + def buscar(nombre) + return puts "#{Color::RED}✗ Falta nombre a buscar#{Color::RESET}" unless nombre + + output = ssh_exec("cat #{ZONA_PATH}") + return unless output + + puts "#{Color::CYAN}🔍 Buscando '#{nombre}' en #{ZONA_NAME}#{Color::RESET}\n\n" + + encontrados = [] + output.each_line do |line| + line = line.strip + next if line.empty? || line.start_with?('$', ';') + encontrados << line if line.include?(nombre) + end + + if encontrados.empty? + puts " #{Color::RED}No se encontraron registros#{Color::RESET}" + else + puts "```\n" + encontrados.each { |l| puts l } + puts "```" + end + end + + def backup + timestamp = Time.now.strftime('%y%m%d-%H%M') + backup_path = "/docker/coreDNS/zones/bkp_#{timestamp}_frlr.utn.edu.ar.db" + + puts " Creando backup: #{File.basename(backup_path)}..." + + output = ssh_exec("cp #{ZONA_PATH} #{backup_path} && ls -la #{backup_path}") + if output + puts " #{Color::GREEN}✅ Backup creado#{Color::RESET}" + else + puts " #{Color::RED}❌ Error al crear backup#{Color::RESET}" + end + end + + def reload + puts " Forzando reload de CoreDNS..." + + output = ssh_exec("touch #{ZONA_PATH} && docker kill --signal=HUP coredns 2>/dev/null || echo 'reload manual'") + + if output + puts " #{Color::GREEN}✅ Reload solicitado#{Color::RESET}" + puts " #{Color::DIM}CoreDNS recargará la zona en ~30s#{Color::RESET}" + else + puts " #{Color::RED}❌ Error al solicitar reload#{Color::RESET}" + end + end + + def corefile + puts "#{Color::CYAN}⚙️ Corefile de CoreDNS#{Color::RESET}\n\n" + puts "```\n" + output = ssh_exec("cat #{COREFILE_PATH}") + puts output if output + puts "```" + end + + def ssh_exec(cmd) + full_cmd = "ssh #{SSH_OPTS} #{SSH_HOST} '#{cmd}'" + begin + stdout, stderr, status = Open3.capture3(full_cmd) + if status.success? + stdout.strip + else + $stderr.puts "#{Color::RED}SSH error: #{stderr.strip}#{Color::RESET}" + nil + end + rescue => e + $stderr.puts "#{Color::RED}Error en SSH: #{e.message}#{Color::RESET}" + nil + end + end + + def ssh_exec_simple(cmd) + full_cmd = "ssh #{SSH_OPTS} #{SSH_HOST} '#{cmd}'" + begin + _, _, status = Open3.capture3(full_cmd) + status.success? + rescue + false + end + end + + def obtener_serial + output = ssh_exec("grep -A5 'IN SOA' #{ZONA_PATH} | grep -oE '[0-9]{10}' | head -1") + output + end + end +end diff --git a/adn/tools/run b/adn/tools/run index dd8654f3..5c3ecd35 100755 --- a/adn/tools/run +++ b/adn/tools/run @@ -77,6 +77,7 @@ require_relative 'cli/msp' require_relative 'cli/wzombi' require_relative 'cli/dasuten' require_relative 'cli/digis' +require_relative 'cli/dns' require_relative 'bkps/bkps' require_relative 'cli/dron' require_relative 'proy/proy' @@ -165,6 +166,8 @@ class ADNCLI ADN::SubcomandoDron.new(args, @logger).ejecutar when 'digis' ADN::SubcomandoDigis.new(args, @logger).ejecutar + when 'dns' + ADN::SubcomandoDNS.new(args, @logger).ejecutar else @logger.error("Subcomando desconocido: #{subcomando}") puts "#{Color::RED}✗ Subcomando desconocido: '#{subcomando}'#{Color::RESET}" diff --git a/docs/ambito/dtic-DNS/A07.P001_Deteccion-Conexion-DNS.md b/docs/ambito/dtic-DNS/A07.P001_Deteccion-Conexion-DNS.md new file mode 100644 index 00000000..b91feb84 --- /dev/null +++ b/docs/ambito/dtic-DNS/A07.P001_Deteccion-Conexion-DNS.md @@ -0,0 +1,121 @@ +# Plan: Detección y Conexión al Servidor DNS + +> **Ámbito:** A07 — dtic-DNS + +**Código:** A07.P001 +**Fecha:** 07 de abril de 2026 +**Autor:** Sistema ADN +**Versión:** 1.0 +**Estado:** 🚧 EN EJECUCIÓN +**Dependencia:** Ninguna + +## 📋 Resumen Ejecutivo + +Establecer conexión y administración al servidor DNS **srvv-dns** (10.0.10.2, VM 112 en srv-pmox1), identificar su implementación (BIND en contenedor o servicio nativo), y habilitar un canal de gestión para operaciones de DNS. + +**Estado conocido:** +- Nodo detectado: `srvv-dns` (10.0.10.2) +- Hardware: 4GB RAM, 10GB disco (61% usado) +- Servicio BIND/named: 🔴 Inactivo en Systemd (posible contenedor Docker/LXC) + +## 📅 Fases de Implementación + +### ✅ **FASE 0: Preparación (COMPLETADA)** + +#### Tareas Iniciales +- [x] **0.1:** Crear ámbito dtic-DNS en `docs/ambito/dtic-DNS/` +- [x] **0.2:** Crear este plan en `A07.P001_Deteccion-Conexion-DNS.md` +- [x] **0.3:** Identificar nodo srvv-dns (10.0.10.2, VM 112 en srv-pmox1) + +### ✅ **FASE 1: Verificación del Servicio DNS (COMPLETADA)** + +#### Diagnóstico Realizado +- [x] **1.1:** Verificar conectividad a `srvv-dns` (ICMP OK, tiempo ~0.4ms) +- [x] **1.2:** Identificar implementación: **CoreDNS** en Docker (no BIND) +- [x] **1.3:** Verificar puerto 53 escuchando (53/tcp open, 53/udp abierto) +- [x] **1.4:** Consulta DNS funcional (`frlr.utn.edu.ar` → 190.114.205.20) +- [x] **1.5:** Actualizar ficha `nodos/srvv-dns.md` con estado real + +**Hallazgos:** +``` +- Contenedor: coredns (coredns/coredns:latest) +- Puertos: 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp +- Uptime: 28+ horas +- Logs: Consultas activas (www.frlr.utn.edu.ar, etc.) +``` + +### ✅ **FASE 2: Conexión al Servidor DNS (COMPLETADA)** + +#### Canal Establecido +- [x] **2.1:** SSH funcional con clave cargada (`ssh rmonla@10.0.10.2`) +- [x] **2.2:** Método de gestión identificado: Archivos de zona en `/docker/coreDNS/zones/` +- [x] **2.3:** Corefile ubicado: `/docker/coreDNS/Corefile` +- [x] **2.4:** Zona activa: `frlr.utn.edu.ar.db` con 20+ registros +- [x] **2.5:** Registrar método de conexión en `nodos/srvv-dns.md` + +### ✅ **FASE 3: Inventario de Zonas DNS (COMPLETADA)** + +#### Relevamiento Completado +- [x] **3.1:** Listar zonas DNS activas (frlr.utn.edu.ar) +- [x] **3.2:** Identificar registros críticos (20+ registros A, CNAME, MX, TXT, SRV) +- [x] **3.3:** Mapear nombres de host a IPs conocidas (documentado en `nodos/srvv-dns.md`) +- [x] **3.4:** Documentar estructura de zonas en `nodos/srvv-dns.md` + +### ✅ **FASE 4: Automatización (COMPLETADA)** + +#### Herramientas ADN Implementadas +- [x] **4.1:** `./adn/tools/run dns status` - Estado del servidor +- [x] **4.2:** `./adn/tools/run dns zona` - Información de zona +- [x] **4.3:** `./adn/tools/run dns registros` - Listar registros +- [x] **4.4:** `./adn/tools/run dns buscar ` - Buscar registros +- [x] **4.5:** `./adn/tools/run dns backup` - Crear backup +- [x] **4.6:** `./adn/tools/run dns reload` - Forzar reload +- [x] **4.7:** `./adn/tools/run dns corefile` - Ver configuración + +--- + +## 🎯 Criterios de Éxito + +| Fase | Criterio | Verificación | +| :--- | :--- | :--- | +| **Detección** | IP y método de acceso identificados | ✅ `nodos/srvv-dns.md` completo | +| **Conexión** | Acceso remoto funcional | ✅ SSH testeado (clave cargada) | +| **Inventario** | Lista de zonas documentada | ✅ Zona `frlr.utn.edu.ar` documentada | +| **Automatización** | CLI `dns.rb` operativo | ✅ `./adn/tools/run dns status` funcional | + +## 📝 Notas Técnicas + +### Puertos DNS Comunes +| Puerto | Protocolo | Uso | +| :--- | :--- | :--- | +| 53 | UDP/TCP | DNS estándar | +| 8053 | TCP | DNS alternativo (CoreDNS, etc.) | +| 5353 | UDP | mDNS (Bonjour/Avahi) | +| 8080/443 | TCP | APIs web (PowerDNS, etc.) | + +### Implementaciones DNS Comunes +| Implementación | Puerto | Método de Gestión | +| :--- | :--- | :--- | +| BIND (named) | 53 | SSH + rndc / editar zone files | +| PowerDNS | 53 + 8081 | API REST | +| dnsmasq | 53 | SSH + editar `/etc/dnsmasq.conf` | +| Windows DNS | 53 | PowerShell remoting / DNS Manager | +| CoreDNS | 53 | Config file + reload | + +## 🔄 Armonía Integral + +**Última actualización:** 2026-04-07 (Fases 1-4 completadas - CLI DNS operativa) + +| Documento | Estado | Notas | +| :--- | :--- | :--- | +| `A07_dtic-DNS.md` | ✅ Creado | Manifiesto del ámbito | +| `A07.P001_Deteccion-Conexion-DNS.md` | ✅ Fase 1-4 | Detección, conexión y automatización completadas | +| `nodos/srvv-dns.md` | ✅ Actualizado | Implementación: CoreDNS en Docker | +| `adn/tools/cli/dns.rb` | ✅ Operativo | CLI DNS con 7 subcomandos | + +--- + +## Referencias + +- **CLI ADN**: `./adn/tools/run dns help` (por crear) +- **Bitácoras**: `./adn/tools/run db evento:listar --ambito dtic-DNS` diff --git a/docs/ambito/dtic-DNS/A07_dtic-DNS.md b/docs/ambito/dtic-DNS/A07_dtic-DNS.md new file mode 100644 index 00000000..c2a66795 --- /dev/null +++ b/docs/ambito/dtic-DNS/A07_dtic-DNS.md @@ -0,0 +1,125 @@ +# A07 - Ámbito dtic-DNS + +> Manifiesto de Ámbito | Referencia: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md) + +## Identificación + +| Campo | Valor | +| :--- | :--- | +| **Código** | A07 | +| **Nombre** | Administración DNS de la Facultad | +| **Estado** | ✅ Operativo | +| **Inicio** | 07/04/2026 | +| **Fin Estimado** | Continuo (operación y mantenimiento) | + +## Objetivo + +El ámbito **dtic-DNS** engloba todas las operaciones relacionadas con la administración y gestión del servidor DNS de la Facultad (**srvv-dns**). + +Este ámbito cubre: + +1. **Gestión de CoreDNS** — Administración del servidor DNS basado en CoreDNS (Docker). +2. **Zonas DNS** — Mantenimiento de la zona `frlr.utn.edu.ar` y sus registros. +3. **Consultas y diagnóstico** — Herramientas CLI para verificación del estado DNS. +4. **Backups** — Resguardos automáticos de la configuración de zona antes de cambios. + +## Herramientas + +| Herramienta | Uso | +| :--- | :--- | +| **CoreDNS** | Servidor DNS en contenedor Docker (puerto 53) | +| **ADN CLI `dns`** | `./adn/tools/run dns ` — herramientas de gestión DNS | +| **ADN CLI `dron`** | `./adn/tools/run dron` — vigía de tareas largas con auto-bitácora | + +## Nodos Involucrados + +### Núcleo DNS (Exclusivos del Ámbito) + +| Nodo | IP / VMID | Rol en el Ámbito | +| :--- | :--- | :--- | +| **srvv-dns** | `10.0.10.2` / VM 112 | Servidor DNS primario de la Facultad | +| **srv-pmox1** | `10.0.10.201` | Hipervisor Proxmox (anfitrión de srvv-dns) | + +### Nodos de Soporte + +| Nodo | IP | Rol en el Ámbito | +| :--- | :--- | :--- | +| **srv-ns8** | `10.0.10.8` | Gestión central, GIT, punto de acceso para administración | + +## Tareas Configuradas + +| ID | Descripción | Tipo | +| :--- | :--- | :--- | +| `dns_status` | Verificar estado del servidor DNS | status | +| `dns_backup` | Crear backup de zona antes de cambios | backup | +| `dns_reload` | Forzar recarga de CoreDNS | reload | + +## Flujo de Trabajo Típico + +``` +1. Registrar evento en bitácora (inicio de jornada DNS) +2. Verificar estado: ./adn/tools/run dns status +3. Crear backup: ./adn/tools/run dns backup +4. Realizar cambios (editar zona en srvv-dns) +5. Forzar reload: ./adn/tools/run dns reload +6. Cerrar evento en bitácora +``` + +### Subcomandos DNS disponibles + +```bash +./adn/tools/run dns help # Ayuda +./adn/tools/run dns status # Estado del servidor +./adn/tools/run dns zona # Información de zona +./adn/tools/run dns registros # Listar todos los registros +./adn/tools/run dns buscar # Buscar por nombre +./adn/tools/run dns backup # Crear backup +./adn/tools/run dns reload # Forzar reload +./adn/tools/run dns corefile # Ver configuración CoreDNS +``` + +## Planes Asociados + +| Código | Nombre | Estado | +| :--- | :--- | :--- | +| [A07.P001](A07.P001_Deteccion-Conexion-DNS.md) | Detección y Conexión al Servidor DNS | ✅ Completado | + +## 🛸 Sistema de Drones (Operación Autónoma) + +**Herramienta:** `./adn/tools/run dron ` + +| Subcomando | Función | +| :--- | :--- | +| `dron lanzar --evento ID/AUTO --nota "X" -- ` | Lanzar tarea en background con auto-bitácora | +| `dron flota` | Dashboard compacto de la flota | +| `dron salud` | Health check activo (detecta zombies/estancados) | +| `dron estado` | Estado detallado de cada dron | +| `dron limpiar` | Limpiar tareas completadas/fallidas | + +**Evento AUTO:** Crea evento de bitácora automáticamente y lo cierra al finalizar. El `tarea_id` del dron se incluye en la descripción del evento con formato `🛸 dron_HHMMSS_PID: `. + +**Ejemplo:** +```bash +./adn/tools/run dron lanzar --evento AUTO --nota "Detección DNS" -- ./adn/tools/run dns detectar +``` + +## 🔄 Armonía Integral + +**Última actualización:** 2026-04-07 (ámbito operativo - CLI DNS implementada) + +| Documento | Estado | Notas | +| :--- | :--- | :--- | +| `A07_dtic-DNS.md` | ✅ Creado | Manifiesto del ámbito | +| `A07.P001_Deteccion-Conexion-DNS.md` | ✅ Completado | Plan inicial completado | +| `nodos/srvv-dns.md` | ✅ Actualizado | Ficha técnica completa | +| `adn/tools/cli/dns.rb` | ✅ Operativo | CLI con 7 subcomandos | + +--- + +## Referencias + +- **CLI DNS**: `./adn/tools/run dns help` +- **Código fuente**: [`adn/tools/cli/dns.rb`](../../../adn/tools/cli/dns.rb) +- **ADN Ontología**: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md) +- **Bitácoras**: `./adn/tools/run db evento:listar --ambito dtic-DNS` +- **Nodo srvv-dns**: [`nodos/srvv-dns.md`](../../../nodos/srvv-dns.md) diff --git a/nodos/srvv-dns.md b/nodos/srvv-dns.md index 99031018..19046e63 100644 --- a/nodos/srvv-dns.md +++ b/nodos/srvv-dns.md @@ -3,7 +3,7 @@ ## Información General - **Hostname**: `srvv-dns` - **IP**: `10.0.10.2` -- **Rol**: Servidor DNS (Presunto) +- **Rol**: Servidor DNS Primario de la Facultad - **Estado**: 🟢 Online - **OS**: Debian 12 (Bookworm) @@ -18,12 +18,59 @@ - **Almacenamiento**: 10 GB (61% usado) ## Cargas de Trabajo -- **Servicios Detectados**: - - `bind9`: 🔴 Inactivo / No encontrado. - - `named`: 🔴 Inactivo / No encontrado. -- **Motor Docker**: Estado desconocido (no verificado). +- **Servicio DNS**: 🟢 **CoreDNS** (Docker) + - Imagen: `coredns/coredns:latest` + - Contenedor: `coredns` + - Puertos: `0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp` + - Uptime: 28+ horas + - Logs activos (consultas DNS resolviéndose) +- **Motor Docker**: 🟢 Activo ## Análisis de Salud - **Uso de RAM**: Bajo (500Mi usado). - **Disco**: **61% Ocupado** (Base de 10GB). -- **Alerta**: El servicio DNS principal no parece estar corriendo vía Systemd. ¿Posible contenedor? +- **DNS**: Operativo — responde consultas a `frlr.utn.edu.ar` (190.114.205.20) + +## Acceso y Gestión +- **SSH**: `ssh rmonla@10.0.10.2` ✅ Funcional (clave SSH cargada) +- **Gestión DNS**: Edición directa de archivos de zona +- **Corefile**: `/docker/coreDNS/Corefile` (montado en el contenedor) +- **Zonas**: `/docker/coreDNS/zones/` (frlr.utn.edu.ar.db) +- **Reload**: Automático vía plugin `reload` de CoreDNS (detecta cambios) + +## Zona DNS: frlr.utn.edu.ar + +| Tipo | Nombre | Valor/Target | Notas | +| :--- | :--- | :--- | :--- | +| **SOA** | @ | ns1.frlr.utn.edu.ar. | Serial: 2025120501 | +| **NS** | @ | ns1.frlr.utn.edu.ar. | DNS primario | +| **NS** | @ | ns3.utn.edu.ar. | DNS secundario (190.114.221.1) | +| **A** | ns1 | 190.114.205.2 | DNS server | +| **A** | @ | 190.114.205.20 | Dominio principal | +| **A** | www | 190.114.205.20 | Sitio web | +| **A** | dns | 190.114.205.2 | Servidor DNS | +| **A** | mail | 190.114.205.2 | Servidor de correo | +| **A** | s0 | 190.114.205.4 | Sitio 0 WebApps | +| **A** | pmox | 190.114.205.6 | Proxmox VE | +| **A** | upt | 190.114.205.9 | UpTimeWebs | +| **A** | sysacad | 190.114.205.10 | Sistema Académico | +| **A** | ftp | 190.114.205.14 | Servidor FTP | +| **A** | n8n | 190.114.205.15 | n8n Automation | +| **A** | ns7 | 190.114.205.17 | Servidor ns7 | +| **A** | ns8 | 190.114.205.18 | Servidor ns8 | +| **A** | *.ns8 | 190.114.205.18 | Wildcard ns8 | +| **A** | s2 | 190.114.205.19 | SITIO2 | +| **A** | koha | 190.114.205.29 | Biblioteca | +| **MX** | @ | frlr-utn-edu-ar.mail.protection.outlook.com | Exchange Online | +| **TXT** | @ | v=spf1 ... | SPF record | +| **TXT** | @ | google-site-verification=... | Google Search Console | +| **TXT** | mail._domainkey | v=DKIM1; k=rsa; p=... | DKIM key | +| **CNAME** | autodiscover | autodiscover.outlook.com | Exchange | +| **CNAME** | sip | sipdir.online.lync.com | Lync/Skype | +| **CNAME** | lyncdiscover | webdir.online.lync.com | Lync Web | +| **SRV** | _sip._tls | 100 1 443 sipdir.online.lync.com | SIP TLS | +| **SRV** | _sipfederationtls._tcp | 100 1 5061 sipfed.online.lync.com | SIP Federation | + +### Backups de Zona +- Ubicación: `/docker/coreDNS/zones/bkp_*.db` +- Último backup: `bkp_251205-2007_frlr.utn.edu.ar.db` (2025-12-05) diff --git a/servicios/nginx/ns8-apps/reparar.sh b/servicios/nginx/ns8-apps/reparar.sh new file mode 100644 index 00000000..1b84afbe --- /dev/null +++ b/servicios/nginx/ns8-apps/reparar.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Script para reparar el contenedor srvv-apps (tinyfilemanager) +# Ejecutar en srv-ns8 con: sudo bash reparar.sh + +echo "🔧 Reparando contenedor srvv-apps..." + +# 1. Eliminar directorio index.php erróneo +echo " 1. Eliminando directorio index.php incorrecto..." +rm -rf /home/rmonla/Documentos/GitHub/dtic-srv-NS8/servicios/nginx/ns8-apps/index.php + +# 2. Descargar el archivo index.php correcto +echo " 2. Descargando index.php desde GitHub..." +curl -sL https://raw.githubusercontent.com/tinyfilemanager/tinyfilemanager/master/index.php \ + -o /home/rmonla/Documentos/GitHub/dtic-srv-NS8/servicios/nginx/ns8-apps/index.php + +# 3. Verificar descarga +if [ -f /home/rmonla/Documentos/GitHub/dtic-srv-NS8/servicios/nginx/ns8-apps/index.php ]; then + echo " ✅ index.php descargado correctamente" + ls -la /home/rmonla/Documentos/GitHub/dtic-srv-NS8/servicios/nginx/ns8-apps/index.php +else + echo " ❌ Error al descargar index.php" + exit 1 +fi + +# 4. Iniciar contenedor +echo " 3. Iniciando contenedor srvv-apps..." +docker start srvv-apps + +# 5. Verificar estado +sleep 2 +if docker ps | grep -q srvv-apps; then + echo " ✅ Contenedor srvv-apps iniciado exitosamente" + docker ps | grep srvv-apps +else + echo " ⚠️ El contenedor no se mantuvo running. Revisando logs..." + docker logs srvv-apps --tail 20 + exit 1 +fi + +echo "✅ Reparación completada. El servicio apps debería estar disponible en srv-ns8/apps"