Cómo configurar Wireguard VPN en Linux

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.

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.

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-toolsEn Fedora, puedes usar el gestor de paquetes dnf:
sudo dnf install wireguard-toolsPara Arch Linux, puedes ejecutar pacman para obtener las herramientas principales de Wireguard:
sudo pacman -S wireguard-toolsConfirma que has instalado correctamente las herramientas de Wireguard cargando su pantalla de ayuda:
wg -h
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 077Nota: 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.confPega 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 MASQUERADEAbre una nueva sesión de terminal, luego imprime la clave privada de tu servidor Wireguard:
sudocat/etc/wireguard/server-private-keyCopia la clave privada de tu servidor en tu portapapeles.

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

Encuentra la interfaz de red que tiene acceso a internet usando el comando ip:
ip route get 8.8.8.8Establece 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.

Abre el archivo “/etc/sysctl.conf” del servidor usando tu editor de texto favorito:
sudonano/etc/sysctl.confDesplázate hacia abajo hasta la línea que contiene net.ipv4.ip_forward=1, luego elimina el signo de número (#) que está delante.

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 077Genera 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.confPega 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= 25Reemplaza la variable PrivateKey con la clave privada de tu cliente.

Abre la sesión de terminal de tu servidor Wireguard, luego imprime su clave pública:
sudocat/etc/wireguard/server-public-keyEstablece el valor de la variable PublicKey a la clave pública de tu servidor.

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

Guarda tu archivo de configuración, luego usa el comando wg-quick para iniciar el cliente Wireguard:
sudo wg-quick up wg0
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.confPega 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= 25Establece 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.](https://www.maketecheasier.com/assets/uploads/2024/07/set-up-wireguard-linux-vpn-13-highlight-client1-public-key.png)
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 wg0Agregando 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.confAbre tu nuevo archivo de configuración usando tu editor de texto favorito:
sudonano/etc/wireguard/wg1.confEstablece la variable ListenPort a 60102. Hacer esto evitará cualquier colisión de puertos entre las interfaces VPN wg0 y wg1.

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.

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 077Genera 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.confPega 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= 25Establece 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 wg0Vinculando 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.confDesplázate hacia abajo hasta la sección [Peer], luego reemplaza la variable PublicKey con la clave pública de tu segundo cliente.

Guarda tu archivo de configuración, luego inicia la segunda interfaz VPN usando el comando wg-quick:
sudo wg-quick up wg1Confirma que tus primeros y segundos clientes Wireguard se están mostrando correctamente en tu servidor ejecutando wg.

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 curlEn Fedora, solo necesitas instalar curl ya que ya viene con herramientas de red listas para usar:
sudo dnf install curlPara Arch Linux, puedes usar pacman para instalar las herramientas de red y curl:
sudo pacman -S traceroute curlComienza 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.3Verifica 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
Por último, confirma que tus nodos comparten la misma dirección IP pública hacia tu servidor Wireguard:
curl ipinfo.io/ip
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.