Encontré un problema que no puedo resolver. Cuando estoy conectado a un VPS a través de SSH e intento estabilizar la conexión VPN en ese VPS, la conexión SSH entre VPS y mi máquina se pierde. Supongo que es porque la configuración de VPN cambió el enrutamiento. ¿Cómo prevenir eso?
14
--route-noexec
opción para ignorar rutas empujadas por el servidor, pero, como usted ha mencionado, no ayuda cuando quiero usar VPN como proxy ...Respuestas:
Debe agregar la
route-nopull
opción (y eliminarlaredirect-gateway
si existe) al archivo de configuración de su cliente OpenVPN en su VPS.De esa manera, conectarse a un servidor VPN no modificará ninguna ruta en su VPS, por lo que podrá configurar las que necesita por sí mismo.
fuente
inet addr:10.56.10.6 P-t-P:10.56.10.5 Mask:255.255.255.255
Consideremos el siguiente escenario:
En tal escenario, desde su máquina (supongamos que su máquina es 9.8.7.6/24 con def-gw 9.8.7.254) puede establecer con éxito una conexión SSH a 4.3.2.1. Por lo tanto, ambos hosts 4.3.2.1 y 9.8.7.6 pueden comunicarse exitosamente entre sí.
Ahora, con una conexión SSH establecida, supongamos:
En este punto:
SI no se enviará ninguna ruta desde el servidor remoto OpenVPN a su VPS local, entonces nada cambiará en términos de enrutamiento, y su conexión SSH sobrevivirá sin ningún problema. En este caso, el único tráfico que atraviesa la VPN es el que se dirige hacia el servidor remoto OpenVPN (10.10.10.1);
SI el servidor remoto OpenVPN retrasará alguna ruta, y especialmente si la puerta de enlace predeterminada de VPS se reemplazará con 10.10.10.1 (punto final remoto de OpenVPN), ENTONCES está teniendo problemas. En este caso, está tunelizando TODO el tráfico IP saliente (con la excepción de OpenVPN) dentro de la VPN.
En este segundo caso (reemplazando def-gw justo después de establecer la conexión VPN), su conexión SSH anterior se "colgará", debido al enrutamiento asimétrico:
En otras palabras: tan pronto como se establezca el enlace VPN, su ruta de regreso de VPS a su máquina va a cambiar y ... esto no es algo bueno (varios dispositivos de red, a lo largo de la ruta de retorno, pueden reconocer tal asimétrica ruta y simplemente descartar paquetes).
Además, es muy probable que su servidor remoto OpenVPN esté actuando como una caja NAT: todo el tráfico proveniente de la VPN será NATizado con la dirección IP pública del servidor remoto OpenVPN. Si esto es cierto, las cosas ya no son ... "no es bueno", pero definitivamente "malo", en cuanto a su conexión SSH: el tráfico de retorno, además de regresar por una ruta diferente, regresa a su máquina con una IP de origen diferente (la de la interfaz pública del servidor VPN).
¿Cómo resolver este problema?
Muy fácilmente, de hecho.
Simplemente indique a su servidor VPS que no enrute el tráfico a su máquina a lo largo de la VPN, sino que confíe en la ruta anterior . Debería ser tan fácil como agregar, antes de iniciar OpenVPN:
dónde:
PD: al proporcionar una pregunta mucho más detallada, habría obtenido una respuesta mucho más rápida :-)
fuente
route add
comando con tales retornos 0.0.0.0 gwSIOCADDRT: Invalid argument
[server] Peer Connection Initiated with [AF_INET]64.251.27.139:443; TUN/TAP device tun0 opened; do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0; /sbin/ip link set dev tun0 up mtu 1500; /sbin/ip addr add dev tun0 10.200.1.251/22 broadcast 10.200.3.255; ERROR: Linux route add command failed: external program exited with error status: 2
netstat -rn
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
Como resultado, el VPS que estoy usando es una opción básica de OVH con el Servidor Ubuntu 14.04 a bordoifconfig
ynetstat -rn
salida: goo.gl/TEZ61qEsto puede ayudar:
poner
TCPKeepAlive=yes
en su/etc/ssh/sshd_config
Desde
fuente
TCPKeepAlive
configurado la opción, poryes
lo que no es una solución adecuadaTuve este problema y probé todas las soluciones recomendadas, y aún así, ¡mi problema no se resolvió!
Después de muchos intentos de solución, usé el
screen
comando. (mi cliente VPN es cisco-any-connect).Después de proporcionar su credencial, presione ctrl + a + d inmediatamente y vuelva a su sesión.
fuente
Personalmente, prefiero que todas las conexiones a SSH se enruten a través de VPN. En caso de conexión ssh activa antes de que se establezca la VPN, debe volver a conectarse debido a que la ruta ha cambiado.
Recomiendo usar
autossh
Bajo su configuración de cliente ssh solo agregue.ssh/config
fuente
Una vez después de conectar VPN, ssh se desconecta porque el tráfico ssh del servidor va a través del servidor VPN. Para evitar esto, ejecute el siguiente comando antes de conectar VPN.
route add -host your-machine-public-ip gw Server-gatway-ip dev eth0
your-machine-public-ip: IP de su máquina desde donde está haciendo SSH. Server-gatway-ip: IP de Gatway / enrutador de ese servidor
El comando anterior redirigirá el tráfico a través de la puerta de enlace dada, no a través del servidor VPN.
fuente