82 lines
2.9 KiB
Bash
Executable File
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
|