Búsqueda de sitios web

Cómo configurar un servidor VPN multiprotocolo usando SoftEther


Introducción

Este artículo explica cómo instalar y configurar un servidor VPN multiprotocolo utilizando el paquete SoftEther. Habilitamos y configuramos OpenVPN y L2TP sobre servidores VPN IPSec y SSTP en Linux.

¿Qué es SoftEther?

SoftEther VPN es uno de los software VPN multiprotocolo más potentes y fáciles de usar del mundo, creado por la buena gente de la Universidad de Tsukuba, Japón. Se ejecuta en Windows, Linux, Mac, FreeBSD y Solaris y es gratuito y de código abierto. Puede usar SoftEther para cualquier uso personal o comercial de forma gratuita.

Paso 1: crear un servidor virtual

Primero, debe crear un Droplet de DigitalOcean. Como se menciona en el sitio web de SoftEther, SoftEther funcionará en casi todas las distribuciones de Linux con kernel v2.4 o superior; sin embargo, se recomienda elegir una de estas distribuciones: CentOS, Fedora o Red Hat Enterprise Linux.

Personalmente lo he probado en Ubuntu, CentOS y Fedora, ambas ediciones de 32 y 64 bits, y ha funcionado perfectamente.

Paso 2: actualice el software de su servidor

Con el siguiente comando, actualice y actualice los paquetes de software de su servidor a la última versión:

Debian/Ubuntu:

apt-get update && apt-get upgrade

CentOS/Fedora:

yum upgrade

Paso 3: Descarga SoftEther

Puede descargar el último paquete de servidor SoftEther para Linux desde su sitio web:

Descargar SoftEther

Desafortunadamente, no hay forma de obtener la última versión a través de administradores de paquetes (o incluso usando una sola URL) en este momento. Por lo tanto, debe navegar por su sitio web utilizando un navegador de escritorio para descargar el paquete. Hay un par de formas de lidiar con esto: primero, navegue por su sitio web en su propia computadora y luego, dependiendo de la configuración de su servidor (SO, x86/x64, etc.), busque el enlace al paquete apropiado y luego use wget para descargar el paquete a su servidor. Alternativamente, puede usar un navegador web basado en terminal como lynx para navegar por el sitio web de SoftEther y descargar el paquete correcto.

He aquí cómo hacerlo usando lynx:

Primero instala lynx en tu servidor:

Debian/Ubuntu:

apt-get install lynx -y

CentOS/Fedora:

yum install lynx -y

Ahora, usando el siguiente comando, navegue por la página web de descarga de SoftEther:

lynx http://www.softether-download.com/files/softether/

Esta página contiene todas las versiones de SoftEther disponibles. Elija la versión que desea (en este tutorial usamos v2.00-9387-rtm-2013.09.16) y luego presione Entrar para ir al enlace. Ahora elija Linux y en la página siguiente elija SoftEther VPN Server. Dependiendo de la arquitectura de hardware de su servidor, elija un paquete; el de 32 bits - Intel x86 y el de 64 bits - Intel x64 o AMD64 funcionan para las gotas de DigitalOcean de 32 o 64 bits. Finalmente, descargue el archivo tar de la página siguiente presionando la tecla \D” en el enlace y elija \Guardar en disco cuando Lynx se lo solicite. Después de guardar el archivo, podemos presionar \Q” para salir de Lynx y continuar con la instalación.

Paso 4: Instalar y configurar SoftEther

Ahora tenemos que extraer el paquete que recibimos de la página de descarga de SoftEther y compilarlo. El paquete utilizado en este tutorial se llama softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz, por lo que lo extraeremos con el siguiente comando:

 tar xzvf softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz

Después de extraerlo, se creará un directorio llamado vpnserver en la carpeta de trabajo. Para compilar SoftEther, las siguientes herramientas y paquetes deben estar instalados en su servidor:

hacer, gccbinutils (gcc), libc (glibc), zlib, openssl, readline y ncurses

Asegúrese de que estén instalados. Puede instalar todos los paquetes necesarios para construir SoftEther usando el siguiente comando:

