feat(A07_dtic-DNS): Ámbito DNS operativo + CLI para gestión de CoreDNS

- Crear ámbito A07_dtic-DNS con manifiesto y plan A07.P001
- Implementar CLI dns.rb con 7 subcomandos (status, zona, registros, buscar, backup, reload, corefile)
- Detectar servidor srvv-dns: CoreDNS en Docker (10.0.10.2, VM 112 en srv-pmox1)
- Documentar zona frlr.utn.edu.ar con 20+ registros (A, CNAME, MX, TXT, SRV)
- Actualizar ficha nodos/srvv-dns.md con información técnica completa
- Agregar script reparar.sh para ns8-apps (pendiente de ejecución)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ricardo Monla
2026-04-07 16:57:58 -03:00
co-authored by Claude Opus 4.6
parent be3a78c50a
commit a013811aa2
6 changed files with 627 additions and 6 deletions
+285
View File
@@ -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 <nombre>
# ./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 <subcomando> [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 <nombre>#{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
+3
View File
@@ -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}"
@@ -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 <nombre>` - 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`
+125
View File
@@ -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 <subcomando>` — 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 <nombre> # 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>`
| Subcomando | Función |
| :--- | :--- |
| `dron lanzar --evento ID/AUTO --nota "X" -- <cmd>` | 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: <nota>`.
**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)
+53 -6
View File
@@ -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)
+40
View File
@@ -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"