Utilisez ssh avec une interface réseau spécifique

38

J'utilise pour me openconnectconnecter à vpn. Après avoir entré mes informations d'identification, je reçois ceci:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection

En cours de ifconfigspectacles, j'ai une nouvelle interface réseau tun0avec une certaine adresse IP.

Question: Comment sshutiliser uniquement l’interface réseau tun0pour pouvoir accéder aux ordinateurs de ce réseau privé?

Modifier:

Ma configuration réseau ( route -n) semble être la suivante:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
axel22
la source
Pouvez-vous élaborer sur la configuration de votre réseau? Avec un routage correct en place, tout trafic destiné au réseau connecté à tun0 utilisera cette interface.
Eli Heady

Réponses:

45

Ce n'est pas le client ssh qui décide via quelle interface les paquets TCP doivent passer, c'est le noyau. En bref, SSH demande au noyau d'ouvrir une connexion à une certaine adresse IP, et le noyau décide de l'interface à utiliser en consultant les tables de routage.

(Ce qui suit suppose que vous êtes sous GNU / Linux; le concept général est le même pour tous les Unices, mais les détails des commandes à exécuter et le format de la sortie peuvent varier.)

Vous pouvez afficher les tables de routage du noyau avec les commandes route -n et / ou ip route show .

OpenConnect aurait dû ajouter une ligne pour l' tun0interface; les connexions à toute adresse correspondant à cette ligne seront routées via cette interface. Par exemple, route -nsur mon ordinateur portable, je reçois la sortie suivante:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Cela signifie que les connexions aux hôtes du réseau 192.168.122.0/24 (c'est-à-dire les adresses 192.168.122.0 à 192.168.122.255 conformément à la notation CIDR ) seront routées via l'interface virbr0; ceux vers 169.254.0.0/16 et 10.30.0.0/24 seront acceptés eth0, et tout le reste (la ligne 0.0.0.0) sera acheminé via eth0 vers l’ hôte de passerelle 10.30.0.1.

Riccardo Murri
la source
Merci de clarifier cela pour moi - il semble que openconnectn'a pas ajouté une ligne pour l' tun0interface. Je suppose que je devrais le faire manuellement.
axel22
1
@ axel22 Vous pouvez jeter un coup d'œil ici: bbs.archlinux.org/viewtopic.php?id=69064 pour un script qui utilise openconnect et configure les itinéraires.
Riccardo Murri
@RiccardoMurri Voulez-vous répondre à ma question
Rahul Gautam
7

Je ne sais pas quand il a été introduit, mais le client OpenSSH sur RHEL7 a cela dans sa page de manuel:

 -b bind_address
         Use bind_address on the local machine as the source address of the connection.  Only useful on systems with more than one address.

Pas aussi bon que de pouvoir choisir l'interface, mais proche.

ougob
la source
Également l' -Bindicateur, qui permet de spécifier le nom de l'interface réseau à utiliser.
Henrik
L'option -b bind_addressn'a pas fonctionné pour moi, en quelque sorte. Changer de route temporairement devrait fonctionner. BTW: L' -Boption n'existe pas sur la version SSH fournie avec Ubuntu.
Jean
2

Si vous utilisez Network Manager pour gérer vos connexions Internet (comme le gestionnaire par défaut sur de nombreux systèmes), vous pouvez installer à la fois openconnectet network-manager-openconnect.

Une fois le plug-in OpenConnect installé pour Network Manager, ouvrez Network Manager et cliquez sur l' +icône en bas à gauche. Vous devriez recevoir une liste déroulante avec l’option VPN , puis la possibilité de sélectionner un VPN compatible OpenConnect .

En utilisant Network Manager pour établir une interface avec OpenConnect, vos itinéraires apparaissent automatiquement et vous aident à vous connecter au VPN. Ceci est particulièrement utile pour accéder aux serveurs via un réseau VPN, par exemple comment FireHost fait les choses.

EarthMon
la source
1

Juste addition d'une réponse. Vous pouvez utiliser -bflag et définir votre adresse IP source au moment de l'accès.

Format + Exemple

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
Shafiq
la source