Debian/Ubuntu:

apt-get install build-essential -y

CentOS/Fedora:

yum groupinstall "Development Tools"

Nota: En Fedora, descubrí que el paquete gcc no se instala con el comando anterior, por lo que debe instalarlo manualmente con yum install gcc.

Ahora que tenemos todos los paquetes necesarios instalados, podemos compilar SoftEther usando el siguiente comando:

Primero \cd” en el directorio vpnserver:

cd vpnserver

Y ahora ejecute \make para compilar SoftEther en un archivo ejecutable:

make

SoftEther le pedirá que lea y acepte su Acuerdo de licencia. Seleccione 1 para leer el acuerdo, nuevamente para confirmar la lectura y finalmente para aceptar el Acuerdo de licencia.

SoftEther ahora está compilado y convertido en archivos ejecutables (vpnserver y vpncmd). Si el proceso falla, verifique si tiene instalados todos los paquetes de requisitos.

Ahora que SoftEther está compilado, podemos mover el directorio vpnserver a otro lugar, aquí lo movemos a usr/local:

cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver/

Y luego cambie el permiso de los archivos para protegerlos:

chmod 600 *
chmod 700 vpnserver
chmod 700 vpncmd

Si desea que SoftEther comience como un servicio al inicio, cree un archivo llamado vpnserver en el directorio /etc/init.d y cámbielo a lo siguiente:

Primero crea y abre el archivo usando vi o nano:

vi /etc/init.d/vpnserver

Y pega lo siguiente en el archivo:

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

Finalmente guarde y cierre el archivo presionando esc y escribiendo :wq para cerrar vim.

Tenemos que hacer un directorio en /var/lock/subsys si no existe uno:

mkdir /var/lock/subsys

Ahora cambie el permiso para el script de inicio e inicie vpnserver usando el siguiente comando:

chmod 755 /etc/init.d/vpnserver && /etc/init.d/vpnserver start

Use el siguiente comando para que se ejecute al inicio:

Debian/Ubuntu:

update-rc.d vpnserver defaults

CentOS/Fedora:

chkconfig --add vpnserver 

SoftEther VPN Server ahora está instalado y configurado para ejecutarse al inicio. Finalmente, tenemos que verificar si el servidor VPN está funcionando:

cd /usr/local/vpnserver
./vpncmd

Ahora presione 3 para elegir Uso de herramientas VPN y luego escriba:

check

Si todos los controles pasan, entonces su servidor está listo para ser un servidor SoftEther VPN y puede pasar al siguiente paso. Escriba \salir” para salir de Herramientas VPN.

Hay dos formas de configurar el servidor SoftEther VPN: puede usar el administrador del servidor basado en Windows para administrar y configurar cualquier cantidad de servidores SoftEther VPN de forma remota; o use la herramienta vpncmd incorporada para configurar sus servidores.

Puede descargar SoftEther Server Manager para Windows usando su sitio web y hacer la configuración usando la GUI que proporciona, que es una forma preferible si es un usuario de Windows.

Aquí usamos vpncmd para configurar nuestro servidor VPN.

Paso 5: cambiar la contraseña de administrador

Ahora que tiene instalado el servidor SoftEther VPN, debe asignar una contraseña de administrador para usar con SoftEther. Puede hacer esto usando vpncmd, que es la herramienta de administración basada en la línea de comandos de SoftEther:

./vpncmd

Presione 1 para seleccionar \Administración de servidor VPN o puente VPN, luego presione Entrar sin escribir nada para conectarse al servidor localhost, y nuevamente presione Entrar sin ingresar nada para conectarse al servidor mediante el modo de administrador del servidor.

Luego use el comando a continuación para cambiar la contraseña de administrador:

ServerPasswordSet

Paso 6: crear un centro virtual

Para usar SoftEther primero debemos crear un Virtual Hub. Aquí, como ejemplo, creamos un concentrador llamado VPN, para hacerlo, ingrese el siguiente comando en la herramienta vpncmd:

HubCreate VPN

