El día de hoy les traigo el tutorial de como instalar y configurar un servidor con Wireguard una solución VPN que podemos implementar para darle acceso a los nodos Witness para que se comuniquen con la Blockchain, actualmente la opción que tenemos implementada es totalmente privada y ha cumplido su función sin embargo una de las banderas de nuestra plataforma es acercar la tecnología a sus usuarios. Con este tutorial puedes hacer propuestas para manejar el acceso de los nodos a red y un sin fin de cosas más.
Instalación
El primer paso antes de realizar la parametrización de Wireguard es actualizar nuestro sistema operativo, tener como mínimo los paquetes esenciales para compilación y desarrollo, aunque esto no es algo obligatorio siempre requerimos algún compilador o herramienta, también requerimos conocer el manejo básico del Editor nano para realizar las modificaciones de archivos. Adicional a ello leer la guía y documentación oficial por si deseamos implementar algún tipo de red especial. Iniciamos
Actualización del Sistema
Si utilizamos Debian 10 o Ubuntu podemos usar los siguientes comandos
apt update && apt full-upgrade -y
apt-get install build-essential software-properties-common gnupg vnstat ifstat iftop atop ufw fail2ban
Instalación Wireguard
Wireguard se encuentra en los repositorios inestables de Debian por lo cual debemos agregarlo de forma manual y actualizar los repositorios para proceder a la instalación.
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard
Generación de Claves
En este apartado debemos generar las claves criptográficas con las cuales brindaremos acceso a los Peer, equipos, amigos o usuarios que desean conectarse a nuestro servidor. La clave privada jamás debe compartirse, por otro lado, la clave pública será la que compartamos con todos los usuarios. Para generar las claves ejecutamos los siguientes comandos y sobre todo debemos copiarla tal cual como se genera
cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey
Configuración Wireguard
Para configurar Wireguard solo basta crear un archivo.conf con el nombre de la VPN que deseamos crear en mi caso yo la he nombrado Blurt. En este apartado debemos ingresar la clave pública que vamos a compartir con los nodos, adicional a eso se deben establecer reglas iptables para que pueda funcionar el trafico TCP/IP. En este archivo también se agrega la información de cada uno de los nodos que desea ingresar a la red, pero lo haremos en otra publicación
creación del archivo
nano /etc/wireguard/blurt.conf
dentro del archivo vamos a ingresar esta configuración plenamente funcional tomando en consideración el nombre de nuestra conexión. Se verá algo similar a la imagen adjunta.
[Interface]
PrivateKey = tu private key
Address = 192.168.x.x/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i blurt -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i blurt -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Administración VPN
Podemos usar dos comandos iniciar o detener el servicio
wg-quick up blurt
wg-quick down blurt
También podemos agregar al arranque del sistema nuestra configuración de VPN, y administrarla con los siguiente comandos
systemctl enable wg-quick@blurt
systemctl stop wg-quick@blurt
systemctl status wg-quick@blurt
wg show
Verificación
para verificar el estado de nuestra VPN usamos los comandos `wg show ` y `systemctl status wg-quick@blurt`
Hasta acá podemos tener una configuración funcional de nuestro server con Wireguard quedando establecer normas de firewall con ufw y agregar nodos. Esto lo abordaremos en otro post.
c/c @jacobgadikian @ilazramusic @blurthispano
Imagen de Dan Nelson en Pixabay
Imagen de Josy Dom Alexis en Pixabay
Today I bring you the tutorial on how to install and configure a server with Wireguard a VPN solution that we can implement to give access to the Witness nodes to communicate with the Blockchain, currently the option we have implemented is totally private and has fulfilled its function however one of the flags of our platform is to bring technology closer to its users. With this tutorial you can make proposals to manage the access of the nodes to the network and many other things.
Installation
The first step before performing the parameterization of Wireguard is to update our operating system, to have at least the essential packages for compilation and development, although this is not mandatory we always require some compiler or tool, we also need to know the basic handling of the nano Editor to make file modifications. We also need to read the official guide and documentation in case we want to implement some special network. We start
System Upgrade
If we use Debian 10 or Ubuntu we can use the following commands
apt update && apt full-upgrade -y
apt-get install build-essential software-properties-common gnupg vnstat ifstat iftop atop ufw fail2ban
Wireguard installation
Wireguard is in the Debian unstable repositories so we must add it manually and update the repositories to proceed with the installation.
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard
Key Generation
In this section we must generate the cryptographic keys with which we will provide access to the Peer, teams, friends or users who want to connect to our server. The private key should never be shared, on the other hand, the public key will be the one we share with all the users. To generate the keys we execute the following commands and above all we must copy it as it is generated
cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey
Wireguard configuration
To configure Wireguard you only need to create a .conf file with the name of the VPN you want to create, in my case I have named it Blurt. In this section we must enter the public key that we are going to share with the nodes, in addition to that we must establish iptables rules so that the TCP/IP traffic can work. In this file we also add the information of each of the nodes that want to join the network, but we will do it in another publication.
creation of the file
nano /etc/wireguard/blurt.conf
inside the file we are going to enter this fully functional configuration taking into consideration the name of our connection. It will look something similar to the attached image.
[Interface]
PrivateKey = tu private key
Address = 192.168.x.x/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i blurt -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i blurt -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
VPN Management
We can use two commands to start or stop the service
wg-quick up blurt
wg-quick down blurt
We can also add at system startup our VPN configuration, and manage it with the following commands
systemctl enable wg-quick@blurt
systemctl stop wg-quick@blurt
systemctl status wg-quick@blurt
wg show
Verification
to verify the status of our VPN we use the commands `wg show ` and `systemctl status wg-quick@blurt`.
Up to this point we can have a functional configuration of our server with Wireguard, but we still need to establish firewall rules with ufw and add nodes. This will be covered in another post.
Congratulations! This post has been upvoted by the @blurtcurator communal account,
You can request a vote every 12 hours from the #getupvote channel in the official Blurt Discord.Don't wait to join ,lots of good stuff happening there.