Configurar WireGuard en Ubuntu 24.04 para acceso remoto seguro

Instala WireGuard en Ubuntu 24.04 y configura un cliente de túnel dividido con claves protegidas, reenvío IP, UFW y acceso a la LAN.

Configurar WireGuard en Ubuntu 24.04 para acceso remoto seguro

Este ejemplo usa Ubuntu 24.04 como puerta de enlace VPN: wg0 tiene 10.20.30.1/24, el cliente 10.20.30.2, la LAN remota 192.168.1.0/24 y WireGuard escucha en UDP 51820. ens18 es la interfaz hacia la LAN. Sustituye interfaces, direcciones y DNS según tu red. Necesitas un punto de acceso público alcanzable; si el servidor está tras NAT, redirige UDP 51820 en el router.

Instala e identifica la interfaz

Instala los paquetes e identifica la interfaz real hacia la LAN. Si administras por SSH, comprueba y permite su puerto antes de activar UFW; el ejemplo posterior supone el puerto 22.

sudo apt update
sudo apt install wireguard ufw
ip -br address

Genera las claves del servidor

Crea las claves como root en /etc/wireguard con umask 077. La guía anterior intentaba entrar en un directorio reservado a root desde una consola sin privilegios. Entrega al cliente solo server.pub; no publiques server.key ni perfiles completos.

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
sudo cat /etc/wireguard/server.pub

Activa el reenvío IPv4

Escribe la primera línea mostrada en /etc/sysctl.d/99-wireguard-forward.conf y ejecuta los dos comandos siguientes. El valor debe ser 1. El reenvío no crea por sí mismo reglas de cortafuegos ni una ruta de retorno.

net.ipv4.ip_forward=1
sudo sysctl --system
sysctl net.ipv4.ip_forward

Configura el servidor

Guarda este bloque en /etc/wireguard/wg0.conf. Sustituye SERVER_PRIVATE_KEY por el contenido de server.key y CLIENT_PUBLIC_KEY por la clave pública generada en el cliente. En el servidor, AllowedIPs = 10.20.30.2/32; cada cliente necesita dirección y clave únicas. No añadas comentarios ni espacios a una línea de clave.

[Interface]
Address = 10.20.30.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.20.30.2/32

UFW y ruta a la LAN

Añade las reglas antes de activar UFW. La regla route permite reenviar tráfico del túnel a la LAN indicada. Los dispositivos de la LAN necesitan también ruta de regreso a 10.20.30.0/24 mediante la IP LAN del servidor Ubuntu: configúrala en el router. Si no puedes, considera un NAT documentado hacia la LAN administrado por el cortafuegos; los dispositivos verán la IP de la puerta de enlace y no la del cliente. No abras el reenvío general hacia Internet.

sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on ens18 from 10.20.30.0/24 to 192.168.1.0/24
sudo ufw status verbose
sudo ufw enable

Genera las claves del cliente

En un cliente Linux, crea el par en un directorio privado y transfiere al servidor solo client1.pub. En el móvil, genera las claves en la aplicación WireGuard: un QR del perfil incluye la clave privada y debe protegerse.

umask 077
wg genkey > client1.key
wg pubkey < client1.key > client1.pub

Configura el cliente

Importa el bloque en la aplicación y sustituye claves y punto de acceso. Estas AllowedIPs crean un túnel dividido: solo la VPN y la LAN remota pasan por él. Configura un DNS LAN solo si existe y es accesible por la VPN. PersistentKeepalive = 25 ayuda tras NAT, pero no siempre hace falta.

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.20.30.2/24

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.net:51820
AllowedIPs = 10.20.30.0/24, 192.168.1.0/24
PersistentKeepalive = 25

Inicia y verifica

Protege wg0.conf, inicia el servicio y comprueba el intercambio de claves y los contadores con wg show. Desde el cliente prueba 10.20.30.1 y después un equipo LAN permitido. Si no hay intercambio, revisa endpoint, UDP, redirección y claves; si lo hay pero no llegas a la LAN, revisa reenvío IP, UFW, cortafuegos de equipos y ruta de retorno. Un ping bloqueado no descarta un servicio accesible.

sudo chmod 600 /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
sudo wg show
sudo ufw status numbered

Más clientes y fuentes

Cada par nuevo requiere otra clave y otra dirección, por ejemplo 10.20.30.3/32 en el servidor. Reload incorpora pares sin recrear la interfaz; modificar Address, PostUp o rutas de wg-quick puede requerir reiniciarla. Guías oficiales: https://documentation.ubuntu.com/server/how-to/wireguard-vpn/peer-to-site/index.html y https://documentation.ubuntu.com/server/how-to/wireguard-vpn/common-tasks/index.html .

sudo systemctl reload wg-quick@wg0

Compartir

¿Cuál es tu reacción?

Me gusta Me gusta 0
No me gusta No me gusta 0
Me encanta Me encanta 0
Divertido Divertido 0
Enfadado Enfadado 0
Triste Triste 0
¡Vaya! ¡Vaya! 0