A continuación, se le pedirá que ingrese una contraseña de administrador para el concentrador. Esta contraseña se utilizará siempre que no haya iniciado sesión como administrador del servidor y desee administrar ese concentrador específico.

Ahora seleccione el centro virtual que creó usando este comando:

Hub VPN

Paso 7: habilite SecureNAT

Hay dos formas de conectar sus concentradores a la red del servidor: utilizando una conexión de puente local o utilizando la función SecureNAT.

Puede usar cada uno por separado, pero usar estos dos juntos causará problemas.

Aquí usamos SecureNAT, que es muy fácil de configurar y funciona bastante bien en la mayoría de las situaciones. También puede usar Local Bridge, pero también debe instalar y configurar un servidor DHCP.

SecureNAT es una combinación de la función Virtual NAT y DHCP Server. Puede habilitar SecureNAT usando el siguiente comando:

SecureNatEnable

Paso 8: crear y administrar usuarios

Ahora tenemos que crear usuarios para que nuestro Virtual Hub use la VPN. Podemos crear usuarios para nuestro Virtual Hub usando el comando UserCreate y ver la lista de usuarios actuales por UserList. Los usuarios pueden agregarse a grupos e incluso pueden tener diferentes tipos de modos de autenticación (incluidos: Contraseña, Certificado, RADIUS, NTLM, etc.).

Usando el comando UserCreate creamos un usuario llamado \test”:

UserCreate test

El tipo predeterminado de autenticación es Contraseña, pero podemos cambiarlo a un tipo diferente usando los siguientes comandos:

UserNTLMSet para autenticación de dominio NT

UserPasswordSet para autenticación de contraseña

UserAnonymousSet para autenticación anónima

UserRadiusSet para autenticación RADIUS

UserCertSet para autenticación de certificado individual

UserSignedSet para autenticación de certificado firmado

En este tutorial, usamos la contraseña como el modo de autenticación de usuario para nuestro usuario de prueba, por lo que al usar este comando, establezca una contraseña para la prueba de usuario:

UserPasswordSet test

Paso 9: Configurar L2TP/IPSec

Para habilitar el servidor VPN L2TP/IPsec, puede usar el siguiente comando:

IPsecEnable

Después de ingresar este comando, se le pedirá que configure las funciones del servidor L2TP:

Habilitar L2TP sobre la función de servidor IPsec: elija Sí para habilitar L2TP VPN sobre IPSec con cifrado de clave precompartida. Ahora puede realizar conexiones VPN a este servidor utilizando dispositivos iPhone, Android, Windows y Mac OS X.

Habilitar función de servidor Raw L2TP: Esto habilitará L2TP VPN para clientes sin cifrado IPSec.

Habilitar EtherIP/L2TPv3 sobre la función de servidor IPsec: los enrutadores que son compatibles con EtherIP/L2TPv3 sobre IPsec pueden conectarse a este servidor al habilitar esta función.

Clave precompartida para IPsec: ingrese una clave precompartida para usar con L2TP VPN.

HUB virtual predeterminado en caso de omitir el HUB en el nombre de usuario: los usuarios deben especificar el Hub virtual al que intentan conectarse usando Nombre de usuario@Nombre del hub de destino como su nombre de usuario al conectarse. Esta opción especifica qué centro virtual se utilizará si el usuario no proporciona dicha información. En nuestro caso ingrese VPN.

Paso 10: Configurar SSTP/OpenVPN

SoftEther puede clonar las funciones de Microsoft SSTP VPN Server y OpenVPN Server. Pero antes de habilitarlos, debemos generar un certificado SSL autofirmado para nuestro servidor. Puede usar el comando openssl o SoftEther para generar un certificado SSL.

Aquí usamos el comando ServerCertRegenerate de SoftEther para generar y registrar un certificado SSL autofirmado para nuestro servidor. El argumento que se pasa al comando es CN (Nombre común) y debe establecerse en su nombre de host (FQDN) o dirección IP:

ServerCertRegenerate [CN]

Nota 1: SoftEther también viene con una función DNS dinámica incorporada, que puede asignar un nombre de host único y permanente para su servidor. Puede usar el nombre de host asignado por esta función para crear un certificado SSL y conectarse a su servidor.

