Files
dtic-DIIAA/automatizacion/configurar_red_hibrida.sh

82 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# scripts/configurar_red_hibrida.sh
# CONFIGURACIÓN DE RED HÍBRIDA (Policy Routing)
# Objetivo:
# - Mantener Gateway Default 10.0.10.1 (Navegación Rápida).
# - Habilitar IP Pública 190.114.205.18 para acceso entrante.
# - Responder tráfico entrante de 190... por su propio Gateway (190.114.205.1).
CON_NAME="Red LAN 10"
IP_PUB="190.114.205.18/24"
GW_PUB="190.114.205.1"
TABLE_ID="190"
TIMEOUT_SEC=300 # 5 Minutos
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}Ejecutar con sudo.${NC}"
exit 1
fi
echo -e "${YELLOW}Configurando Red Híbrida en conexión '$CON_NAME'...${NC}"
# 1. Agregar IP Pública (si no existe ya)
# Nota: nmcli es idempotente para esto si se usa correctamente, pero limpiaremos "ipv4.addresses" duplicadas si es manual.
# Aquí simplemente agregamos.
echo -e "[1/4] Agregando IP Pública $IP_PUB..."
nmcli con mod "$CON_NAME" +ipv4.addresses "$IP_PUB"
# 2. Agregar Ruta a Tabla Secundaria
# Sintaxis: ip/prefix next-hop priority attributes
echo -e "[2/4] Configurando ruta de retorno (Tabla $TABLE_ID)..."
nmcli con mod "$CON_NAME" +ipv4.routes "0.0.0.0/0 $GW_PUB 100 table=$TABLE_ID"
# 3. Agregar Regla de Enrutamiento
# Sintaxis: priority from <ip> table <id>
echo -e "[3/4] Configurando regla de política (Policy Rule)..."
nmcli con mod "$CON_NAME" +ipv4.routing-rules "priority 30000 from ${IP_PUB%/*} table $TABLE_ID"
# 4. Aplicar Cambios (Temporales para validación)
echo -e "Aplicando configuración... (Si pierdes conexión, espera $TIMEOUT_SEC segundos)"
nmcli con mod "$CON_NAME" +ipv4.addresses "$IP_PUB"
nmcli con mod "$CON_NAME" +ipv4.routes "0.0.0.0/0 $GW_PUB 100 table=$TABLE_ID"
nmcli con mod "$CON_NAME" +ipv4.routing-rules "priority 30000 from ${IP_PUB%/*} table $TABLE_ID"
nmcli con up "$CON_NAME"
# --- VERIFICACIÓN / ROLLBACK LOOP ---
echo -e "\n${GREEN}*** CAMBIOS APLICADOS ***${NC}"
echo "Verifica que tienes conectividad (tanto LAN como WAN)."
echo "Tienes $TIMEOUT_SEC segundos para confirmar escribiendo 's' y Enter."
CONFIRMADO=0
for ((i=TIMEOUT_SEC; i>0; i--)); do
echo -ne " Tiempo restante para ROLLBACK: $i segundos \r"
read -t 1 -n 1 key
if [[ $key = "s" ]] || [[ $key = "S" ]]; then
CONFIRMADO=1
break
fi
done
if [ $CONFIRMADO -eq 1 ]; then
echo -e "\n\n${GREEN}¡CONFIRMADO! Configuración de Red Híbrida establecida.${NC}"
exit 0
else
echo -e "\n\n${RED}¡TIEMPO AGOTADO! REVIERTIENDO CAMBIOS...${NC}"
# Revertir (Undo)
echo "Eliminando reglas..."
nmcli con mod "$CON_NAME" -ipv4.addresses "$IP_PUB"
nmcli con mod "$CON_NAME" -ipv4.routes "0.0.0.0/0 $GW_PUB 100 table=$TABLE_ID"
nmcli con mod "$CON_NAME" -ipv4.routing-rules "priority 30000 from ${IP_PUB%/*} table $TABLE_ID"
echo "Recargando conexión..."
nmcli con up "$CON_NAME"
echo -e "${GREEN}Sistema restaurado al estado original.${NC}"
fi