web-dev-qa-db-fra.com

SSH sur le serveur connecté au VPN

Mon serveur doit être connecté à un VPN en tant que client. Lorsque j'exécute le script OpenVPN (à partir de HMA), la connexion de ma machine locale au serveur via SSH est perdue - la connexion n'est plus possible et je dois arrêter manuellement le processus VPN. En outre, un service TOR masqué (page .onion) n'est pas disponible pendant cette période.

Est-il possible que la page TOR soit disponible et que je puisse me connecter via SSH tant que le serveur est connecté au VPN?

1
enigma969

J'ai le même problème. Mon bureau Ubuntu est sur un VPN et ma connexion SSH normale ne fonctionne pas en dehors du réseau domestique.

Quelque chose que je viens de penser, cependant. Les ports sont-ils toujours transférés sur cet ordinateur?

Le VPN attribue une nouvelle adresse IP à partir du site VPN afin que le routeur ne puisse plus trouver cette adresse IP à laquelle se connecter.

Je suppose que vous devez connaître la nouvelle adresse IP attribuée par l'hôte VPN pour savoir à quelle adresse vous connecter.

Je ne fais que donner des hypothèses éclairées, solution inconnue; alors s'il vous plaît, n'abusez pas de moi si cela ne fonctionne pas. :)

Après une enquête plus poussée, j'ai découvert que vous deviez transférer les ports via votre VPN (je pense) car le VPN redirige le port 80 et que vos tunnels SSH utilisent généralement le port 22. Je pense que vous devez transférer le port 22 via votre VPN afin que vous vous connectez à votre vpn sur le port 80, il vous redirige vers le port transféré requis par votre tunnel SSH, c.-à-d. Mastic.

Je ne suis toujours pas sûr à 100% que c'est comme ça. Si quelqu'un peut confirmer cela, ce serait formidable.

2
Ben Heininger

Le problème est que la passerelle par défaut est modifiée par OpenVPN, ce qui interrompt toute connexion entrant sur l'interface non VPN. Linux enverra les réponses aux paquets entrés sur la véritable interface par l’interface VPN! Vous devez configurer les itinéraires appropriés avant de démarrer OpenVPN.

Ce qui suit fonctionne pour moi. Il utilise iptables et ip (iproute2). Ci-dessous, on suppose que l'interface de passerelle par défaut avant le démarrage d'OpenVPN est "eth0". L'idée est de s'assurer que lorsqu'une connexion à eth0 est établie, même si eth0 n'est plus l'interface de passerelle par défaut, les paquets de réponse pour la connexion reviennent à nouveau sur eth0.

Vous pouvez utiliser le même numéro pour la marque de connexion, la marque de pare-feu et la table de routage. J'ai utilisé des nombres distincts pour rendre plus apparentes les différences entre eux.

# set "connection" mark of connection from eth0 when first packet of connection arrives
Sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234

# set "firewall" mark for response packets in connection with our connection mark
Sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321

# our routing table with eth0 as gateway interface
Sudo ip route add default dev eth0 table 3412

# route packets with our firewall mark using our routing table
Sudo ip rule add fwmark 4321 table 3412

===

MISE À JOUR:

Ce qui précède fonctionne bien pour moi sur Debian Jessie. Mais sur un ancien système Wheezy, je viens de découvrir que je devais ajouter "via" à l'entrée de la table de routage:

# our routing table with eth0 as gateway interface
Sudo ip route add default dev eth0 via 12.345.67.89 table 3412

"12.345.67.89" doit être la passerelle d'origine non VPN.

2
John Doe