- ¿Quieres instalar OpenVPN en Linux como cliente y enrutar rutas específicas a través de la VPN o la ruta normal?
- Requisitos previos
- Instalación de OpenVPN
- Configuración básica (ejecución manual)
- Control de ruta predeterminado: comportamiento predeterminado del servidor
- Método 1: Enviar solo algunas IP a través de VPN (túnel dividido)
- Método 2: Todo el tráfico pasa por VPN, pero algunas IP específicas pasan por la ruta normal (Bypass)
- Método 3: enrutamiento basado en políticas
- Conexión con systemd (inicio automático)
- Problemas de DNS y resolución de nombres
- Ejemplo completo de client.ovpn (muestra)
- Consejos de seguridad y funcionamiento
- Corregir errores comunes
- Comparación de aplicaciones y consejos para diferentes tipos de usuarios
- Resumen y conclusión
¿Quieres instalar OpenVPN en Linux como cliente y enrutar rutas específicas a través de la VPN o la ruta normal?
En esta guía práctica y técnica paso a paso, le explicaremos cómo configurar OpenVPN como cliente en distribuciones de Linux populares. El objetivo es proporcionar archivos de ejemplo, scripts de subida y bajada para la gestión de rutas, métodos de túnel dividido y omisión de IP, y consejos para la autenticación con nombre de usuario y contraseña.
Requisitos previos
Antes de comenzar, asegúrese de tener lo siguiente:
- Sistema Linux (Ubuntu/Debian/CentOS/Fedora/Alma)
- Cerrado OpenVPN Instalado
- Archivo o archivo de configuración del servidor .ovpn Del proveedor de VPN
- Nombre de usuario/contraseña en caso de autenticación combinada (usuario/contraseña + certificado)
Instalación de OpenVPN
Comandos de instalación para distribuciones comunes:
sudo apt update && sudo apt install openvpn
sudo dnf install openvpn
Configuración básica (ejecución manual)
Si el archivo cliente.ovpn Si lo tiene, use este comando para ejecutarlo inmediatamente:
sudo openvpn --config client.ovpnSi el servidor usa nombre de usuario/contraseña y no desea ingresarlos cada vez, cree un archivo de credenciales:
sudo tee /etc/openvpn/credentials <<'EOF'
myuser
mypassword
EOF
sudo chmod 600 /etc/openvpn/credentialsEn el archivo .ovpn La siguiente línea debe existir o agregarse:
auth-user-pass /etc/openvpn/credentialsConsejo de seguridad: De autenticación sin caché Úselo para evitar que OpenVPN almacene en caché la contraseña en la memoria:
auth-nocachechmod 600 Proteja y utilice la autenticación basada en certificados (certificado de cliente) y tls-crypt/tls-auth para mayor seguridad.
Control de ruta predeterminado: comportamiento predeterminado del servidor
El comportamiento predeterminado de las rutas a menudo lo determina el servidor:
- Si el servidor
puerta de enlace de redirección def1Si presionas, todo tu tráfico pasará por la VPN (túnel completo). - Para evitar que el servidor acepte la ruta predeterminada, puede utilizar
ruta-sin-tirónUtilice y luego agregue manualmente las rutas requeridas.
Método 1: Enviar solo algunas IP a través de VPN (túnel dividido)
Si desea que solo se envíen direcciones específicas a través de la VPN, utilice ruta-sin-tirón En el archivo cliente.ovpn Utilice y agregue las rutas deseadas.
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
route-nopull
route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0Explicación: Con ruta-sin-tirón No se aceptan rutas del servidor y estás atrapado con las líneas ruta Enruta destinos específicos a través de la VPN.
Método 2: Todo el tráfico pasa por VPN, pero algunas IP específicas pasan por la ruta normal (Bypass)
Cuando el servidor puerta de enlace de redirección def1 Si desea que algunas direcciones específicas pasen por la ruta predeterminada (Internet), debe guardar la puerta de enlace predeterminada y reescribir las rutas de derivación.
A) Guarde la puerta de enlace original antes de conectarse
Comandos de muestra para obtener la puerta de enlace y el dispositivo predeterminados antes de conectarse:
GW=$(ip route show default | awk '/default/ {print $3}')
DEV=$(ip route show default | awk '/default/ {print $5}')Después de levantarse tun0, vuelve a agregar las IP que quieres omitir a través de GW:
sudo ip route add 203.0.113.0/24 via $GW dev $DEV
sudo ip route add 8.8.8.8/32 via $GW dev $DEVb) Automatizar con script arriba/abajo
En cliente.ovpn Agregue las siguientes líneas para ejecutar los scripts:
script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.shEjemplo /etc/openvpn/client-up.sh:
#!/bin/bash
echo "$(ip route show default | awk '/default/ {print $3, $5}')" > /var/run/openvpn.origgw
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route add 8.8.8.8/32 via $GW dev $DEV
ip route add 203.0.113.45/32 via $GW dev $DEV
exit 0Ejemplo /etc/openvpn/client-down.sh:
#!/bin/bash
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route del 8.8.8.8/32 via $GW dev $DEV || true
ip route del 203.0.113.45/32 via $GW dev $DEV || true
rm -f /var/run/openvpn.origgw
exit 0No olvides ejecutar los scripts:
sudo chmod +x /etc/openvpn/client-up.sh /etc/openvpn/client-down.sh
Método 3: enrutamiento basado en políticas
Puede utilizar el enrutamiento basado en políticas para dirigir el tráfico específico de origen a través de la VPN.
echo "200 vpnroute" | sudo tee -a /etc/iproute2/rt_tables
sudo ip rule add from 10.0.0.5/32 lookup vpnroute
sudo ip route add default dev tun0 table vpnroutePara encontrar información tun0 Y puerta de enlace virtual:
ip -4 addr show dev tun0
ip route show dev tun0
Conexión con systemd (inicio automático)
Para los archivos de configuración en la ruta /etc/openvpn/cliente/ Puede ejecutar la unidad systemd:
sudo systemctl start openvpn-client@client
sudo systemctl enable openvpn-client@client
sudo journalctl -u openvpn-client@client -f
Problemas de DNS y resolución de nombres
Si el servidor envía DNS, algunas distribuciones requieren un script actualizar-resolv-conf o coordinación con systemd-resuelto Tienes.
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-confEn sistemas que systemd-resuelto Es posible que requieran configuración adicional.
Ejemplo completo de client.ovpn (muestra)
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
auth-user-pass /etc/openvpn/credentials
auth-nocache
route-nopull
route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0
script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh
Consejos de seguridad y funcionamiento
- Crea el archivo de credenciales con
chmod 600Proteger. - Del certificado del cliente y
autenticación tls/tls-cryptÚselo para evitar ataques DoS simples. - De autenticación sin caché Úselo para evitar almacenar la contraseña en la memoria caché.
- Mantenga OpenVPN actualizado y utilice cifrado/hash moderno como
AES-256-GCMOCHACHA20Usar. - Supervise los registros y use systemd con logrotate para rotarlos.
Para entornos que requieren la latencia más baja (comerciantes/jugadores), utilice ubicaciones cercanas o túneles divididos para enrutar solo los servicios que necesita para mantener el ping y la estabilidad.
Corregir errores comunes
- Conexión no establecida: Verifique el puerto y el protocolo en el firewall (grupo ufw/iptables/security).
- El DNS no funciona: desde
actualizar-resolv-confO ajuste manual/etc/resolv.confUsar. - No se agregan rutas: asegúrese
seguridad de script 2Está habilitado y los scripts son ejecutables. - Después de que se cayó la conexión a Internet: el servidor probablemente envió la ruta predeterminada; use métodos de bypass o route-nopull.
Comparación de aplicaciones y consejos para diferentes tipos de usuarios
- Comerciantes: Necesidad de ping y estabilidad; utilice ubicaciones cercanas y, si es posible, túnel dividido solo para conectarse al servidor comercial.
- Jugadores: El tráfico del juego normalmente debe tomar la ruta más corta; el túnel completo puede aumentar el ping, por lo que se debe enrutar solo al servidor del juego o usar un servidor cercano.
- Administradores del sitio/DevOps: Se recomienda ejecutar el cliente OpenVPN en servidores con systemd y utilizar enrutamiento basado en políticas para servicios específicos.
- IA/Renderizado: Para grandes transferencias de datos, los servidores de túnel completo y de gran ancho de banda son más adecuados.
Resumen y conclusión
Para ejecutar el cliente OpenVPN en Linux, normalmente necesitará el archivo .ovpn Además contraseña de usuario de autenticación Y si es necesario ruta-sin-tirón Esto es suficiente para el túnel dividido. Para omitir algunas IP durante el túnel completo, guarde la puerta de enlace anterior y agregue las rutas adecuadas. Para un comportamiento más complejo, utilice el enrutamiento basado en políticas.









