WireGuard entra al bar
Si bien nuestro túnel SSH funciona, tiene algunos contras, los mismos que nos hacen tener que usar herramientas VPN como WireGuard:
- El túnel SSH se cae: Un túnel SSH usa el SSH de la máquina. Esta conexión SSH muchas veces tiene un límite de tiempo, o desconecta automáticamente después de cierto tiempo de inactividad. Por ello, la conexión puede caerse, y nadie quiere eso en una situación 1v1.
- SSH no es para esto: Tener un servidor que usa un túnel SSH no es profesional. Y esta solución es más que nada en entornos de prueba, o para solucionar un tema rápido. No para tener un servidor 24/7. Además, es inseguro.
- Una VPN suena mucho mejor: WireGuard se especializa en esto, y funciona muy bien.
WireGuard?1!?!?1! GUARDIA DE CABLES?!1?!?2!?!?!11
Según el sitio oficial de WireGuard:
WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography.
De aquí nos importan tres puntos clave:
- Extremadamente simple.
- Rápido y moderno.
- VPN
El primer punto podría no ser cierto; inicialmente, comprender y configurar WireGuard puede ser difícil. Pero cuando ya todo está hecho, lo entiendes como si nada.

¿Por que cambiar a WireGuard?
Inicialmente, usamos túneles SSH por el problema que la mayoría de los que vivimos en Sudamérica tenemos…
Vivimos en un NAT.
-Joker
- Abrir puertos no funcionará.
- Nuestra IP pública la usan todos los clientes del mismo ISP.
- El LogMeIn Hamachi es ahora de pago.
Si bien existen servicios que nos permiten hospedar un servidor en nuestro hogar y mostrarlo a internet como:
- Playit.gg
- ngrok
- ZeroTier
- TailScale
Usarlos es aburridísimo. Y no nos proveen de valor.
La nueva infraestructura nos espera
Igualmente, requerimos de un VPS.

Nuestra infraestructura tiene varios componentes, en WireGuard se conocen como:
- Peer: Es un computador, servidor, lo que sea que computa y tiene acceso a internet.
- Llaves: Llegan dos maracas, la privada y la pública. Son llaves que permitirán autenticar a un Peer. Las llaves públicas se usan para cifrar un paquete, y la llave privada para descifrarlo.
- Interfaz: Es, en resumen, un puerto físico en un PC. En este caso, será virtual, usando los nombres wg0, wg1, y así…
Lo que crearemos es una VPN. O Red Privada Virtual; aquí usamos una interfaz emulada, llaves para autentificar y cifrar paquetes y Peers que se comunican entre si.
Nuestro VPS tiene IP pública real, podemos conectarnos y el VPS puede vernos. Por lo que lo usaremos dentro de nuestra VPN como punto de acceso. Conectando nuestro servidor en el hogar con el internet.
Antes de comenzar, definamos algunas variables:
| IP del VPS en interfaz wg0 | 10.10.0.1 |
| IP del Refrigerador en interfaz wg0 | 10.10.0.2 |
- Nuestro VPS redirigirá el tráfico que le llegue a 0.0.0.0:25565 hacia nuestro Refrigerador en 10.10.0.2:25565 a través de la VPN.
En ambos servidores (VPS y Refrigerador):
# Instalamos wireguard
sudo apt update
sudo apt install wireguard
# Generamos las llaves publicas y privadas
wg genkey | tee privatekey | wg pubkey > publickey
Recuerda apuntar los contenidos de ambas llaves de ambos equipos en tu portapapeles. Usa cat para ello.
Dentro de Refrigerador:
sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.0.2/24
PrivateKey = REFRIGERADOR_PRIVATE_KEY
[Peer]
PublicKey = VPS_PUBLIC_KEY
Endpoint = IP_DEL_VPS:51820
AllowedIPs = 10.10.0.0/24
PersistentKeepalive = 25Dentro del VPS:
sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.0.1/24
PrivateKey = VPS_PRIVATE_KEY
ListenPort = 51820
[Peer]
PublicKey = REFRIGERADOR_PUBLIC_KEY
AllowedIPs = 10.10.0.2/32
PersistentKeepalive = 25En ambos servidores:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0Ahora, hacemos ping a cada Peer, dentro del VPS como en el Refrigerador:
| VPS | Refrigerador |
| ping 10.10.0.2 | ping 10.10.0.1 |
Eso nos debería decir si hay ping, y qué latencia existe.
Ahora, que el ping funciona. Debemos configurar las rutas dentro de nuestro VPS:
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination 10.10.0.2:25565
sudo iptables -A FORWARD -p tcp -d 10.10.0.2 --dport 25565 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.10.0.2 --dport 25565 -j MASQUERADECon ello ya deberíamos poder acceder a nuestro servidor. Pero puede que el UFW no esté habilitado en ambos servidores:
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 25565
sudo ufw allow 51820Y ya esta.
Con ello, podemos tener nuestro Refrigerador encendido 24/7 sirviendo un servidor de Minecraft. Podemos estar seguros de que la conexión será estable y que no tendremos problemas con el NAT.
Cabe mencionar que, cada vez que el VPS se reinicie, las tablas IP se perderán. Por lo que será necesario volver a ejecutarlas, o se pueden guardar con el paquete cuyo nombre no recuerdo.