Nota 2: si ya tiene un certificado SSL o ha creado uno usando openssl, puede agregarlo al servidor usando el comando ServerCertSet.

Ahora que hemos creado el certificado, tenemos que descargar el certificado a nuestros clientes y agregarlos como de confianza. Usando el siguiente comando, guardamos el certificado del servidor en un archivo llamado cert.cer:

ServerCertGet ~/cert.cer

Ahora puede descargar el certificado a su cliente utilizando FileZilla o cualquier otro cliente SFTP.

Para que el certificado sea de confianza en Windows, debe instalarlo en el almacén de Autoridades de certificación raíz de confianza. Aquí hay un artículo que explica cómo (lea la parte Para instalar una cadena de certificados):

Instalación de una cadena de certificados

Ahora que hemos creado y registrado un Certificado SSL para nuestro servidor, podemos habilitar la función SSTP con este comando:

SstpEnable yes

Y para habilitar OpenVPN:

OpenVpnEnable yes /PORTS:1194

Nota: el puerto predeterminado de OpenVPN es 1194, pero puede cambiarlo a cualquier puerto que desee cambiando la parte /PORTS:1194 del comando anterior a su puerto o puertos deseados (sí, admite múltiples puertos).

Después de habilitar OpenVPN, puede descargar un archivo de configuración de muestra para el cliente OpenVPN. Aquí creamos un archivo de configuración de OpenVPN de muestra y lo guardamos en my_openvpn_config.zip:

OpenVpnMakeConfig ~/my_openvpn_config.zip

Luego puede descargarlo usando cualquier cliente SFTP como FileZilla y aplicarlo a sus clientes OpenVPN.

SoftEther también proporciona un software de cliente VPN dedicado para Windows y Linux. Es compatible con un protocolo específico de SoftEther llamado Ethernet sobre HTTPS o SSL-VPN, que es muy potente. Utiliza el protocolo HTTPS y el puerto 443 para establecer un túnel VPN, y debido a que este puerto es conocido, casi todos los firewalls, servidores proxy y NAT pueden pasar el paquete. Para usar el protocolo SSL-VPN, debe descargar e instalar SoftEther VPN Client, que se puede obtener desde su sitio web.

Paso 11: Conexión al servidor VPN SoftEther (Configuración del cliente)

Dado que SoftEther es un servidor VPN multiprotocolo, hay muchas formas de conectarse a él como cliente. Puede elegir cualquier protocolo para establecer una conexión segura con su servidor, incluidos L2TP, SSTP, OpenVPN y un protocolo exclusivo de SoftEther llamado SSL-VPN.

Según el sistema operativo del cliente y las configuraciones, puede usar cualquiera de los protocolos mencionados. Sin embargo, prefiero usar SSL-VPN ya que es seguro y rápido, y también, como se mencionó anteriormente, dado que usa un puerto común y conocido (443 o puerto https), puede penetrar la mayoría de los firewalls.

Aquí usamos el propio software de cliente VPN de SoftEther para conectarnos a nuestro servidor:

Primero descargue SoftEther VPN Client para Linux desde el sitio web de SoftEther. Podemos descargarlo usando un navegador lynx. Ingrese este comando para abrir la página de descarga de SoftEther:

lynx http://www.softether-download.com/files/softether/

Luego, tal como lo hizo al descargar el software del servidor, seleccione la última versión (aquí usamos v2.00-9387-rtm-2013.09.16). Ahora elija Linux y en la página siguiente elija SoftEther VPN Client. Ahora, dependiendo de la arquitectura de hardware de su sistema, elija un paquete (32 bits - Intel x86 y 64 bits - Intel x64 o AMD64 funciona para gotas de DigitalOcean de 32 o 64 bits). Finalmente, descargue el archivo tar de la página siguiente presionando la tecla \D” en el enlace y elija Guardar en disco cuando Lynx se lo solicite. Después de guardar el archivo, presione \Q” para salir de Lynx.

Extrae el archivo tar que acabas de descargar usando este comando:

tar xzvf softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz

