Paso 1: Actualizar el sistema
Antes de empezar, asegúrate de que tu sistema esté actualizado.
sudo apt update && sudo apt upgrade
Paso 2: Instalar WireGuard
WireGuard está disponible en los repositorios oficiales de Debian, por lo que puedes instalarlo usando apt
.
sudo apt install wireguard wireguard-tools
Paso 3: Generar claves públicas y privadas
WireGuard utiliza criptografía de clave pública/privada. Necesitarás generar un par de claves para el servidor y cada cliente.
wg genkey | tee privatekey | wg pubkey > publickey
Esto generará dos archivos:
privatekey
: Contiene la clave privada.publickey
: Contiene la clave pública.
Paso 4: Configurar la interfaz de WireGuard en el servidor
- Crea un archivo de configuración para el servidor de WireGuard en
/etc/wireguard/wg0.conf
.
sudo nano /etc/wireguard/wg0.conf
- Agrega la configuración básica al archivo. Usa las claves que generaste anteriormente.
[Interface]
Address = 10.0.0.1/24 # Dirección IP del servidor dentro de la VPN
ListenPort = 51820 # Puerto para WireGuard
PrivateKey = <clave_privada_del_servidor>
SaveConfig = true
- Habilita el reenvío de IPs para permitir el tráfico entre los clientes y el servidor:
sudo nano /etc/sysctl.conf
Descomenta o agrega la siguiente línea:
net.ipv4.ip_forward=1
Aplica los cambios:
sudo sysctl -p
Paso 5: Configurar las reglas de firewall (opcional)
Si estás utilizando iptables
, configura las reglas para permitir el tráfico a través del puerto WireGuard y habilita el enmascaramiento:
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Suponiendo que eth0 es tu interfaz de red pública
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT
Guarda las reglas de iptables
:
sudo apt install iptables-persistent
sudo netfilter-persistent save
Paso 6: Agregar clientes
- Genera claves para cada cliente siguiendo el mismo procedimiento:
wg genkey | tee client_privatekey | wg pubkey > client_publickey
- Agrega la información del cliente en el archivo de configuración del servidor (
/etc/wireguard/wg0.conf
):
[Peer]
PublicKey = <clave_publica_del_cliente>
AllowedIPs = 10.0.0.2/32 # Dirección IP que asignas al cliente dentro de la VPN
- Recarga la configuración de WireGuard:
sudo wg addconf wg0 <(wg-quick strip wg0)
Paso 7: Configurar el cliente
- En el cliente, crea un archivo de configuración
/etc/wireguard/wg0.conf
.
sudo nano /etc/wireguard/wg0.conf
- Agrega la configuración siguiente, ajustando las direcciones IP y claves:
[Interface]
PrivateKey = <clave_privada_del_cliente>
Address = 10.0.0.2/24 # IP del cliente dentro de la VPN
[Peer]
PublicKey = <clave_publica_del_servidor>
Endpoint = <ip_publica_del_servidor>:51820
AllowedIPs = 0.0.0.0/0 # Para enrutar todo el tráfico a través de la VPN
Paso 8: Iniciar WireGuard en el servidor y cliente
- En el servidor, inicia el servicio de WireGuard:
sudo systemctl start [email protected]
sudo systemctl enable [email protected]
- En el cliente, también inicia WireGuard:
sudo systemctl start [email protected]
sudo systemctl enable [email protected]
Paso 9: Verificar la conexión
En el servidor, verifica que el cliente esté conectado usando el siguiente comando:
sudo wg
Esto te mostrará las interfaces activas y los pares conectados.
Paso 10: Habilitar WireGuard al inicio del sistema
Para asegurarte de que WireGuard se ejecute automáticamente en el arranque tanto en el servidor como en el cliente, habilita el servicio:
sudo systemctl enable [email protected]
¡Y eso es todo! WireGuard debería estar configurado y funcionando. Puedes añadir más clientes repitiendo los pasos 6 y 7 para cada uno.