Cuando se utiliza una VPN como Strongswan basada en IPSec con los protocolos de intercambios de claves IKEv1 y IKEv2 todo va de maravillas y «nada puede malir sal».
Pueden leer un excelente resumen acerca de lo que es strongSwan en el siguiente enlace web:
https://web.archive.org/web/20240312004501/https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/StrongswanCPE.htm
Para instalar (servidor y cliente) Strongswan en Ubuntu 22 consulten el siguiente tutorial en DigitalOcean (donde estamos hospedados al momento de escribir estas líneas):
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-22-04
Tabla de contenido:
Dos interfaces de red
El problema es que strongSwan viene configurado por defecto a enviar absolutamente todo al servidor VPN y de allí pues a su destino, ya sea dentro de una red de área local o al internet.
En este caso la VPN conecta a internet por medio de una dirección IPv4 fija (servidor strongSwan) y el ordenador utilizado (cliente strongSwan) tiene una interfaz de red cableado (NIC con Ethernet) y una interfaz de red inalámbrica (Wifi 5, mejor conocida como norma 802.11ac
).
Ambas interfaces están conectadas cada una a diferentes enrutadores con IPv4 y a su vez cada enrutador tiene diferente ISP.
El problema surge cuando se necesita conectar a un servidor FTP para uso exclusivo en la red de área local (LAN) de uno de los enrutadores, pues que sencillamente no conecta nada de nada, todo el tráfico lo envía al internet por medio del servidor strongSwan.
Después de mucho buscar y recolectar las configuraciones, las cuales incluyen la tediosa tarea de utilizar ip route
ya que strongSwan utiliza POLÍTICAS de enrutamiento de «alto nivel» en vez de configuraciones de red de «bajo nivel» pues que tanto trabajo no me convencía para nada, así que seguimos investigando hasta que dimos en el punto exacto.
Solución
La mejor solución al caso es utilizar un complemento (plugin) que viene instalado por defecto con strongSwan y precisamente viene desactivado en su funcionamiento.
Para habilitar el bypass-lan (así se llama) se edita el fichero /etc/strongswan.d/charon/bypass-lan.conf
y se agrega la siguiente línea (o se edita y se «descomenta» la que ya está agregada):
bypass-lan {
# A comma-separated list of network interfaces for which connected subnets
# should be ignored, if interfaces_use is specified this option has no
# effect.
# interfaces_ignore =
# A comma-separated list of network interfaces for which connected subnets
# should be considered. All other interfaces are ignored.
# interfaces_use =
# Whether to load the plugin. Can also be an integer to increase the
# priority of this plugin.
# load = no
load = yes
}
La línea clave es load = yes
tras lo cual guardamos el fichero y reiniciamos el servicio strongSwan. Nota: directamente se pudiera editar y agregar en el archivo /etc/strongswan.conf
, cosa que desaconsejo en este software tan complejo que llama a cargar ficheros y subdirectorios con ficheros de configuración, presento lo que se ve al ser instalado en Ubuntu 22:
Por último, otra recomendación que tal vez les sea de utilidad es configurar el enrutador donde se hospedan los servicios LAN (en este ejemplo FTP, que también podría ser un servidor Samba o una impresora de red, etcétera) para que niegue la salida a internet al cliente strongSwan.