Como elegir, usar y configurar una VPN en Elastix (Mi opinión)

Las VPN más recomendables para Elastix y por qué encajan

Trabajar con Elastix, la popular distro de comunicaciones unificadas basada en CentOS, implica enfrentarse a servidores casi siempre headless, gestiones vía SSH y, en muchos casos, paneles web como FreePBX. Su gestor de paquetes nativo es yum (o dnf en versiones más recientes), y el público objetivo suele ser administradores de centralitas VoIP, afines a entornos sencillos (GNOME mínimo, Webmin como GUI ligera) y con la necesidad de asegurar tanto la voz como datos sensibles.

Por estas circunstancias, las VPN ideales para Elastix deben cumplir:

  • Compatibilidad con CentOS 6/7/8 y sus kernels (2.6.x, 3.x y 4.x).
  • Disponibilidad en repositorios EPEL o instalación sencilla sin romper dependencias.
  • Bajo consumo de CPU para no interferir en la calidad de las llamadas SIP/RTP.
  • Configuración modular para poder automatizar despliegues vía Ansible o Bash.

De entre todas las opciones, las que mejores resultados me han dado en Elastix son:

  • OpenVPN
  • Strongswan (IPsec/IKEv2)
  • SoftEther VPN

Tabla comparativa de características

Solución Repositorio / Fuente Compatibilidad Kernel Rendimiento UDP Complejidad Web
OpenVPN EPEL (yum install openvpn) 2.6.x / 3.x / 4.x Media-Alta Media sitio oficial de OpenVPN
Strongswan (IPsec/IKEv2) EPEL (yum install strongswan) 2.6.x / 3.x / 4.x Alta Alta sitio oficial de Strongswan
SoftEther VPN Binarios oficiales o compilación 2.6.x / 3.x / 4.x Alta Media-Alta sitio oficial de SoftEther

1. OpenVPN: instalación y configuración básica

Instalación desde EPEL

# Activar EPEL si no lo tienes
yum install -y epel-release

# Instalar OpenVPN y easy-rsa
yum install -y openvpn easy-rsa

Generar certificados y claves

# Copiar plantillas de easy-rsa
cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

# Configurar vars básicas
sed -i s^# export KEY_COUNTRYexport KEY_COUNTRY vars
# Editar vars con tu información (país, ciudad, organización...)

source ./vars
./clean-all
./build-ca      # Autoridad certificadora
./build-key-server server
./build-dh
./build-key client1

Configuración del servidor

# Crear /etc/openvpn/server.conf
cat > /etc/openvpn/server.conf << EOF
port 1194
proto udp
dev tun
ca easy-rsa/keys/ca.crt
cert easy-rsa/keys/server.crt
key easy-rsa/keys/server.key
dh easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
cipher AES-256-CBC
user nobody
group nobody
verb 3
EOF

# Iniciar servicio
systemctl enable openvpn@server
systemctl start openvpn@server

2. Strongswan (IPsec/IKEv2): instalación y ajustes

Preparar repositorio y paquetes

yum install -y epel-release
yum install -y strongswan libcharon-extra-plugins

Configurar /etc/strongswan/strongswan.conf

# Sólo desactiva plugins innecesarios y ajusta logging
charon {
  load = aes des sha2 sha1 random nonce x509 revocation database pem
  # más plugins...
}

Configurar conexiones en /etc/strongswan/ipsec.conf

config setup
  uniqueids=never

conn roadwarrior
  keyexchange=ikev2
  ike=aes256-sha2_256-modp2048
  esp=aes256-sha2_256
  left=%any
  leftid=@elastix.example.com
  leftcert=serverCert.pem
  leftsendcert=always
  right=%any
  rightauth=eap-mschapv2
  rightsourceip=10.9.0.0/24
  rightsendcert=never
  eap_identity=%identity
  auto=add

Crear certificados

# Generación automática
ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --ca --lifetime 3650 --in caKey.pem 
  --type rsa --dn CN=Elastix VPN CA --outform pem > caCert.pem

ipsec pki --gen --outform pem > serverKey.pem
ipsec pki --pub --in serverKey.pem  
  ipsec pki --issue --lifetime 1825 --cacert caCert.pem --cakey caKey.pem 
  --dn CN=elastix.example.com --san elastix.example.com 
  --flag serverAuth --flag ikeIntermediate --outform pem > serverCert.pem

cp .pem /etc/strongswan/ipsec.d/

Arrancar el servicio

systemctl enable strongswan
systemctl start strongswan
# Ver logs
journalctl -u strongswan -f

3. SoftEther VPN: despliegue rápido

Descarga y compilación

yum install -y gcc make wget
cd /opt
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.34-9745-beta/softether-vpnserver-v4.34-9745-beta-2020.04.05-linux-x64-64bit.tar.gz
tar xzf .tar.gz
cd vpnserver
make

Configuración inicial y arranque

# Copiar a un directorio fijo
cp -r vpnserver /usr/local/
cd /usr/local/vpnserver
# Ajustar permisos
chmod 600 
chmod 700 vpnserver vpncmd

# Crear servicio systemd (versión simplificada)
cat > /etc/systemd/system/vpnserver.service << EOF
[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable vpnserver
systemctl start vpnserver

Desde aquí puedes conectar con vpncmd para crear Virtual Hubs, usuarios y puentes a tu red interna.

Conclusiones

En un entorno Elastix, donde la estabilidad y la ligereza son clave para mantener la calidad de la voz, OpenVPN y Strongswan ofrecen soluciones robustas y fáciles de automatizar. SoftEther, por su parte, aporta flexibilidad y múltiples protocolos en un solo paquete. Elige la que mejor encaje con tus necesidades de apertura de puertos y rendimiento, y asegúrate de probar en laboratorio antes de pasar a producción.

Download TXT




Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *