Cómo instalar y configurar el servidor VPN Algo en Ubuntu 20.04
Algo VPN es un paquete de software de código abierto o conjunto de scripts Ansible que se utiliza para configurar una VPN WireGuard e IPsec. Fue diseñado por Trail of Bits para hacer que el proceso de instalación de la VPN sea sencillo pero seguro. Algo VPN te permite conectarte desde cualquier dispositivo, incluidos Windows, Linux, OSX, Android e iOS. Algo VPN es compatible con muchos proveedores en la nube, como Amazon, Google Cloud, Vultr, DigitalOcean, Scalway, Linode y OpenStack.
En este tutorial, te mostraremos cómo configurar un servidor VPN con Algo VPN en un servidor Ubuntu 20.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 20.04.
- Una contraseña de root está configurado el servidor.
Cómo empezar
En primer lugar, actualiza los paquetes de tu sistema a la última versión utilizando el siguiente comando:
apt-get update -y
Una vez actualizados todos los paquetes, instala otras dependencias con el siguiente comando:
apt-get install git apparmor build-essential python3-dev python3-pip python3-setuptools python3-virtualenv libffi-dev libssl-dev -y
A continuación, tendrás que desactivar el servicio de resolución de nombres para que dnsmasq funcione. Puedes desactivarlo con el siguiente comando:
systemctl disable systemd-resolved systemctl stop systemd-resolved unlink /etc/resolv.conf echo "nameserver 8.8.8.8" > /etc/resolv.conf
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar y configurar Algo VPN
En primer lugar, descarga la última versión de Algo VPN del repositorio Git utilizando el siguiente comando:
git clone https://github.com/trailofbits/algo.git
A continuación, cambia el directorio al descargado y crea un entorno virtual Python con el siguiente comando:
cd algo python3 -m virtualenv --python=/usr/bin/python3 .env
A continuación, activa el entorno virtual con el siguiente comando:
source .env/bin/activate
A continuación, instala las dependencias necesarias con el siguiente comando:
python3 -m pip install -U pip virtualenv python3 -m pip install -r requirements.txt
Una vez instaladas todas las dependencias, instala la VPN Algo ejecutando el siguiente comando:
./algo
Se te pedirá que elijas el proveedor de la Nube como se muestra a continuación:
TASK [Set required ansible version as a fact] ************************************************************************************************* ok: [localhost] => (item=ansible==2.9.7) TASK [Verify Python meets Algo VPN requirements] ********************************************************************************************** ok: [localhost] => { "changed": false, "msg": "All assertions passed" } TASK [Verify Ansible meets Algo VPN requirements] ********************************************************************************************* ok: [localhost] => { "changed": false, "msg": "All assertions passed" } [WARNING]: Found variable using reserved name: no_log PLAY [Ask user for the input] ***************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************************************ ok: [localhost] [Cloud prompt] What provider would you like to use? 1. DigitalOcean 2. Amazon Lightsail 3. Amazon EC2 4. Microsoft Azure 5. Google Compute Engine 6. Hetzner Cloud 7. Vultr 8. Scaleway 9. OpenStack (DreamCompute optimised) 10. CloudStack (Exoscale optimised) 11. Linode 12. Install to existing Ubuntu 18.04 or 20.04 server (for more advanced users) Enter the number of your desired provider : 12 Type 12 and hit Enter to setup Algo VPN on Ubuntu 20.04 server. You will be asked for several questions as shown below: TASK [Set facts based on the input] *************************************************************************************************************************************************************************************** ok: [localhost] [Cellular On Demand prompt] Do you want macOS/iOS IPsec clients to enable "Connect On Demand" when connected to cellular networks? [y/N] :y TASK [Cellular On Demand prompt] ****************************************************************************************************************************************************************************************** ok: [localhost] [Wi-Fi On Demand prompt] Do you want macOS/iOS IPsec clients to enable "Connect On Demand" when connected to Wi-Fi? [y/N] :y TASK [Wi-Fi On Demand prompt] ********************************************************************************************************************************************************************************************* ok: [localhost] [Trusted Wi-Fi networks prompt] List the names of any trusted Wi-Fi networks where macOS/iOS IPsec clients should not use "Connect On Demand" (e.g., your home network. Comma-separated value, e.g., HomeNet,OfficeWifi,AlgoWiFi) :HomeNet TASK [Trusted Wi-Fi networks prompt] ************************************************************************************************************************************************************************************** ok: [localhost] [Compatible ciphers prompt] Do you want the VPN to support Windows 10 or Linux Desktop clients? (enables compatible ciphers and key exchange, less secure) [y/N] :y TASK [Compatible ciphers prompt] ****************************************************************************************************************************************************************************************** ok: [localhost] [Retain the CA key prompt] Do you want to retain the CA key? (required to add users in the future, but less secure) [y/N] :y TASK [Retain the CA key prompt] ******************************************************************************************************************************************************************************************* ok: [localhost] [DNS adblocking prompt] Do you want to install an ad blocking DNS resolver on this VPN server? [y/N] :y TASK [DNS adblocking prompt] ********************************************************************************************************************************************************************************************** ok: [localhost] [SSH tunneling prompt] Do you want each user to have their own account for SSH tunneling? [y/N] :N Enter the IP address of your server: (or use localhost for local installation): [localhost] : localhost TASK [local : pause] ************************************************************************************************************************** ok: [localhost] TASK [local : Set the facts] ****************************************************************************************************************** ok: [localhost] [local : pause] What user should we use to login on the server? (note: passwordless login required, or ignore if you're deploying to localhost) [root] : root Enter the public IP address or domain name of your server: (IMPORTANT! This is used to verify the certificate) [45.58.38.120]
Una vez que la instalación se haya completado con éxito, deberías obtener la siguiente salida:
TASK [debug] ********************************************************************************************************************************** ok: [localhost] => { "msg": [ [ "\"# Congratulations! #\"", "\"# Your Algo server is running. #\"", "\"# Config files and certificates are in the ./configs/ directory. #\"", "\"# Go to https://whoer.net/ after connecting #\"", "\"# and ensure that all your traffic passes through the VPN. #\"", "\"# Local DNS resolver 172.18.7.104 #\"", "" ], " \"# The p12 and SSH keys password for new users is 7OEfSUZt0 #\"\n", " \"# The CA key password is g5AvcHzZygjV@4AN #\"\n", " " ] } PLAY RECAP ************************************************************************************************************************************ localhost : ok=125 changed=39 unreachable=0 failed=0 skipped=53 rescued=0 ignored=0
Tras la instalación, deberías ver el archivo de configuración de cada perfil VPN utilizando el siguiente comando:
ls configs/your-server-ip/wireguard/
Deberías ver todos los perfiles en la siguiente salida:
apple desktop.conf desktop.png laptop.conf laptop.png phone.conf phone.png user1.conf user1.png
Puedes utilizar cualquiera de los archivos anteriores en tu dispositivo cliente para conectarte al servidor VPN Algo.
Conclusión
Enhorabuena! has instalado y configurado correctamente Algo VPN en el servidor Ubuntu 20.04. Ahora puedes configurar tu dispositivo Windows, Linux o Android para conectarte al servidor Algo VPN.