View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Configurar una VPN IPSec con strongswan en cloudy para realizar pruebas con SIEMENS

Se quiere realizar una conexión por VPN IPSec a Siemens para unas pruebas. Es necesario saber un poco sobre IPSec para poderlo configurar.

Nos informan de que la arquitectura será la siguiente:
Uploaded Image: vpn-siemens-sice.png

Notas y cambios con respecto al esquema:
  • (ESTO PARECE ANTIGUO) 192.168.21.0/25 para el lado de SIEMENS y 192.168.21.128/25 para el de SICE. Reservar la ip 192.168.21.126 para el fw de SIEMENS.
  • (NO COINCIDE CON EL ESQUEMA, en el esquema es 10.22.2.0/24, ¿errata?) La red de SIEMENS será 10.22.20.0/24

Para hacerlo se usa un strongswan a cloudy (3.0.1.48) siguiendo diversos tutoriales:

Antes de empezar, para pasar el "secret" a hexadecimal, he usado el siguiente comando:
echo -n "0x" ;  hexdump -C /tmp/Clave\ psk.txt | cut -c 11-60 | tr -d '\n' | tr -d -d ' ';echo


En cloudy, como root, se ha hecho lo siguiente:

apt-get update
apt-get dist-upgrade
apt-cache search strongswan
apt-get install charon-cmd strongswan-charon
apt-get install strongswan-swanctl
apt-get install libstrongswan-extra-plugins
cd /etc/swanctl/
mv swanctl.conf swanctl.conf.orig
cat > swanctl.conf <<'EOF'
## example used: https://www.experts-exchange.com/questions/29267093/strongswan-to-Fortigate-site-to-site-VPN-with-PSK-issues.html
## NOTA: el local_addrs es 3.0.1.48 en vez de 83.48.87.215 por estar en NAT
connections {
   sico-to-siemens {
      local_addrs  = 3.0.1.48
      remote_addrs = 213.0.55.18
      local {
         auth = psk
         id =  sico.sicosoft.es
      }
      remote {
         auth = psk
         id = esmadsravc02v.railad.com
      }
      children {
         vpn-sico-to-siemens {
            local_ts  = 192.168.21.0/24
            remote_ts = 10.22.2.0/24 
            rekey_time = 28000s
            life_time = 3600s
            esp_proposals = aes256-sha256
            dpd_action = start
         }
      }
      version = 2
      mobike = no
      reauth_time = 10800
      proposals = aes256-sha256-modp2048
      dpd_delay = 20s
      dpd_timeout = 120s
      unique=replace
   }
}
secrets {
   ike-1 {
      id-moon = <redacted - strongswan FQDN>
      id-sun =  <redacted-strongswan FQDN>
      secret = Str0ntsW@n-S3cR3t
   }
}
EOF
cd /root
echo "/etc/swanctl/swanctl.conf" > swanctl.conf.donde
cat > vpn-siemens-start.sh <<'EOF'
#!/bin/bash
/etc/init.d/ipsec start
sleep 1
swanctl --load-all
swanctl --initiate --child vpn-sico-to-siemens
EOF
cat > vpn-siemens-stop.sh <<'EOF'
#!/bin/bash
swanctl --terminate --ike "ike-1" --force
ps -efa | grep "c[h]aron" | expand | sed "s/  */ /g" | cut -d ' ' -f 2 | xargs kill
EOF
echo -e '#!/bin/bash\nswanctl --stats' > vpn-siemens-status.sh
chmod a+x vpn-siemens-start.sh vpn-siemens-stop.sh vpn-siemens-status.sh


NOTA: Lo de id-moon id-sun no es necesario y se pueden borrar dichas líneas. Se usa sólo si es que hay claves diferentes para diferentes equipos (se ponen varios ike-loquesea cada uno con id-loquesea que corresponde al equipo que usa dicha clave). En nuestro caso sólo usamos el strongswan para una conexión, con lo que sólo hay una clave.


Para arrancarlo


En cloudy (3.0.1.48), como root:
cd /root/
./vpn-siemens-start.sh




Para pararlo


En cloudy (3.0.1.48), como root:
cd /root/
./vpn-siemens-stop.sh


Para ver el log


En cloudy (3.0.1.48), como root:
cd /root/
swanctl --stats
swanctl --log