Cómo configurar el servidor VPN Pritunl en Rocky Linux 8
Pritunl es un servidor VPN e IPsec de código abierto con gestión de usuarios y escalado horizontal para pequeñas y grandes organizaciones. Ofrece al usuario la posibilidad de utilizar los protocolos OpenVPN y Wireguard. Viene con una interfaz GUI fácil de usar y admite clientes en la mayoría de dispositivos y plataformas. Todo el tráfico entre los clientes y el servidor está encriptado. Pritunl se basa en MongoDB, una base de datos fiable y escalable que puede desplegarse rápidamente y con soporte incorporado para la replicación, lo que facilita el despliegue del clúster Pritunl.
Este tutorial te enseñará a instalar el servidor VPN Pritunl en Rocky Linux 8. También exploraremos cómo conectarte a la VPN utilizando un Cliente Linux.
Requisitos previos
- Un sistema que ejecute Rocky Linux 8 para alojar el servidor Pritunl.
- Un usuario no root con privilegios sudo.
- Un nombre de dominio apuntando al servidor.
- Un sistema que ejecute Rocky Linux 8 como cliente.
- Asegúrate de que todo está actualizado.
$ sudo dnf update
- Instala cualquier requisito previo.
$ sudo dnf install nano
Paso 1 – Configurar el Cortafuegos
Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.
$ sudo firewall-cmd --state running
Esto indica que está funcionando correctamente.
El cortafuegos funciona con diferentes zonas y la zona pública es la predeterminada, la que utilizaremos. Enumera todos los servicios y puertos activos en el cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Debería mostrar la siguiente salida.
dhcpv6-client mdns ssh
Permite los puertos HTTP y HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Vuelve a comprobar el estado del cortafuegos.
$ sudo firewall-cmd --permanent --list-all
Deberías ver un resultado similar.
public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http https ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Recarga el cortafuegos para activar los cambios.
$ sudo firewall-cmd --reload
Paso 2 – Instalar MongoDB
Pritunl se basa en la base de datos MongoDB, así que primero tenemos que instalarla. Rocky Linux no incluye MongoDB, así que tenemos que utilizar el repositorio oficial de MongoDB.
Nota: MongoDB 5.0 sólo funciona en procesadores nuevos. Si tu servidor funciona con hardware antiguo, deberás optar por una versión anterior de MongoDB o cambiar a un servidor más nuevo.
Crea y abre el archivo /etc/yum.repos.d/mongodb-org-5.0.repo
para editarlo.
$ sudo nano /etc/yum.repos.d/mongodb-org-5.0.repo
Pega en él el siguiente código.
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida una vez hayas terminado.
Instala MongoDB.
$ sudo dnf install mongodb-org
Habilita e inicia el servicio MongoDB.
$ sudo systemctl enable mongod --now
Paso 3 – Instalar el Servidor Pritunl
El primer paso es crear el repositorio oficial de Pritunl. Crea y abre el archivo /etc/yum.repos.d/pritunl.repo
para editarlo.
$ sudo nano /etc/yum.repos.d/pritunl.repo
Pega en él el siguiente código.
[pritunl] name=Pritunl Repository baseurl=https://repo.pritunl.com/stable/yum/centos/8/ gpgcheck=1 enabled=1
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida una vez hayas terminado.
Instala primero el repositorio Epel que necesita Pritunl.
$ sudo dnf install epel-release
Añade e importa las claves GPG necesarias para Pritunl.
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A $ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
Instala Pritunl.
$ sudo dnf install pritunl
Comprueba la versión de Pritunl.
$ pritunl version pritunl v1.30.2960.4
Habilita e inicia el servicio Pritunl.
$ sudo systemctl enable pritunl --now
Aumentar el límite de archivos abiertos
Ejecuta los siguientes comandos para aumentar el límite de archivos abiertos en el servidor. Esto evitará problemas de conexión en caso de carga elevada. Si has instalado MongoDB en un servidor distinto, deberás ejecutar estos comandos en ese servidor.
$ sudo sh -c 'echo "* hard nofile 64000" >> /etc/security/limits.conf' $ sudo sh -c 'echo "* soft nofile 64000" >> /etc/security/limits.conf' $ sudo sh -c 'echo "root hard nofile 64000" >> /etc/security/limits.conf' $ sudo sh -c 'echo "root soft nofile 64000" >> /etc/security/limits.conf'
Paso 4 – Acceder y configurar Pritunl
Puedes iniciar Pritunl introduciendo http://<serverIP>/
en tu navegador. Los navegadores actuales intentan acceder a la versión HTTPS de cada sitio, por lo que tendrás que evitar el error de Privacidad que lanza el navegador.
Obtendrás la siguiente pantalla cuando lances la URL por primera vez.
Obtendrá el URI de MongoDB automáticamente. Para la clave de configuración, ejecuta el siguiente comando.
$ sudo pritunl setup-key eacbd641982048fd9a60cdf09f7ebaa3
Introduce la clave generada en el sitio web y pulsa el botón Guardar. Se actualizará la base de datos y se abrirá la pantalla de inicio de sesión.
Ejecuta el siguiente comando para generar la información de inicio de sesión por defecto.
$ sudo pritunl default-password [undefined][2021-11-08 22:34:55,255][INFO] Getting default administrator password Administrator default password: username: "pritunl" password: "krZQLlH9U7P1"
Introduce los datos de acceso e inicia sesión. Aparecerá la siguiente pantalla de configuración.
Introduce una contraseña segura para sustituir a la predeterminada. Introduce un dominio en el campo Encriptar dominio. Pritunl generará y configurará automáticamente un certificado SSL para el dominio.
Ahora puedes iniciar el servidor utilizando el nombre de dominio escribiendo https://pritunl.example.com
en tu navegador.
Paso 5 – Añadir una Organización, un Servidor y Usuarios
El siguiente paso es añadir una Organización para tu VPN. Haz clic en la pestaña Usuarios y en el botón Añadir Organización.
Haz clic en el botón Añadir para continuar.
El siguiente paso es añadir un usuario. Hay dos opciones. Puedes añadir usuarios uno a uno o añadirlos en bloque. De momento vamos a añadir un único usuario. Pulsa el botón Añadir usuario.
El campo PIN es opcional y se utiliza si vas a utilizar la autenticación de Dos Factores. El PIN se compone sólo de números.
Una vez configurados la organización y los usuarios, ve a la pestaña Servidores y pulsa el botón Añadir servidor.
Puerto: Puedes añadir cualquier puerto que vaya a utilizar el servidor. Asegúrate de que el puerto que has especificado está abierto a todo el tráfico entrante en el Grupo de Seguridad.
DNS: Puedes añadir Google DNS u OpenDNS.
Red Virtual: Puedes añadir una IP privada en este campo, pero asegúrate de que ningún otro recurso la utiliza. A los clientes se les asignarán direcciones IP de este rango.
Red Virtual WG: Direcciones de red de WireGuard para la red privada que se asignará a los clientes de WireGuard. Debe tener el mismo Bloque CIDR que la Red Virtual.
Activar WireGuard: Si está marcada, utilizará WireGuard en lugar de OpenVPN. Sin embargo, utilizaremos OpenVPN para nuestro tutorial, así que déjalo sin marcar.
Puerto WG: Este puerto se utilizará para las conexiones WireGuard. Sólo se utilizará cuando hayamos activado la opción WireGuard.
Habilitar Google Authenticator: Para utilizar la verificación en dos pasos, activa esta opción. Si esta opción está activada en el servidor, todos los clientes bajo ese servidor, necesitarán verificar la OTP antes de conectarse a la VPN cada vez.
Activar IPv6: Activa los servidores DNS IPv6. Los clientes reciben direcciones IPv6 privadas.
Haz clic en el botón Añadir para terminar.
Haz clic en el botón Añadir Organización para vincular la organización con el servidor recién creado.
Pulsa el botón Iniciar servidor para iniciar la VPN.
Habilitar puerto en el cortafuegos
Para aceptar las conexiones del cliente a través del puerto VPN, necesitamos habilitarlo a través de nuestro cortafuegos.
$ sudo firewall-cmd --permanent --add-port=18412/udp $ sudo firewall-cmd --reload
Paso 6 – Instalar el Cliente Pritunl
Ahora que nuestro servidor está en funcionamiento, es hora de instalar un cliente y conectarse a la VPN. Pritunl ofrece dos tipos de clientes: un cliente de línea de comandos y un cliente GUI.
Para nuestro tutorial, utilizaremos el cliente de línea de comandos. Sólo puedes instalar un tipo de cliente en un sistema.
Instala el repositorio EPEL que necesita el cliente Pritunl.
$ sudo dnf install epel-release
Añade el repositorio oficial de Pritunl a tu sistema Rocky Linux.
$ sudo tee -a /etc/yum.repos.d/pritunl.repo << EOF [pritunl] name=Pritunl Stable Repository baseurl=https://repo.pritunl.com/stable/yum/centos/8/ gpgcheck=1 enabled=1 EOF
Añade e importa las claves GPG.
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A $ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
Instala el cliente de línea de comandos.
$ sudo dnf install pritunl-client
Paso 7 – Conexión del cliente al servidor
Desde la pestaña de usuarios del sitio del servidor Pritunl, obtén el enlace temporal del perfil para conectarte al cliente.
Copia el enlace URI temporal de la última entrada.
Introduce el siguiente comando en el terminal del cliente para añadir el perfil.
$ pritunl-client add pritunl://example.com/ku/2hd6S6Ug
Asegúrate de añadir el enlace del perfil copiado anteriormente después de add
en el comando.
Comprueba la lista de los perfiles añadidos.
$ pritunl-client list +----------------------------------+-------------------------+--------------+----------------+----------------+ | ID | NAME | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS | +----------------------------------+-------------------------+--------------+----------------+----------------+ | wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | Disconnected | - | - | +----------------------------------+-------------------------+--------------+----------------+----------------+
Ejecuta el siguiente comando para conectarte al perfil. No es necesario que utilices el ID completo del perfil en el comando. Utiliza sólo las 3 primeras letras del ID del perfil para referirte a él.
$ pritunl-client start wki --mode=ovpn --password=PINOTP
- Para especificar el modo OPVN, añade la bandera
--mode=ovpn
en el comando. - Si has activado la opción Google Authenticator, tienes que configurarlo utilizando un cliente Google Authenticator o Authy.
- Para especificar el pin y el código de autenticación de dos factores, utiliza la bandera
--password=PINOTP
en el comando. Por ejemplo, si el pin es 54321 y el código OTP es 456789, entonces utiliza la bandera--password=54321456789
en el comando anterior. Si sólo utilizas el PIN, entonces utiliza la bandera--password=PIN
.
Ejecuta de nuevo el comando list
para comprobar si la conexión funciona.
$ pritunl-client list
+----------------------------------+-------------------------+------------+----------------+----------------+
| ID | NAME | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS |
+----------------------------------+-------------------------+------------+----------------+----------------+
| wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | 6 secs | 178.62.233.196 | 192.168.238.2 |
+----------------------------------+-------------------------+------------+----------------+----------------+
Has realizado correctamente la conexión a la VPN de Pritunl.
Línea de comandos de Pritunl
El servidor Pritunl viene con una herramienta de línea de comandos que puedes utilizar para realizar algunas operaciones básicas.
Reparar base de datos
Puedes utilizar Pritunl para reparar la base de datos y permitir la recuperación de una base de datos corrupta o incoherente.
Primero, detén el servidor Pritunl.
$ sudo systemctl stop pritunl
Repara la base de datos.
$ sudo pritunl repair-database
Reinicia el servicio Pritunl.
$ sudo systemctl start pritunl
El comando repair-database
borrará todos los registros, restablecerá todas las direcciones IP virtuales estáticas de usuario y pondrá todos los servidores en estado detenido.
Restablecer credenciales
El siguiente comando restablecerá el nombre de usuario y la contraseña del administrador a pritunl
. También eliminará cualquier configuración de inicio de sesión único y autenticación en dos pasos para el usuario administrador, si está activada.
$ sudo pritunl reset-password
Cambiar el Puerto de la Consola Web
Por defecto, Pritunl se ejecuta en el puerto 443. Si quieres cambiarlo, utiliza el siguiente comando.
$ sudo pritunl set app.server_port 8443
Pritunl ejecuta un servidor web en el puerto 80 para la verificación Let’s Encrypt y redirige las peticiones HTTP a HTTPS. Puedes desactivar la redirección utilizando el siguiente comando. Esto también impedirá el uso de certificados Let’s Encrypt.
$ sudo pritunl set app.redirect_server false
Conclusión
Con esto concluye nuestro tutorial sobre la configuración y el uso del servidor VPN Pritunl en un servidor Rocky Linux 8. Si quieres saber más sobre Pritunl, puedes seguir su documentación oficial. Si tienes alguna pregunta, publícala en los comentarios a continuación.