Per què muntar la teva pròpia VPN?
Les VPNs comercials tenen el seu lloc, però si ja tens un servidor o VPS (encara que sigui de 5€/mes), muntar la teva pròpia té avantatges clars:
- Confies en tu mateix, no en una empresa VPN la política de registres de la qual desconèixes
- Accés a la teva xarxa domèstica o de servidors des de qualsevol lloc
- Sense límits de velocitat ni de dispositius
- Cost gairebé zero si ja tens el servidor
Per què WireGuard i no OpenVPN?
OpenVPN porta anys sent l'estàndard però WireGuard el supera en:
- Velocitat: protocol més eficient, menys latència
- Simplicitat: ~4.000 línies de codi vs ~400.000 d'OpenVPN
- Configuració: de debò, 15 minuts i funciona
- Seguretat: criptografia moderna (ChaCha20, Curve25519, BLAKE2)
Requisits
- Un servidor Linux amb IP pública (VPS de qualsevol proveïdor, o el teu homelab amb port forwarding)
- Ubuntu 22.04 o Debian 12 (les comandes que faig servir aquí)
- Port UDP lliure (per defecte el 51820)
Instal·lació al servidor
# Instal·lar WireGuard
sudo apt update && sudo apt install wireguard -y
# Generar claus del servidor
wg genkey | sudo tee /etc/wireguard/server_private.key | \
wg pubkey | sudo tee /etc/wireguard/server_public.key
# Veure les claus (les necessitaràs)
sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key
Configuració del servidor
Crea el fitxer /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = <ENGANXA_AQUÍ_server_private.key>
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Client 1 (el teu PC de casa)
[Peer]
PublicKey = <PUBLIC_KEY_DEL_CLIENT>
AllowedIPs = 10.0.0.2/32
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo systemctl enable --now wg-quick@wg0
sudo wg show
Configuració del client
wg genkey | tee client_private.key | wg pubkey > client_public.key
Fitxer de configuració del client (wg-client.conf):
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.0.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <IP_DEL_TEU_SERVIDOR>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Clients mòbils
L'app oficial de WireGuard a Android i iOS pot importar la configuració com a fitxer o com a codi QR:
sudo apt install qrencode
qrencode -t ansiutf8 < wg-client.conf
Eina alternativa: wg-easy
Si prefereixes una interfície web per gestionar-ho tot, wg-easy s'instal·la amb Docker i ofereix generació de QR i gestió de clients des del navegador.