No estás usando esta distribución?

Selecciona una versión o distribución diferente

En artículos anteriores configuramos la Zona Sur de esta configuración que estamos realizando. En este artículo configuraremos la Zona Norte tal y como se indica en nuestro esquema:

Si te has perdido el primer artículo, te lo dejo aquí para que tengas más contexto de esta continuación del tutorial.

Configurar una VPN Site-to-Site con IPsec - Parte I
En este tutorial veremos como configurar uno de los lados pero habrá una segunda parte para configurar los dos extremos utilizando métodos diferentes.

En el siguiente tutorial vamos a ver como configurar la Zona Sur que se conectará a la Zona Norte. Este procedimiento lo haremos directamente en Debian 12.

Pasos previos

Antes de instalar paquetes y configurar servicios, hay que hacer una pequeña configuración para que funcione correctamente todo.

echo 'net.ipv4.ip_forward=1' | tee -a /etc/sysctl.conf

Comprobamos la configuración:

sysctl -p

Salida del comando

vm.swappiness = 0
vm.dirty_ratio = 60
vm.dirty_background_ratio = 20
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
kernel.printk = 3 4 1 3
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.ip_forward = 1

Configuración Firewall

Para que este entorno funcione correctamente es necesario habilitar los siguientes puertos:

  • Puerto 500 (TCP/UDP) - IPSec
  • Puerto 4500 (TCP/UDP) - IPSec2
  • Puerto 5500 (TCP/UDP) - IPSec NAT
  • Habilitar ICMP
  • Protocolo 50
  • Protocolo 51

Instalación de Strongswan

Para configurar IPsec en Debian utilizaremos el paquete de Strongswan que podemos encontrar en los repositorios de Debian.

apt install strongswan

Una vez hemos instalado el paquete deberemos de editar el fichero /etc/ipsec.conf con la siguiente configuración:

config setup
        charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
        ikelifetime=7200s
        keylife=6480s
        rekeymargin=5m
        keyingtries=3
        keyexchange=ikev2
        authby=secret
        ike=aes256-sha1-modp1024
        esp=aes256-sha1

conn ipsec-vpn-norte
       left=%any 
       leftid=%any 
       leftsubnet=10.20.10.0/24
       right=[IP_PUBLICA_SERVIDOR]
       rightid=%any 
       rightsubnet=192.168.1.0/24 
       auto=start

Primero de todo creamos un apartado %default donde habrá configuración común con todas las conexiones que tengamos que crear. En este caso solo habrá una, pero si queremos añadir más conexiones y comparten algunos valores, para no repetir parámetros se puede añadir directamente en este apartado.

Luego tendremos que crear la conexión que hemos llamado ipsec-vpn-norte que es la conexión que establecerá el túnel hacia la Zona Norte.

Es importante siempre rellenar los siguientes datos:

  • left: Dirección IP del servidor de StrongSwan.
  • leftsubnet: Redes del lado del servidor.
  • right: Dirección IP del otro extremo.
  • rightsubnet: Redes del otro extremo.
💡
Las subredes conocidas se pueden añadir en la misma línea separándolas por comas.

Configuración de la Clave Precompartida

La clave precompartida o PSK se utiliza para autenticar los dos extremos del túnel, para ello deberemos de editar el fichero /etc/ipsec.secrets y añadir lo siguiente:

: PSK "2fe1b2002ea68450ef87140fb49032cc5f8ae5bc458b6b08d9d60f6b"
💡
Si recordáis el primer tutorial, cuando se configura la primera fase se configura una Pre-Shared Key en pfSense. Debemos de poner el mismo valor para que funcione correctamente.

Una vez hemos configurado esto, podemos reiniciar IPsec para que se aplique la configuración

ipsec restart

Podemos ver el estado del túnel con:

ipsec statusall

Salida del comando

Status of IKE charon daemon (strongSwan 5.9.8, Linux 6.1.0-9-amd64, x86_64):
uptime: 3 hours, since Feb 12 21:01:32 2024
malloc: sbrk 1830912, mmap 0, used 1250800, free 580112
worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 4
loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs12 pgp dnskey sshkey pem openssl pkcs8 fips-prf gmp agent xcbc hmac kdf gcm drbg attr kernel-netlink resolve socket-default connmark stroke updown eap-mschapv2 xauth-generic counters
Listening IP addresses:
XXX,XXX,XXX.70
10.20.10.2
Connections:
ipsec-vpn-nord: %any...XXX,XXX,XXX.70 IKEv2
ipsec-vpn-nord: local: uses pre-shared key authentication
ipsec-vpn-nord: remote: uses pre-shared key authentication
ipsec-vpn-nord: child: 10.20.10.0/24 === 192.168.1.0/24 TUNNEL
Security Associations (1 up, 0 connecting):
ipsec-vpn-nord[5]: ESTABLISHED 74 minutes ago, XXX,XXX,XXX.70[XXX,XXX,XXX.70]...XXX,XXX,XXX.14[XXX,XXX,XXX.14]
ipsec-vpn-nord[5]: IKEv2 SPIs: dbd56a56d268d917_i dfc00a354e1b9c2b_r*, pre-shared key reauthentication in 38 minutes
ipsec-vpn-nord[5]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
ipsec-vpn-nord{183}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: c0a7f126_i c7687791_o
ipsec-vpn-nord{183}: AES_CBC_256/HMAC_SHA1_96, 0 bytes_i, 0 bytes_o, rekeying in 27 minutes
ipsec-vpn-nord{183}: 10.20.10.0/24 === 192.168.1.0/24

Ahora que en la salida del comando vemos que se ha establecido correctamente e instalado el túnel, podremos hacer ping a la interfaz privada del pfSense con IP 192.168.1.1:

# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.30 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.03 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.916 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.923 ms

Conclusión

En el siguiente tutorial veremos como crear usuarios en ambas partes para conectarse a la VPN y ver que como clientes podemos hacer ping a los diferentes dispositivos que están conectados a la VPN.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación