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

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

Índice

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:51820

Así 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ónDetalle
No es anonimato completoLa 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áficoA 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 realUn navegador sin configurar puede revelar tu IP local vía WebRTC aunque el tráfico vaya por VPN. Desactívalo: en Firefox, about:configmedia.peerconnection.enabled = false.
IP estática pero no garantizadaOracle 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.