Conectando un linux a una VPN IPSEC de Fortigate
En este documento vamos a intentar describir todos los pasos que necesitaremos para conectar una máquina con linux a una VPN que esté ofreciendo un Fortigate, en este caso una VPN de tipo IPSEC. Un post que espero no albergue mucho misterio.
Este post lo baso en una máquina linux con Ubuntu, si estás usando otro SO no basado en Debian, entiendo que excepto la instalación, los demás pasos serán iguales, y la instalación similar, vaya. Que la máquina la tenemos actualizada, con un nombre, un direcciona miento IP… total, que empezamos! Instalaremos el cliente de VPN StrongSwan:
sudo apt install strongswan -y sudo apt install charon-systemd -y
Si queremos permitir el reenvío de paquetes a través de nosotros a la VPN, o sea, para otros equipos de la red del linux que se puedan conectar a la red de la VPN, editamos ‘sudo nano /etc/sysctl.conf’ y descomentamos las líneas siguientes, quedando:
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
Editamos el fichero de configuración de StrongSwan ‘sudo nano /etc/ipsec.conf’ y creamos la configuración de la VPN en base a la definición que haya en el lado de la VPN IPSEC en el Fortigate, quedando algo como esto (obviamente es posible que tengáis que cambiar algún valor, dependerá si os habéis salido de las configuraciones standard, así como aportar algunos direccionamientos):
config setup
charondebug = "dmn 1, mgr 1, ike 2, chd 1, job 1, cfg 3, knl 2, net 2, lib 1"
nat_traversal = yes
conn "FORTI_VPN"
type=tunnel
dpdaction=restart
keyexchange=ikev1
ikelifetime=1440m
keylife=60m
aggressive=yes
ike=aes128-sha1-modp1536
esp=aes128-sha1-modp1536
xauth=client
#leftid=LOCAL_ID #Si tenemos Local ID.
left=%defaultroute
leftsourceip=%config
leftauth=psk
rightid=%any
rightauth=psk
leftauth2=xauth
right=IP_PUBLICA_FORTIGATE
rightsubnet=RED_LADO_VPN/MASCARA
xauth_identity=NOMBRE_DE_USUARIO
auto=add
Creamos el fichero de secretos ‘sudo nano /etc/ipsec.secrets’ y con el siguiente formato añadimos y modificamos nuestros datos:
IP_PUBLICA_FORTIGATE : PSK "SECRETO_PRESHARED_KEY" NOMBRE_DE_USUARIO : XAUTH "CONTRASEÑA_DEL_USUARIO"
Recargamos y probamos a conectar la VPN…
sudo systemctl restart strongswan sudo ipsec update sudo ipsec reload sudo ipsec up FORTI_VPN
Como todo habrá ido bien 😉 es hora de crear un script para que se ejecute automáticamente al iniciarse el equipo, que conecte la VPN y que además, si la VPN se desconecta, que se intente conectar de nuevo, ‘nano /home/usuario/inicia_vpn.sh’ quedando algo como:
#!/bin/bash
while :
do
sudo ipsec status |grep "ESTABLISHED"
RET=$?
if [ ! $RET -eq 0 ];then
echo "[!] No hay tunel levantado, reconectando..."
sudo systemctl restart strongswan
sudo ipsec update
sudo ipsec reload
sudo ipsec up FORTI_VPN
fi
sleep 5
done
Hacemos el script ejecutable con ‘chmod +x /home/usuario/inicia_vpn.sh’ y lo ponemos en el cron para que cuando arranque la máquina linux se conecte sola, mediante ‘crontab -e’:
# m h dom mon dow command @reboot sleep 30 && sudo /home/usuario/inicia_vpn.sh
¡Y listo! Ya tendríamos una máquina linux conectada por la VPN IPSEC de un Fortigate, así como un scriptcillo que controlará la conectividad! Cómo diría Arguiñano… ¡Fácil, sencillo y para toda la familia! Ale, que os vaya muy bien, os mando un abrazo!!







































