136 lines
4.5 KiB
Bash
Executable File
136 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Script para configurar UDP de forma segura según el caso de uso
|
|
|
|
set -e
|
|
|
|
# Colores
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${BLUE}🔧 Configuración segura de puertos UDP para LiveKit${NC}"
|
|
echo ""
|
|
|
|
# Preguntar caso de uso
|
|
echo "¿Cuál es tu caso de uso?"
|
|
echo "1) Solo red local (recomendado y seguro)"
|
|
echo "2) Acceso desde internet (complejo y riesgoso)"
|
|
echo "3) Mostrar configuración actual"
|
|
echo ""
|
|
read -p "Selecciona opción (1-3): " OPTION
|
|
|
|
case $OPTION in
|
|
1)
|
|
echo -e "${GREEN}✅ Configurando para RED LOCAL únicamente${NC}"
|
|
|
|
# Configurar firewall para solo red local
|
|
if command -v ufw &> /dev/null; then
|
|
echo "Configurando UFW para red local..."
|
|
|
|
# Permitir desde red local
|
|
sudo ufw allow from 192.168.0.0/16 to any port 50000:60000 proto udp comment "LiveKit UDP (red local)"
|
|
sudo ufw allow from 192.168.0.0/16 to any port 7880 proto tcp comment "LiveKit API (red local)"
|
|
sudo ufw allow from 192.168.0.0/16 to any port 80 proto tcp comment "HTTP (red local)"
|
|
|
|
# DENEGAR acceso externo a UDP
|
|
sudo ufw deny 50000:60000/udp comment "BLOQUEAR UDP externo"
|
|
|
|
echo -e "${GREEN}✅ Firewall configurado para red local${NC}"
|
|
sudo ufw status numbered
|
|
|
|
else
|
|
echo -e "${YELLOW}⚠️ UFW no disponible. Configurar manualmente:${NC}"
|
|
echo "- Permitir UDP 50000-60000 desde 192.168.x.x"
|
|
echo "- BLOQUEAR UDP desde internet"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}🔒 CONFIGURACIÓN SEGURA APLICADA:${NC}"
|
|
echo "- UDP 50000-60000: Solo red local"
|
|
echo "- Acceso web: http://192.168.1.19"
|
|
echo "- Sin port forwarding necesario"
|
|
echo "- Máxima seguridad"
|
|
;;
|
|
|
|
2)
|
|
echo -e "${RED}⚠️ CONFIGURACIÓN PARA ACCESO PÚBLICO${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}RIESGOS:${NC}"
|
|
echo "- 10,000 puertos UDP expuestos"
|
|
echo "- Posibles ataques de red"
|
|
echo "- Configuración compleja"
|
|
echo "- Problemas con NAT/CGNAT"
|
|
echo ""
|
|
echo -e "${BLUE}ALTERNATIVAS RECOMENDADAS:${NC}"
|
|
echo "1. LiveKit Cloud (sin UDP local)"
|
|
echo "2. VPN para usuarios remotos"
|
|
echo "3. TURN server para NAT traversal"
|
|
echo ""
|
|
read -p "¿Continuar con configuración pública? (y/N): " -n 1 -r
|
|
echo
|
|
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
echo -e "${RED}Configurando acceso público...${NC}"
|
|
|
|
if command -v ufw &> /dev/null; then
|
|
# Abrir UDP para todo el mundo (PELIGROSO)
|
|
sudo ufw allow 50000:60000/udp comment "LiveKit UDP PUBLICO"
|
|
sudo ufw allow 7880/tcp comment "LiveKit API PUBLICO"
|
|
sudo ufw allow 80/tcp comment "HTTP PUBLICO"
|
|
|
|
echo -e "${RED}❌ UDP EXPUESTO PÚBLICAMENTE${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${RED}⚠️ CONFIGURACIÓN APLICADA (RIESGOSA):${NC}"
|
|
echo "- UDP 50000-60000: PÚBLICO"
|
|
echo "- Configurar port forwarding en router"
|
|
echo "- Usar IP pública en livekit.yaml"
|
|
echo "- Considerar VPN o LiveKit Cloud"
|
|
|
|
else
|
|
echo -e "${GREEN}✅ Configuración pública cancelada${NC}"
|
|
fi
|
|
;;
|
|
|
|
3)
|
|
echo -e "${BLUE}📊 Configuración actual:${NC}"
|
|
|
|
# Verificar puertos UDP
|
|
echo ""
|
|
echo "Puertos UDP en uso:"
|
|
if command -v ss &> /dev/null; then
|
|
ss -ulnp | grep -E ":(5[0-9]{4})" | head -10
|
|
fi
|
|
|
|
# Verificar firewall
|
|
echo ""
|
|
echo "Reglas de firewall:"
|
|
if command -v ufw &> /dev/null; then
|
|
sudo ufw status numbered | grep -E "(50000|7880|80)"
|
|
fi
|
|
|
|
# Verificar IP externa
|
|
echo ""
|
|
echo "IP externa detectada:"
|
|
curl -s ifconfig.me || echo "No disponible"
|
|
|
|
echo ""
|
|
echo "IP local:"
|
|
hostname -I | awk '{print $1}'
|
|
;;
|
|
|
|
*)
|
|
echo -e "${RED}❌ Opción inválida${NC}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo -e "${BLUE}💡 RECOMENDACIÓN FINAL:${NC}"
|
|
echo "Para máxima seguridad y simplicidad:"
|
|
echo "- Usar solo en red local"
|
|
echo "- Para acceso remoto: VPN o LiveKit Cloud"
|
|
echo "- NO exponer 10,000 puertos UDP públicamente" |