Por un lado tendremos la Zona Norte que la configuraremos utilizando pfSense para configurar IPsec. Y el otro extremo, tendremos la Zona Sur donde la configuraremos utilizando Strongswan en un Debian 12.
De esta manera veremos como configurar dos extremos usando diferentes tecnologías. Para que se entienda correctamente que configuración de red vamos a utilizar he creado este diagrama de red para que quede claro que redes tiene cada zona.
Como podemos observar, en la Zona Norte configuraremos una red WAN que será la IP pública del servidor y luego una LAN que será la red local. Para ello usaremos una red del rango 192.168.1.0/24. Y en la Zona Sur, configuraremos una red WAN que será la IP pública del servidor y la LAN que será del rango 10.20.10.0/24.
Habilitar puertos en el 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
Configuración para pfSense
Lo primero que haremos será acceder a pfSense para configurar la LAN de la Zona Norte. Deberemos de revisar que pfSense tenga configurada tanto la WAN como la LAN, para ello iremos a Interfaces - Assignments y revisaremos que tenemos las dos redes configuradas:
Configurar LAN
Para configurar la LAN deberemos de ir a Interfaces - LAN y habilitaremos la interfaz marcando la opción Enable Interface.
Luego en la opción IPv4 Configuration Type seleccionaremos la opción Static IPv4 y en el apartado nuevo que aparece para IPv4 Configuration Type y configuramos la IP:
Para guardar cambios abajo del todo le damos a Save y luego le damos a Apply Changes
Configuración de IPsec
El siguiente paso es configurar el túnel IPSec para configurar la VPN. Primero configuramos la Phase 1 y luego la Phase 2.
Phase 1
Tendremos que ir a VPN - IPsec y hacer clic sobre el botón Add P1.
En las opciones que nos aparece deberemos de añadir lo siguiente. En Remote Gateway deberemos de poner la IP pública de la Zona Sur.
En el apartado Phase 1 Proposal generaremos una Pre-Shared Key haciendo clic sobre el botón amarillo.
Luego configuraremos el apartado Encryption Algorithm de la siguiente forma:
El Life Time lo configuraremos con 7200 segundos. Añadimos una descripción al principio de todo para identificarla y le damos a Save y luego a Apply Changes.
Phase 2
Ahora que tenemos configurada la Phase 1 configuraremos la segunda fase. Para ello deberemos de hacer clic sobre Show Phase 2 Entries y luego a Add P2.
En Remote Gateway deberemos de poner la IP privada de la Zona Sur. Según nuestro esquema de más arriba la IP Privada es 10.20.10.0/24.
En el siguiente apartado, el de cifrado, deberemos de marcar los algoritmos de AES con 265 bits y en Hash Algorithm marcamos la opción SHA1.
En Life Time deberemos de configurar 7200 segundos. Para guardar los cambios le damos a Save y luego a Apply Changes.
Comprobación de la conexión
En este tutorial aún tenemos que configurar el otro lado al que hemos llamado como Zona Sur, pero si estuviera configurada correctamente, podemos revisar si las dos fases se han conectado correctamente.
Esto desde pfSense se puede revisar Status - IPsec. En este apartado podremos observar que la Fase I se ha establecido correctamente y vemos que en el apartado de Status aparece un Established en verde. Por otro lado, en la Fase II podemos ver que el Status aparece como Installed.
Con las fases de esta forma, podemos decir que la conexión se ha realizado correctamente.
Ya tenemos por un lado configurado correctamente la Zona Sur de nuestra Site To Site, en el siguiente tutorial veremos como configurar la Zona Norte utilizando directamente un Debian y los paquetes correspondientes para IPSec.
En el segunda parte del 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.
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"
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
Resultado:
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
Fuentes:
https://voidnull.es/configurar-una-vpn-site-to-site-con-ipsec/
https://voidnull.es/configurar-una-vpn-site-to-site-con-ipsec-parte-ii/










Buen día, tengo una duda, ya tengo toda la configuración tal como me indicas pero la fase 1 me conecta, sin embargo, la fase 2 no me sube, en este caso, a qué se podría deber?
ResponderEliminarEste post es una copia de https://voidnull.es/configurar-una-vpn-site-to-site-con-ipsec/
ResponderEliminar