Cómo usar VPN con OpenVPN y WireGuard en Linux

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

  1. Introducción a las VPN en Linux
  2. OpenVPN
    • Instalación
    • Generación de certificados
    • Configuración cliente/servidor
    • Arranque automático y firewall
    • Troubleshooting
  3. WireGuard
    • Instalación
    • Generación de claves
    • Archivo de configuración
    • Comandos básicos y systemd
    • Reglas de iptables y DNS
  4. Comparativa
  5. 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:

  1. Inicializa el directorio PKI:
    make-cadir ~/openvpn-ca
    cd ~/openvpn-ca
  2. Construye la CA y el servidor:
    ./easyrsa init-pki
    ./easyrsa build-ca
    ./easyrsa gen-req server nopass
    ./easyrsa sign-req server server
  3. Genera certificados para clientes:
    ./easyrsa gen-req client1 nopass
    ./easyrsa sign-req client client1
  4. 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

  1. Crea par de claves:
  2. wg genkey  tee privatekey  wg pubkey > publickey
  3. Repite para servidor y cliente en sus respectivos hosts.

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 o openvpn --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).
Conclusión: Tanto OpenVPN como WireGuard aportan sólidas soluciones VPN en Linux. OpenVPN ofrece mayor madurez y compatibilidad, mientras que WireGuard destaca por su ligereza y rendimiento. La elección dependerá de tus necesidades de seguridad, facilidad de gestión y entorno de despliegue.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *