Cómo usar VPN con OpenVPN y WireGuard en Linux
En el ecosistema de GNU/Linux, garantizar la privacidad y seguridad de tus comunicaciones es fundamental. Para ello, dos soluciones destacadas son OpenVPN y WireGuard. Ambas implementan túneles cifrados, pero difieren en diseño, rendimiento y complejidad de configuración.
Índice de contenidos
- Introducción a las VPN en Linux
- OpenVPN
- Instalación
- Generación de certificados
- Configuración cliente/servidor
- Arranque automático y firewall
- Troubleshooting
- WireGuard
- Instalación
- Generación de claves
- Archivo de configuración
- Comandos básicos y systemd
- Reglas de iptables y DNS
- Comparativa
- Buenas prácticas y consejos avanzados
1. OpenVPN
1.1 Instalación
En la mayoría de distribuciones, instalar OpenVPN es sencillo:
sudo apt update
sudo apt install openvpn easy-rsa
En Fedora/CentOS:
sudo dnf install openvpn easy-rsa
1.2 Generación de certificados
Utiliza easy-rsa para crear un PKI:
- Inicializa el directorio PKI:
make-cadir ~/openvpn-ca cd ~/openvpn-ca
- Construye la CA y el servidor:
./easyrsa init-pki ./easyrsa build-ca ./easyrsa gen-req server nopass ./easyrsa sign-req server server
- Genera certificados para clientes:
./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
- Diffie-Hellman y HMAC:
./easyrsa gen-dh openvpn --genkey --secret ta.key
1.3 Configuración cliente/servidor
Ejemplo de server.conf en /etc/openvpn/server/
:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
push redirect-gateway def1 bypass-dhcp
push dhcp-option DNS 1.1.1.1
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
El archivo de cliente client1.ovpn combina certificados y parámetros remotos:
client
dev tun
proto udp
remote vpn.midominio.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-CBC
remote-cert-tls server
verb 3
# contenido de ca.crt
# contenido de client1.crt
# contenido de client1.key
# contenido de ta.key
key-direction 1
1.4 Arranque automático y firewall
Activa el servicio:
sudo systemctl enable --now openvpn-server@server
Configura reglas de iptables para NAT:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
1.5 Troubleshooting frecuente
- Ver logs:
journalctl -u openvpn-server@server
- Problemas de DNS: Asegúrate de empujar servidores DNS válidos.
- Error de certificados: Comprueba fechas y nombres comunes (CN).
2. WireGuard
2.1 Instalación
En la mayoría de distros modernas:
sudo apt update
sudo apt install wireguard
Fedora/CentOS:
sudo dnf install wireguard-tools
2.2 Generación de claves
- Crea par de claves:
- Repite para servidor y cliente en sus respectivos hosts.
wg genkey tee privatekey wg pubkey > publickey
2.3 Archivo de configuración
Ejemplo de /etc/wireguard/wg0.conf en servidor:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = (clave privada del servidor)
[Peer]
PublicKey = (clave pública del cliente)
AllowedIPs = 10.0.0.2/32
Y en cliente wg0-client.conf:
[Interface]
Address = 10.0.0.2/24
PrivateKey = (clave privada del cliente)
DNS = 1.1.1.1
[Peer]
PublicKey = (clave pública del servidor)
Endpoint = vpn.midominio.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
2.4 Comandos básicos y systemd
- Levantar la interfaz:
sudo wg-quick up wg0
- Bajar la interfaz:
sudo wg-quick down wg0
- Habilitar arranque:
sudo systemctl enable wg-quick@wg0
- Ver estado:
sudo wg show wg0
2.5 Reglas de iptables y DNS
Para enrutar tráfico desde el servidor:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
WireGuard se integra de forma nativa en el kernel, por lo que el rendimiento es superior al de OpenVPN en la mayoría de casos.
3. Comparativa
Característica | OpenVPN | WireGuard |
---|---|---|
Código | C de usuario, OpenSSL | Kernel C, criptografía moderna |
Rendimiento | Bueno, depende de OpenSSL | Excelente, baja latencia |
Complejidad | Alta configuración | Muy simple |
Mobile | Clientes Android/iOS | Apps oficiales y terceros |
4. Buenas prácticas y consejos avanzados
- Kill-switch: Configura firewall para bloquear tráfico si cae la VPN.
- Monitoreo: Usa
watch sudo wg show
oopenvpn --status
. - Actualizaciones: Mantén software y kernel al día para parches de seguridad.
- Multi-hop: Combina WireGuard y OpenVPN en cascada para mayor anonimato.
- Logs: Limita nivel de verbosidad en producción (
verb 3
para OpenVPN).
Leave a Reply