VPN sitio a sitio StrongSwan con un extremo con IP dinámica en Linux

En este caso voy a tener dos localidades uno llamado central que va a contar con IP publica estática y el otro extremo llamado sucursal1 que tendrá una IP publica dinámica.

Para este caso tomo las siguientes configuraciones de red.

Central

IP Lan: 192.168.0.1
Red local: 192.168.0.0/24
IP publica: 10.0.0.1

Sucursal1

IP Lan: 192.168.1.1
Red local: 192.168.1.0/24
IP publica: dinamica

Ya que uno de los extremos tiene una IP dinámica la única forma de crear el tunel sera usando certificados, en este caso X.509.

En el equipo central nos ubicamos en la carpeta /etc/ipsec.d y ejecutamos los siguientes comandos.

sudo su
cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/strongswanKey.pem
ipsec pki --self --ca --lifetime 3650 --in private/strongswanKey.pem --type rsa --dn «C=CH, O=strongSwan, CN=Root CA» --outform pem > cacerts/strongswanCert.pem
ipsec pki --gen --type rsa --size 2048 --outform pem > private/centralKey.pem
chmod 600 private/centralKey.pem
ipsec pki --pub --in private/central.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn «C=CH, O=strongSwan, CN=central» --san central --flag serverAuth --flag ikeIntermediate --outform pem > certs/centralCert.pem

Vamos a copiar los archivos /etc/ipsec.d/private/strongswanKey.pem y /etc/ipsec.d/private/strongswanKey.pem que fueron creados en las carpetas con el mismo nombre y ubicacion en el equipo de sucursal1.

Luego en sucursal1 nos ubicamos en la carpeta /etc/ipsec.d y ejecutamos los siguientes comandos.

sudo su
ipsec pki --gen --type rsa --size 2048 --outform pem > private/sucursal1Key.pem
chmod 600 private/sucursal1Key.pem
ipsec pki --pub --in private/sucursal1.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn «C=CH, O=strongSwan, CN=sucursal1» --san sucursal1 --flag serverAuth --flag ikeIntermediate --outform pem > certs/sucursal1Cert.pem

Archivo ipsec.conf en el sitio central.

# ipsec.conf - strongSwan IPsec configuration file
# basic configuration

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no

conn %default
conn myvpn
        type=tunnel
        reauth=yes
        auto=start
# -------------------- phase 1 --------------------------- #
        ike=aes256-sha1-modp1024
        keyexchange=ikev1
        ikelifetime=86400s
# -------------------- phase 2 --------------------------- #
        esp=aes256-sha1
        keylife=3600s
        left=10.0.0.1
        leftsubnet=192.168.0.0/24
        right=%dynamic
        rightsubnet=192.168.1.0/24
        leftcert=centralCert.pem
        leftid="C=CH, O=strongSwan, CN=central"
        rightid="C=CH, O=strongSwan, CN=sucursal1"

Archivo ipsec.secrets en sitio central.

# This file holds shared secrets or RSA private keys for authentication.

# RSA private key for this host, authenticating it to any other host
# which knows the public part.

: RSA centralKey.pem

Archivo ipsec.conf en sitio sucursal1.

# ipsec.conf - strongSwan IPsec configuration file
# basic configuration

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no

conn %default
conn myvpn
        type=tunnel
        reauth=yes
        auto=start
# -------------------- phase 1 --------------------------- #
        ike=aes256-sha1-modp1024
        keyexchange=ikev1
        ikelifetime=86400s
# -------------------- phase 2 --------------------------- #
        esp=aes256-sha1
        keylife=3600s
        left=192.168.1.1
        leftsubnet=192.168.1.0/24
        right=10.0.0.1
        rightsubnet=192.168.0.0/24
        leftcert=sucursal1Cert.pem
        leftid="C=CH, O=strongSwan, CN=sucursal1"
        rightid="C=CH, O=strongSwan, CN=central"

El archivo ipsec.secrets en el sitio sucursal1.

# This file holds shared secrets or RSA private keys for authentication.

# RSA private key for this host, authenticating it to any other host
# which knows the public part.

: RSA sucursal1Key.pem
A %d blogueros les gusta esto: