J'ai rencontré un problème que je ne peux pas résoudre. Lorsque je suis connecté à un VPS sur SSH et que j'essaie d'établir une connexion VPN sur ce VPS, la connexion SSH entre VPS et ma machine est perdue. Je suppose que c'est parce que le routage a été modifié par les paramètres VPN. Comment éviter ça?
14
--route-noexec
option pour ignorer les routes poussées par le serveur mais, comme vous l'avez mentionné, cela n'aide pas quand je veux utiliser VPN comme proxy ...Réponses:
Vous devez ajouter une
route-nopull
option (et la supprimerredirect-gateway
si elle existe) au fichier de configuration de votre client OpenVPN sur votre VPS.De cette façon, la connexion à un serveur VPN ne modifiera aucun itinéraire sur votre VPS, vous pourrez donc définir vous-même ceux dont vous avez besoin.
la source
inet addr:10.56.10.6 P-t-P:10.56.10.5 Mask:255.255.255.255
Prenons le scénario suivant:
Dans un tel scénario, à partir de votre machine (supposons que votre machine soit 9.8.7.6/24 avec def-gw 9.8.7.254), vous pouvez réussir à établir une connexion SSH vers 4.3.2.1. Par conséquent, les deux hôtes 4.3.2.1 et 9.8.7.6 peuvent réussir à se rejoindre.
Maintenant, avec une telle connexion SSH établie, supposons:
À ce stade:
SI aucun itinéraire ne sera poussé du serveur OpenVPN distant vers votre VPS local, alors rien ne changera en termes de routage, et votre connexion SSH survivra sans aucun problème. Dans ce cas, le seul trafic traversant le VPN est celui dirigé vers le serveur OpenVPN distant (10.10.10.1);
SI le serveur OpenVPN distant repoussera une route, et surtout si la passerelle par défaut VPS sera remplacée par 10.10.10.1 (point de terminaison OpenVPN distant), ALORS vous rencontrez des problèmes. Dans ce cas, vous tunnelisez TOUT le trafic IP sortant (à l'exception d'OpenVPN lui-même) dans le VPN.
Dans ce deuxième cas (en remplaçant def-gw juste après avoir établi la connexion VPN), votre précédente connexion SSH "se bloquera", en raison du routage asymétrique:
En d'autres termes: dès que la liaison VPN est établie, votre itinéraire de retour de VPS à votre machine va changer et ... ce n'est pas une bonne chose (plusieurs périphériques réseau, le long du chemin de retour, pourraient reconnaître une telle asymétrie chemin et simplement déposer des paquets).
En outre, il est fort probable que votre serveur OpenVPN distant agisse comme une boîte NAT: tout le trafic provenant du VPN sera NATté avec l'adresse IP publique du serveur OpenVPN distant. Si cela est vrai, les choses ne sont plus ... "pas bonnes", mais certainement "mauvaises", comme pour votre connexion SSH: le trafic de retour, en plus de reprendre un itinéraire différent, revient sur votre machine avec une IP source différente (celle de l'interface publique du serveur VPN).
Comment résoudre ce problème?
Assez facilement, en effet.
Demander simplement à votre serveur VPS de ne pas acheminer le trafic vers votre machine via le VPN, mais plutôt de s'appuyer sur l'itinéraire précédent . Cela devrait être aussi simple que d'ajouter, avant de démarrer OpenVPN:
où:
PS: en fournissant une question beaucoup plus détaillée, vous auriez obtenu une réponse beaucoup plus rapide :-)
la source
route add
commande avec de tels retours 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
résultat0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
VPS J'utilise est une option de base OVH avec Ubuntu 14.04 serveur à bordifconfig
etnetstat -rn
sortie: goo.gl/TEZ61qCela peut aider:
mettre
TCPKeepAlive=yes
dans votre/etc/ssh/sshd_config
De
la source
TCPKeepAlive
défini une option pouryes
que ce ne soit pas une bonne solutionJ'ai eu ce problème et j'ai essayé toutes les solutions recommandées, et pourtant, mon problème n'a pas été résolu!
Après de nombreuses tentatives de solutions, j'ai utilisé la
screen
commande. (mon client VPN est cisco-any-connect).Après avoir fourni vos informations d'identification, appuyez immédiatement sur ctrl + a + d et revenez à votre session.
la source
Personnellement, je préfère que toutes les connexions à SSH soient acheminées via VPN. En cas de connexion ssh active avant l'établissement du VPN, il doit se reconnecter en raison de la modification de l'itinéraire.
Je recommande d'utiliser
autossh
Sous votre configuration client ssh il suffit d'ajouter.ssh/config
la source
Une fois après la connexion VPN, ssh se déconnecte car, le trafic ssh du serveur passe par le serveur VPN. Donc, pour éviter cela, exécutez la commande suivante avant de connecter VPN.
route add -host your-machine-public-ip gw Server-gatway-ip dev eth0
your-machine-public-ip: IP de votre machine d'où vous faites SSH. Server-gatway-ip: IP Gatway / routeur de ce serveur
La commande ci-dessus redirigera le trafic via la passerelle donnée et non via le serveur VPN.
la source