WireGuard VPN en Oracle Cloud: full tunnel, kill switch y privacidad frente a tu ISP

Índice
- La idea
- Lo que vamos a configurar
- Configurar el servidor
- Configurar el cliente
- Script de activación
- Verificación completa
- Ejemplo en la práctica
- Limitaciones
- Flujo completo
El Imperio no necesita interceptar tus mensajes. Le basta con controlar los nodos por donde pasan.
Cada comunicación en la galaxia pasa por infraestructura imperial. Cada salto hiperspacial queda registrado. No es vigilancia activa — es vigilancia pasiva, automatizada, permanente. El Imperio simplemente controla la infraestructura.
Tu ISP hace lo mismo. Cada petición DNS, cada conexión TCP, cada byte de tráfico pasa por sus routers antes de llegar a internet. No necesita leer el contenido para saber lo que haces — con los metadatos tiene suficiente.
Un relay WireGuard en Oracle Cloud corta esa cadena. Todo tu tráfico sale cifrado hacia un servidor en Frankfurt. Tu ISP ve bytes cifrados con destino a una IP de Oracle. Nada más. Lo que hagas a partir de ahí no pasa por sus registros.
El Halcón Milenario llevaba transpondedor falsificado. Tú tienes un túnel cifrado.
Activamos el modo alerta.
Si tienes la instancia gratuita de Oracle Cloud montada (si no, empieza por aquí), este artículo explica cómo convertirla en un relay WireGuard que enruta todo tu tráfico cuando lo activas.
Aviso de uso responsable
Esta configuración está diseñada para uso personal legítimo: privacidad frente a tu ISP, protección en redes públicas (hoteles, aeropuertos, cafeterías), o cualquier situación donde prefieras que tu tráfico no quede expuesto a terceros.
No proporciona anonimato completo. La IP de Oracle Cloud es rastreable hasta Oracle (ASN 31898). No es un sustituto de Tor ni de otras soluciones diseñadas para anonimato fuerte.
La idea
Tu ISP ve todo el tráfico que sale de tu router. No necesita romper el cifrado HTTPS — con los metadatos tiene suficiente: a qué servicios te conectas, cuándo, con qué frecuencia. Lo mismo aplica cuando usas la red de un hotel, una cafetería o una oficina.
La solución: un relay WireGuard en una instancia cloud. Cuando lo activo, todo el tráfico de mi máquina sale cifrado hacia ese servidor. El ISP solo ve una conexión UDP cifrada a Oracle Cloud. Lo que hago a partir de ahí no pasa por sus routers.
Lo llamo modo alerta — off por defecto, on cuando lo necesito.
Tu máquina
│
│ WireGuard (UDP 51820, cifrado)
▼
Servidor Oracle Cloud ←── tu IP de salida
│
│ NAT
▼
Internet
Lo que vamos a configurar
- Servidor (instancia Oracle Cloud Debian ARM64): relay WireGuard con NAT
- Cliente (tu máquina Debian): full tunnel, kill switch, DNS cifrado
- Script de activación: on/off/status con verificación automática
No se configura arranque automático en el boot. El túnel se activa solo cuando se necesita.
Configurar el servidor
Conéctate a tu instancia Oracle Cloud:
ssh debian@IP_DE_TU_SERVIDOR
Instalar WireGuard
sudo apt update && sudo apt install -y wireguard wireguard-tools
Habilitar reenvío de paquetes
El servidor necesita redirigir el tráfico de los clientes hacia internet:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Generar las claves
sudo mkdir -p /etc/wireguard && sudo chmod 700 /etc/wireguard
# Par de claves del servidor
wg genkey | sudo tee /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
sudo chmod 600 /etc/wireguard/server.key
# Par de claves por cada cliente
wg genkey | sudo tee /etc/wireguard/client1.key | wg pubkey | sudo tee /etc/wireguard/client1.pub
sudo chmod 600 /etc/wireguard/client1.key
Si tienes más máquinas que quieras conectar, genera un par adicional por cada una.
Identificar la interfaz de red
ip route | grep default
# default via X.X.X.X dev enp0s6 proto dhcp ...
Anota el nombre de la interfaz (enp0s6 en Debian ARM64 en Oracle Cloud, puede variar).
Configuración del servidor
Guarda las claves que necesitarás:
sudo cat /etc/wireguard/server.key # clave privada del servidor
sudo cat /etc/wireguard/server.pub # clave pública del servidor
sudo cat /etc/wireguard/client1.pub # clave pública del cliente
Crea /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = CLAVE_PRIVADA_DEL_SERVIDOR
Address = 10.99.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s6 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s6 -j MASQUERADE
[Peer]
# cliente 1
PublicKey = CLAVE_PUBLICA_DEL_CLIENTE
AllowedIPs = 10.99.0.2/32
Sustituye enp0s6 por tu interfaz real, y las claves por las generadas.
sudo chmod 600 /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
Abrir el puerto UDP 51820
Recuerda que Oracle Cloud tiene dos capas de firewall (explicadas en el artículo anterior). En el servidor:
sudo ufw allow 51820/udp
Y en la consola web de Oracle: Security List → Add Ingress Rule → UDP 51820 desde 0.0.0.0/0.
Configurar el cliente (Debian)
En tu máquina local:
sudo apt install -y wireguard wireguard-tools resolvconf
La clave privada del cliente
La clave privada del cliente (client1.key) que generaste en el servidor necesita estar en el cliente. Cópiala de forma segura:
# En el servidor, muestra la clave
sudo cat /etc/wireguard/client1.key
# En el cliente, crea el directorio y guarda la clave
sudo mkdir -p /etc/wireguard && sudo chmod 700 /etc/wireguard
# pega el contenido en:
sudo nano /etc/wireguard/client.key
sudo chmod 600 /etc/wireguard/client.key
Configuración del cliente
Crea /etc/wireguard/wg-relay.conf:
[Interface]
PrivateKey = CLAVE_PRIVADA_DEL_CLIENTE
Address = 10.99.0.2/32
DNS = 1.1.1.1
PostUp = iptables -I OUTPUT ! -o wg-relay -m mark ! --mark $(wg show wg-relay fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PostDown = iptables -D OUTPUT ! -o wg-relay -m mark ! --mark $(wg show wg-relay fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
[Peer]
PublicKey = CLAVE_PUBLICA_DEL_SERVIDOR
Endpoint = IP_DE_TU_SERVIDOR:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
sudo chmod 600 /etc/wireguard/wg-relay.conf
Si Oracle cambia tu IP: Las instancias Oracle Cloud tienen IP “ephemeral” — raramente cambia, pero puede ocurrir si reinicias la instancia. Si el túnel deja de conectar, comprueba primero si la IP del servidor ha cambiado. Para evitarlo, instala un cliente DDNS en el servidor (ver DDNS gratuito en Linux) y usa el hostname en lugar de la IP en
Endpoint:Endpoint = tu-subdominio.duckdns.org:51820Así el cliente siempre resuelve la IP actual, aunque Oracle la haya rotado.
Las líneas PostUp/PostDown son el kill switch: si el túnel cae, bloquean todo el tráfico saliente para que tu IP real no quede expuesta accidentalmente.
No actives el arranque automático:
# NO ejecutes esto — el túnel debe ser manual
# sudo systemctl enable wg-quick@wg-relay
Evitar que NetworkManager interfiera
NetworkManager puede borrar las rutas que añade wg-quick:
sudo tee /etc/NetworkManager/conf.d/99-wireguard-unmanaged.conf <<'EOF'
[keyfile]
unmanaged-devices=interface-name:wg-relay
EOF
sudo systemctl reload NetworkManager
Permisos para activar sin contraseña (opcional)
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/wg-quick, /usr/bin/wg" | \
sudo tee /etc/sudoers.d/99-wg-relay
Script de activación
Crea ~/relay.sh:
#!/bin/bash
set -euo pipefail
IFACE="wg-relay"
_status() {
if ip link show "$IFACE" &>/dev/null 2>&1; then
local ip_pub dns_res
ip_pub=$(curl -s --max-time 5 https://ifconfig.me 2>/dev/null || echo "sin respuesta")
dns_res=$(dig +short whoami.akamai.net TXT 2>/dev/null | tr -d '"' | head -1 || echo "sin respuesta")
echo "Estado: ACTIVO"
echo "IP pública: $ip_pub"
echo "DNS desde: $dns_res"
else
local ip_real
ip_real=$(curl -s --max-time 5 https://ifconfig.me 2>/dev/null || echo "sin respuesta")
echo "Estado: INACTIVO"
echo "IP real: $ip_real"
fi
}
case "${1:-}" in
on)
echo "Activando relay..."
sudo wg-quick up "$IFACE"
sleep 2 && _status
;;
off)
echo "Desactivando relay..."
sudo wg-quick down "$IFACE"
echo "Tunnel desactivado."
;;
status) _status ;;
*) echo "Uso: $0 {on|off|status}"; exit 1 ;;
esac
chmod +x ~/relay.sh
Verificación completa
Activa el túnel y comprueba tres cosas:
./relay.sh on
1. IP pública — debe ser la del servidor Oracle, no la tuya:
curl ifconfig.me
# debe mostrar la IP de tu instancia Oracle Cloud
2. Sin DNS leak — el resolver no debe ser el de tu ISP:
dig +short whoami.akamai.net TXT
# debe mostrar una IP de Cloudflare (1.1.1.1/1.0.0.1) o similar
# NO debe aparecer la IP ni el nombre de tu ISP
3. Kill switch — si el túnel cae, el tráfico se bloquea:
sudo wg-quick down wg-relay
curl --max-time 5 ifconfig.me
# debe fallar — no hay salida si el kill switch funciona
sudo wg-quick up wg-relay
Si los tres pasan, el sistema funciona correctamente.
Cómo lo uso en la práctica
Estás en un hotel, conectado a su wifi. No sabes quién más está en esa red ni qué registra el router. O simplemente prefieres que tu ISP doméstico no acumule historial de navegación.
El flujo es este:
# 1. Activo el relay
./relay.sh on
# IP pública: 141.x.x.x (Oracle Cloud Frankfurt)
# DNS desde: Cloudflare
# 2. Navego con normalidad
# Todo el tráfico sale cifrado hacia Oracle Cloud
# El router del hotel / el ISP ven bytes cifrados, nada más
# 3. Desactivo al terminar
./relay.sh off
Desde la perspectiva de tu ISP o de la red local, todo el tráfico es una única conexión UDP cifrada a una IP de Oracle Cloud en Frankfurt. Cuando terminas, lo desactivas y vuelves a la normalidad.
Limitaciones que debes conocer
| Limitación | Detalle |
|---|---|
| No es anonimato completo | La IP de Oracle Cloud es pública y rastreable hasta Oracle (ASN 31898). Un WHOIS la identifica como cloud, no como usuario doméstico. |
| Oracle puede ver el tráfico | A nivel de infraestructura, Oracle tiene acceso a los metadatos de red de su plataforma. El tráfico cifrado sale desde su servidor, no desde el tuyo. |
| WebRTC puede filtrar tu IP real | Un navegador sin configurar puede revelar tu IP local vía WebRTC aunque el tráfico vaya por VPN. Desactívalo: en Firefox, about:config → media.peerconnection.enabled = false. |
| IP estática pero no garantizada | Oracle asigna IPs “ephemeral” que raramente cambian, pero pueden hacerlo si reinicias la instancia. |
Flujo completo de trabajo
# Activar cuando lo necesites
./relay.sh on
# Verificar que todo está correcto
./relay.sh status
# ... navegas con privacidad ...
# Desactivar al terminar
./relay.sh off
Simple, reversible, y sin impacto en el uso cotidiano del equipo.
