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.
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.
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
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.
Más sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.
Comentarios