Instalación y configuración de SoftEther VPN (L2TP + IPSEC) en una Raspberry Pi para acceso a una red doméstica

Después de haber probado múltiples soluciones para la protección del tráfico de mis dispositivos empleando VPN (IPSEC + L2TP con OpenSwan) o a través de túneles SSH en una Raspberry Pi, me he decidido a usar una nueva solución muy interesante: SoftEther.

SoftEther (Software Ethernet) es una solución para la gestión de túneles VPN Open Source (Apache License 2.0), multiplataforma (se puede ejecutar en Windows, GNU/Linux, Mac, FreeBSD y Solaris) y que emplea múltiples protocolos (SSL-VPN, L2TP, IPsec, EtherIP, OpenVPN y Microsoft Secure Socket Tunneling Protocol) en una única solución que incluye tanto la parte de servidor como de cliente (roadwarrior). Incorpora funcionalidades de NAT-Transversal y es muy flexible en entornos protegidos por firewalls.

Este artículo describe el proceso de instalación y configuración de SoftEther en una Raspberry Pi (Debian) para permitir acceso remoto vía L2TP + IPSEC a una red doméstica. Esta es una configuración muy básica, ya que SoftEther soporta VPN site-to-site, ad-hoc, conexiones seguras con proveedores de servicios de cloud y otras muchas funcionalidades que pueden ser consultadas aquí: https://www.softether.org/4-docs/2-howto

NOTA: Debido a que la solución se encuentra muy bien documentada y es muy intuitiva, aquí simplemente se enumerarán los pasos seguidos junto con las guías del desarrollador y mis comentarios respecto a configuraciones puntuales y puntos que hay que tener en cuenta para que la solución funcione correctamente.

[Unit]
Description=SoftEther VPN Server daemon
After=network-online.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target
  • Activar ip forwarding: Editar el fichero /etc/sysctl.conf y adicionar la línea net.ipv4.ip_forward = 1. Habilitar estos cambios ejecutando:
#sysctl -p /etc/sysctl.conf
  • Hecho esto, habilitar el script e iniciar el daemon:
#systemctl enable vpn.service
#systemctl start vpn.service
  • Instalar SoftEther VPN Server Manager, una consola gráfica (GUI) que facilitará bastante la vida para las tareas de gestión de los túneles, la creación de usuarios, la visualización de registros de eventos, entre otros. Para ello, ir a https://www.softether-download.com/en.aspx y descargar e instalar el siguiente componente en un equipo Windows dentro de la red doméstica (este equipo debe estar en la misma red en la que está la Raspberry Pi):

  • Configurar la Pre-shared Key (PSK) que autenticará el túnel VPN IPSEC y deshabilitar el soporte para túneles sin encriptación.

  • Remover los servicios que no se necesiten: Debido a que la VPN que se empleará solamente IPSEC / L2TP, se recomienda deshabilitar el soporte para OpenVPN / MS-SSTP y conexiones con Azure.

  • Si se quiere, se puede emplear el servicio nativo de DNS dinámico, que permitirá acceder a la VPN a través de un nombre de host bajo el dominio softether.net en vez de hacerlo vía IP:

Notas adicionales:

  • En vez de crear un Local Bridge se puede hacer uso de la funcionalidad de Secure NAT. Aunque esto puede implicar algunos riesgos de seguridad, facilita el despliegue y la configuración del servidor:

  • Los registros de eventos están ubicados en /usr/local/vpnserver bajo server_log y security_log, aunque también se pueden acceder desde la GUI.
  • SoftEther incluye una consola de administración web basada en HTML 5 + AJAX. Es muy sencilla, ya que solamente se pueden ejecutar acciones muy limitadas y se accede vía HTTPS (puerto 443) del servidor VPN.

¡Espero que sea de utilidad!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.