Laboratorio 5.5.1 · Instalación y configuración de una VPN con WireGuard (Ubuntu 24)¶
Objetivo
Aprender a desplegar una VPN sencilla y funcional con WireGuard en Ubuntu 24. Al finalizar, el alumnado será capaz de:
- Crear un servidor VPN.
- Conectar un cliente a la VPN.
- Verificar conectividad y tráfico cifrado.
1) ¿Qué vamos a hacer?¶
Montaremos una VPN real dentro del aula:
[Cliente] ---> (túnel cifrado WireGuard) ---> [Servidor VPN]
Cuando el cliente se conecte:
- Obtendrá una IP virtual (ejemplo:
10.0.0.2). - Podrá comunicarse de forma segura con el servidor (
10.0.0.1).
2) Entorno de trabajo¶
Máquinas necesarias¶
| VM | Sistema | Rol |
|---|---|---|
VPN-SERVER |
Ubuntu 24.04 | Servidor WireGuard |
VPN-CLIENT |
Ubuntu 24.04 | Cliente VPN |
Red¶
- Ambas máquinas deben estar en la misma red local (
labneto similar). - Debe existir conectividad IP entre cliente y servidor antes de empezar.
Importante
Ejecuta los comandos con un usuario con permisos de sudo.
3) Instalación de WireGuard¶
En ambas máquinas:
sudo apt update
sudo apt install wireguard -y
Comprobar instalación:
wg --version
4) Configuración del servidor VPN (VPN-SERVER)¶
Paso 1. Generar claves¶
wg genkey | tee server_private.key | wg pubkey > server_public.key
chmod 600 server_private.key
Ver claves:
cat server_private.key
cat server_public.key
Paso 2. Crear configuración¶
Editar el archivo:
sudo nano /etc/wireguard/wg0.conf
Contenido:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = CLAVE_PRIVADA_SERVIDOR
[Peer]
PublicKey = CLAVE_PUBLICA_CLIENTE
AllowedIPs = 10.0.0.2/32
Sustituye CLAVE_PRIVADA_SERVIDOR y CLAVE_PUBLICA_CLIENTE por los valores reales.
Paso 3. Levantar la interfaz VPN¶
sudo wg-quick up wg0
Ver estado:
sudo wg
ip a show wg0
Paso 4. Arranque automático (recomendado)¶
sudo systemctl enable wg-quick@wg0
5) Configuración del cliente VPN (VPN-CLIENT)¶
Paso 1. Generar claves¶
wg genkey | tee client_private.key | wg pubkey > client_public.key
chmod 600 client_private.key
Paso 2. Crear configuración¶
Editar:
sudo nano /etc/wireguard/wg0.conf
Contenido:
[Interface]
Address = 10.0.0.2/24
PrivateKey = CLAVE_PRIVADA_CLIENTE
[Peer]
PublicKey = CLAVE_PUBLICA_SERVIDOR
Endpoint = IP_SERVIDOR:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25
Notas:
IP_SERVIDORdebe ser la IP real del servidor en la LAN.PersistentKeepalive = 25ayuda a mantener el túnel activo.
Paso 3. Activar cliente¶
sudo wg-quick up wg0
Verificar:
sudo wg
ip a show wg0
6) Pruebas de funcionamiento¶
6.1 Ver IP VPN¶
ip a
Debe aparecer:
- Servidor:
10.0.0.1 - Cliente:
10.0.0.2
6.2 Hacer ping a través de la VPN¶
Desde el cliente:
ping 10.0.0.1
Opcional (desde servidor):
ping 10.0.0.2
6.3 Ver túnel activo¶
sudo wg
Debe mostrarse transferencia de datos (transfer) y latest handshake reciente.
7) Gestión básica del servicio¶
Comandos útiles en servidor y cliente:
sudo wg-quick down wg0 # detener
sudo wg-quick up wg0 # iniciar
sudo systemctl status wg-quick@wg0
8) Comprobación con Wireshark (opcional)¶
Filtro de captura:
udp.port == 51820
Se observará tráfico WireGuard, pero el contenido viaja cifrado y no es legible.
9) Problemas comunes¶
| Problema | Posible causa | Solución |
|---|---|---|
| No conecta | Claves incorrectas | Revisar PublicKey y PrivateKey en ambos equipos |
| No hay ping | AllowedIPs mal definida |
Comprobar red 10.0.0.0/24 y IPs /32 del peer |
| No aparece tráfico | Puerto bloqueado o endpoint erróneo | Revisar 51820/UDP e IP_SERVIDOR |
| Se desconecta | NAT o inactividad | Mantener PersistentKeepalive = 25 |
10) Entrega¶
Incluye capturas de:
wg0.confdel servidor.wg0.confdel cliente.- Salida de
sudo wgcon handshake y transferencia. - Ping exitoso entre
10.0.0.2y10.0.0.1.
11) Preguntas de reflexión¶
- ¿Qué IP obtiene el cliente dentro de la VPN?
- ¿Qué ventaja aporta una VPN frente a una red sin túnel cifrado?
- ¿Qué implica que el tráfico esté cifrado?
12) Evaluación¶
| Criterio | Puntos |
|---|---|
| Instalación correcta | 2 |
| Configuración del servidor | 2 |
| Configuración del cliente | 2 |
| Conectividad VPN verificada | 2 |
| Informe y evidencias | 2 |
Total: 10 puntos