Nota: Cambie softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz al nombre de su archivo descargado.

Ahora, tal como lo hicimos con el servidor, tenemos que compilar y hacer que vpnclient sea un archivo ejecutable ejecutando estos comandos (asegúrese de tener las herramientas de desarrollo mencionadas en el Paso 4 instaladas en el cliente):

cd vpnclient
make

Ingrese 1 tres veces cuando se le solicite leer y aceptar el Acuerdo de licencia y luego mueva los archivos a otro directorio y cambie los permisos:

cd ..
mv vpnclient /usr/local
cd /usr/local/vpnclient/
chmod 600 *
chmod 700 vpnclient
chmod 700 vpncmd

Luego inicie el servicio de cliente VPN usando este comando:

./vpnclient start

Para configurar nuestro cliente, vamos a usar vpncmd. Mientras esté en el directorio vpnclient, ingrese este comando para ejecutar la herramienta vpncmd:

./vpncmd

Elija 2 para ingresar al modo Administración del cliente VPN y luego presione Intro para conectarse y administrar el cliente VPN local que acaba de instalar.

SoftEther usa Adaptadores Virtuales para establecer una conexión a nuestro servidor VPN, usando este comando crea un Adaptador Virtual llamado myadapter:

NicCreate myadapter

Ahora, usando este comando, cree una nueva conexión VPN llamada myconnection:

AccountCreate myconnection

Luego ingrese la IP y el número de puerto de su servidor SoftEther VPN. El número de puerto podría ser cualquier puerto que haya configurado como escucha en su servidor. De forma predeterminada, SoftEther escucha en estos cuatro puertos: 443, 992, 1194, 5555. Aquí, como ejemplo, usamos el puerto 443:

Destination VPN Server Host Name and Port Number: [VPN Server IP Address]:443

Nota: En lugar de una dirección IP, también puede ingresar el nombre de dominio completo (FQDN) de su servidor.

Ahora ingrese el nombre del centro virtual al que está tratando de conectarse en su servidor. En nuestro caso se llama VPN:

Destination Virtual Hub Name: VPN

Luego ingrese el nombre de usuario de un usuario que creó en su servidor. Creamos un usuario llamado prueba:

Connecting User Name: test

Y finalmente ingrese el nombre del Virtual Hub que acaba de crear:

Used Virtual Network Adapter Name: myadapter

Ahora nuestra conexión VPN se ha creado y está lista para conectarse. Un último paso es cambiar el modo de Autenticación a Contraseña ya que así configuramos el modo de autenticación de nuestro usuario en el servidor:

AccountPasswordSet myconnection

Cuando se le solicite, ingrese estándar como método de autenticación de contraseña:

Specify standard or radius: standard

Finalmente, podemos conectar nuestra conexión; use este comando para hacerlo:

AccountConnect myconnection

Puede ver el estado de la conexión usando este comando:

AccountStatusGet myconnection

Nota: para que su conexión al servidor sea más segura y evitar ataques de intermediarios, es mejor usar un certificado SSL para identificar su servidor. Esto se puede hacer fácilmente usando SoftEther. Para hacer eso, primero debe descargar el archivo de certificado a su cliente como se explica en el Paso 10 y luego usar CertAdd para agregarlo a los certificados de confianza de su cliente. Luego, usando el comando AccountServerCertEnable habilite la verificación del certificado para su conexión VPN.

Terminando

En este artículo, pasamos por el proceso de configuración de un servidor VPN SoftEther usando vpncmd, que es una utilidad de administración de línea de comandos proporcionada por SoftEther. Todo lo que se hace aquí también se puede hacer usando SoftEther Server Manager para Windows, y es aún más fácil configurar un servidor SoftEther VPN usando esa herramienta. Así que le recomendé que lo use si tiene una máquina con Windows.

Eso es todo. Hemos instalado y configurado con éxito un servidor VPN multiprotocolo usando SoftEther. Ahora los clientes pueden conectarse a nuestro servidor usando L2TP, IPSec, SSTP, OpenVPN, etc.

Enviado por: Nima Karimi

Artículos relacionados: