Cómo configurar Wireguard VPN en Linux

Una fotografía de una laptop con un monitor de escritorio al lado.

Wireguard es un potente demonio de red privada virtual (VPN) de código abierto que puede ejecutarse tanto en dispositivos de escritorio como móviles. Proporciona una alternativa rápida y ligera a las soluciones VPN tradicionales como IPsec y OpenVPN. Aquí, te mostramos cómo instalar Wireguard y crear una configuración simple de VPN utilizando tres máquinas Linux.

Tabla de Contenidos

  • ¿Por qué usar Wireguard como solución VPN?
  • Obtención de Wireguard
  • Configuración del servidor Wireguard
  • Configuración y conexión del cliente Wireguard
  • Agregar un segundo cliente al servidor
  • Pruebas de la red Wireguard

¿Por qué usar Wireguard como solución VPN?

Uno de los mayores puntos de venta de Wireguard es que es un demonio VPN rápido y ligero. A diferencia de las soluciones tradicionales, Wireguard no añade mucha sobrecarga a tu red. Esto resulta en una menor latencia y una alta tasa de rendimiento general a través de tus nodos.

Una terminal que muestra una prueba iperf3 entre dos nodos Wireguard mostrando un alto rendimiento.

Otra característica clave de Wireguard es que es un módulo dentro del núcleo de Linux. Esto le permite ejecutarse sin ocupar recursos adicionales del sistema de tu computadora, lo que lo convierte en una opción ideal para desplegar en dispositivos de gama baja y SOC.

Una terminal que muestra Wireguard cargado en el núcleo de Linux.

Por último, Wireguard también aprovecha los estándares criptográficos modernos y las prácticas de desarrollo. También ha tenido múltiples verificaciones formales, que confirman la corrección del código de Wireguard, las garantías de seguridad y la capacidad de resistir ataques.

Por cierto: ¿aún no estás convencido con Wireguard? Aprende cómo se compara Wireguard con OpenVPN.

Obtención de Wireguard

El primer paso para configurar Wireguard en Linux es descargar sus herramientas principales desde el repositorio de tu distribución. Esto te permite controlar el módulo del núcleo de Wireguard utilizando comandos de espacio de usuario.

Para instalar las herramientas principales en Ubuntu y Debian, ejecuta el siguiente comando:

sudo apt install wireguard wireguard-tools

En Fedora, puedes usar el gestor de paquetes dnf:

sudo dnf install wireguard-tools

Para Arch Linux, puedes ejecutar pacman para obtener las herramientas principales de Wireguard:

sudo pacman -S wireguard-tools

Confirma que has instalado correctamente las herramientas de Wireguard cargando su pantalla de ayuda:

wg -h

Una terminal que muestra el menú de ayuda para la herramienta de espacio de usuario de Wireguard.

Configuración del servidor Wireguard

Suposición: Este artículo asume que estás instalando el servidor Wireguard en un sistema Linux con una dirección IPv4 accesible públicamente. Las instrucciones seguirán funcionando en un servidor detrás de un NAT, pero no encontrará nodos fuera de su subred.

Con el kit de herramientas principales de Wireguard en tus máquinas Linux, ahora puedes configurar el nodo del servidor de tu VPN. Esto servirá como la puerta de enlace de internet para tus nodos cliente en la red.

Comienza navegando a tu directorio de configuración de Wireguard y establece sus permisos predeterminados a “solo root”:

cd/etc/wireguard  
sudoumask 077

Nota: algunos sistemas pueden impedirte entrar en la carpeta “/etc/wireguard” como usuario normal. Para solucionar eso, cambia al usuario root usando sudo -s.

Genera la clave pública y privada para tu servidor Wireguard:

sudosh-c'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'

Crea el archivo de configuración de tu servidor usando tu editor de texto favorito:

sudonano/etc/wireguard/wg0.conf

Pega el siguiente bloque de código dentro de tu archivo de configuración del servidor:

[Interface]  
PrivateKey= PASTE-YOUR-SERVER-PRIVATE-KEY-HERE  
Address= 10.0.0.1/32  
ListenPort= 60101  
PostUp= iptables -t nat -I POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE  
PostDown= iptables -t nat -D POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE

Abre una nueva sesión de terminal, luego imprime la clave privada de tu servidor Wireguard:

sudocat/etc/wireguard/server-private-key

Copia la clave privada de tu servidor en tu portapapeles.

Una terminal que muestra el proceso de copiar la clave privada del servidor en Ubuntu.

Reemplaza el valor de la variable PrivateKey con la clave en tu portapapeles.

Una terminal que muestra la clave privada del servidor en la configuración de Wireguard del servidor.

Encuentra la interfaz de red que tiene acceso a internet usando el comando ip:

ip route get 8.8.8.8

Establece el valor de la bandera -o en ambas variables PostUp y PostDown a la interfaz con acceso a internet, luego guarda tu archivo de configuración.

Una terminal que muestra el nombre del dispositivo correcto en el archivo de configuración del servidor Wireguard.

Abre el archivo “/etc/sysctl.conf” del servidor usando tu editor de texto favorito:

sudonano/etc/sysctl.conf

Desplázate hacia abajo hasta la línea que contiene net.ipv4.ip_forward=1, luego elimina el signo de número (#) que está delante.

Una terminal que resalta la ubicación de la opción de reenvío IPv4 en sysctl.conf.

Recarga tu nueva configuración de sysctl ejecutando: sudo sysctl -p.

FYI: Wireguard no es la única solución VPN que puedes ejecutar en Linux. Aprende cómo crear tu propia VPN usando OpenVPN.

Configuración y conexión del cliente Wireguard

En este punto, ahora tienes un servidor Wireguard correctamente configurado sin pares. Para usarlo, necesitas configurar y conectar tu primer cliente Wireguard.

Navega al directorio de configuración de Wireguard de tu sistema cliente y establece sus permisos predeterminados:

cd/etc/wireguard  
sudoumask 077

Genera el par de claves Wireguard de tu cliente usando el siguiente comando:

sudosh-c'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'

Crea el archivo de configuración de Wireguard del cliente usando tu editor de texto favorito:

sudonano/etc/wireguard/wg0.conf

Pega el siguiente bloque de código dentro de tu archivo de configuración del cliente:

[Interface]  
PrivateKey= PASTE-YOUR-CLIENT1-PRIVATE-KEY-HERE  
Address= 10.0.0.2/32  
ListenPort= 60101  
  
[Peer]  
PublicKey= PASTE-YOUR-SERVER-PUBLIC-KEY-HERE  
AllowedIPs= 0.0.0.0/0  
Endpoint= PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60101  
PersistentKeepalive= 25

Reemplaza la variable PrivateKey con la clave privada de tu cliente.

Una terminal que resalta la clave privada para el primer cliente Wireguard.

Abre la sesión de terminal de tu servidor Wireguard, luego imprime su clave pública:

sudocat/etc/wireguard/server-public-key

Establece el valor de la variable PublicKey a la clave pública de tu servidor.

Una terminal que resalta la clave pública del servidor de Wireguard en el archivo de configuración del segundo cliente.

Cambia la variable Endpoint a la dirección IP de tu servidor Wireguard.

Una terminal que resalta la dirección IP del servidor de Wireguard.

Guarda tu archivo de configuración, luego usa el comando wg-quick para iniciar el cliente Wireguard:

sudo wg-quick up wg0

Una terminal que muestra el proceso de inicio del demonio cliente Wireguard.

Nota: este comando deshabilitará la conectividad de red de tu cliente hasta que inicies tu servidor Wireguard. Para volver a tu red original, ejecuta sudo wg-quick down wg0.

Vinculando el servidor Wireguard al cliente

Ve a la sesión de terminal de tu servidor Wireguard, luego abre su archivo de configuración:

sudonano/etc/wireguard/wg0.conf

Pega el siguiente bloque de código después de la sección [Interface]:

[Peer]  
PublicKey= PASTE-YOUR-CLIENT1-PUBLIC-KEY-HERE  
AllowedIPs= 10.0.0.2/32  
PersistentKeepalive= 25

Establece la variable PublicKey a la clave pública de tu cliente Wireguard.

Una terminal que muestra la ubicación del bloque [Peer] y resalta la clave pública del cliente.

Nota: puedes obtener la clave pública ejecutando sudo cat /etc/wireguard/client1-public-key en tu máquina cliente.

Guarda el archivo de configuración, luego ejecuta el siguiente comando para iniciar el servicio Wireguard en tu servidor:

sudo wg-quick up wg0

Agregando un segundo cliente al servidor

Una característica clave de cada servicio VPN es que puede vincular múltiples máquinas de diferentes redes. Esto es útil si tienes computadoras en diferentes ubicaciones o deseas alojar un servidor de juegos privado para tus amigos.

Para hacer esto en Wireguard, necesitas crear un archivo de configuración para una nueva interfaz VPN en tu servidor. La forma más fácil de hacerlo es copiar tu configuración actual del servidor y darle un nuevo nombre:

sudocp/etc/wireguard/wg0.conf /etc/wireguard/wg1.conf

Abre tu nuevo archivo de configuración usando tu editor de texto favorito:

sudonano/etc/wireguard/wg1.conf

Establece la variable ListenPort a 60102. Hacer esto evitará cualquier colisión de puertos entre las interfaces VPN wg0 y wg1.

Una terminal que resalta la variable ListenPort modificada para la segunda interfaz Wireguard.

Ve a la sección [Peer] y cambia la variable AllowedIPs de “10.0.0.2/32” a “10.0.0.3/32,” luego guarda tu archivo de configuración.

Una terminal que resalta la variable AllowedIPs modificada para el segundo cliente Wireguard.

Configurando el segundo cliente Wireguard

Inicia sesión en tu segunda máquina, luego prepara tu directorio de configuración de Wireguard:

cd/etc/wireguard  
sudoumask 077

Genera un nuevo par de claves Wireguard usando el siguiente comando:

sudosh-c'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'

Crea un nuevo archivo de configuración usando tu editor de texto favorito:

sudonano/etc/wireguard/wg0.conf

Pega el siguiente bloque de código dentro de tu nuevo archivo de configuración:

[Interface]  
PrivateKey= PASTE-YOUR-CLIENT2-PRIVATE-KEY-HERE  
Address= 10.0.0.3/32  
ListenPort= 60102  
  
[Peer]  
PublicKey= PASTE-YOUR-SERVER-PUBLIC-KEY-HERE  
AllowedIPs= 0.0.0.0/0  
Endpoint= PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60102  
PersistentKeepalive= 25

Establece la variable PrivateKey a la clave privada de tu segunda máquina, luego cambia la variable PublicKey a la clave pública de tu servidor.

Reemplaza la variable Endpoint con la dirección IP de tu servidor, seguida de “:60102.”

Guarda tu archivo de configuración, luego inicia el cliente Wireguard de la segunda máquina:

sudo wg-quick up wg0

Vinculando el segundo cliente al servidor Wireguard

Inicia sesión nuevamente en tu servidor Wireguard, luego abre la configuración de la interfaz VPN para tu segundo cliente:

sudonano/etc/wireguard/wg1.conf

Desplázate hacia abajo hasta la sección [Peer], luego reemplaza la variable PublicKey con la clave pública de tu segundo cliente.

Una terminal que resalta la clave pública del segundo cliente dentro del archivo de configuración wg1 del servidor.

Guarda tu archivo de configuración, luego inicia la segunda interfaz VPN usando el comando wg-quick:

sudo wg-quick up wg1

Confirma que tus primeros y segundos clientes Wireguard se están mostrando correctamente en tu servidor ejecutando wg.

Una terminal que muestra los dos nodos cliente comunicándose con el servidor Wireguard.

Pruebas de la red Wireguard

Con tu servidor y clientes en la red Wireguard, ahora puedes probar la conectividad y latencia entre tus nodos. Para hacer esto, asegúrate de tener herramientas de diagnóstico de red instaladas en tu sistema:

sudo apt install net-tools curl

En Fedora, solo necesitas instalar curl ya que ya viene con herramientas de red listas para usar:

sudo dnf install curl

Para Arch Linux, puedes usar pacman para instalar las herramientas de red y curl:

sudo pacman -S traceroute curl

Comienza rastreando la ruta de un paquete entre dos clientes. Lo siguiente mostrará cómo un paquete IP va de “10.0.0.2” a “10.0.0.3:”

traceroute 10.0.0.3

Verifica si alguno de tus nodos puede acceder a internet público haciendo ping a una dirección IP común:

ping-c5 8.8.8.8

Una terminal que muestra la latencia de la red Wireguard a un sitio externo.

Por último, confirma que tus nodos comparten la misma dirección IP pública hacia tu servidor Wireguard:

curl ipinfo.io/ip

Una terminal que resalta la dirección IP externa similar entre tres nodos Wireguard.

Aprender a configurar una red Wireguard en Linux es el primer paso para explorar el fascinante mundo de las VPN. Profundiza y mira nuestras selecciones de los mejores proveedores de VPN enfocados en la seguridad que puedes obtener hoy.

Crédito de la imagen: Kari Shea a través de Unsplash y Wikimedia Commons. Todas las alteraciones y capturas de pantalla por Ramces Red.