WireGuard es una solución VPN ligera, de alta velocidad y segura, ideal para configuraciones Remote Access o site-to-site. Su simplicidad y rendimiento superior lo hacen preferible sobre soluciones VPN más antiguas. Este post te guiará a través del proceso de instalación y configuración de WireGuard para establecer una conexión Remote Access VPN en Linux.

¿Qué es una Remote Access VPN?
Conocida como VPN de acceso remoto, es un tipo de conexión de red privada virtual (VPN) que permite a los usuarios remotos, como empleados fuera de la oficina, conectarse de manera segura a la red interna de una empresa o a recursos específicos dentro de esa red desde cualquier lugar, siempre que tengan acceso a internet. Este tipo de VPN establece una conexión segura y cifrada desde el dispositivo del usuario (el cliente) hasta el servidor VPN ubicado en la red de la empresa (el sitio).
1. Instalar WireGuard en el Servidor
Primero, necesitas instalar WireGuard en el servidor. Abre una terminal y ejecuta los siguientes comandos:
sudo su
apt install wireguard -y
cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
Estos comandos instalarán WireGuard, cambiarán al directorio de configuración de WireGuard, generarán una clave privada y, a partir de esta, generarán una clave pública.
2. Instalar WireGuard en el Cliente
Repite el proceso de instalación del servidor pero ahora en el cliente:
sudo su
apt install wireguard -y
cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
3. Configurar el Servidor WireGuard
Crea la configuración según el siguiente template en donde rellenarás la llave privada del servidor y las llaves publicas de los clientes según correspondan y guardarás en la ruta /etc/wireguard/wg0.conf
. Es importante tener en cuenta de que en las secciones de <private server key>
y <public client key>
son los valores correspondientes de los archivos generados con el comando wg genkey
y wg pubkey
. En la sección de Address
va la IP del Gateway de la VPN y el valor de su segmento. En donde dice AllowedIPs
se especifica la IP que tendrá el cliente a la hora de conectarse.
[Interface]
PrivateKey = <private server key>
Address = 172.16.23.1/24
ListenPort = 51820
PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
PostDown = sysctl -w net.ipv4.ip_forward=0; iptables -D FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
MTU = 1420
[Peer]
# cliente 1
PublicKey = <public client key>
AllowedIPs = 172.16.23.2/32
[Peer]
# cliente 2
PublicKey = <public client key>
AllowedIPs = 172.16.23.3/32
Para habilitar el servicio automáticamente en el inicio deben ejecutar el siguiente comando
sudo systemctl enable wg-quick@wg0
Recuerda desactivar el Firewall para WireGuard
sudo ufw disable
4. Iniciar/Detener el Servidor WireGuard
Para iniciar el servidor WireGuard, ejecuta:
sudo systemctl start wg-quick@wg0
Para detenerlo, utiliza:
sudo systemctl stop wg-quick@wg0
5. Configurar el Cliente WireGuard
Igual que en el servidor, necesitarás crear /etc/wireguard/hs0.conf
en tu host cliente para agregar la clave privada del cliente y la clave publica del servidor. En la sección de Address
va la IP del cliente de la VPN y el valor de su segmento, en Endpoint
va la dirección del servidor y AllowedIPs
es donde se especifica la dirección IP y el segmento a cual se accederá dentro de la red de la VPN.
[Interface]
PrivateKey = <private client key>
Address = 172.16.23.2/24
MTU = 1384
[Peer]
# wireguard server
PublicKey = <public server key>
Endpoint = <IP server>:51820
AllowedIPs = 172.16.23.0/24
PersistentKeepalive = 25
6. Conectar el Cliente
Para conectar el cliente a la VPN, utiliza:
sudo wg-quick up hs0
Para desconectarlo:
sudo wg-quick stop hs0
Para que el cliente VPN inicie en el inicio debes ejecutar lo siguiente:
sudo systemctl enable wg-quick@hs0
Nota
Si utilizas en la configuración del cliente lo siguiente:
AllowedIPs = 0.0.0.0/0
Tendrás la IP de la VPN, por lo cual es necesario tener en cuenta de que el cliente tiene el control si quiere acceder a la red de la VPN o traficar por la IP del servidor.
Conclusión
Configurar una Remote Access VPN con WireGuard representa una solución moderna, eficiente y segura para las necesidades de conexión remota. Siguiendo los pasos descritos en este post, desde la instalación de WireGuard tanto en el servidor como en el cliente, hasta la configuración y gestión de la conexión VPN, puedes establecer una comunicación cifrada y de alta velocidad entre dispositivos remotos y tu red interna. Este proceso no solo mejora la seguridad de tu red permitiendo accesos remotos seguros sino que también se beneficia de la simplicidad y el rendimiento superior de WireGuard en comparación con soluciones VPN más tradicionales.
Referencias
Autores
Vay3t & Gwynplaine