web-dev-qa-db-fra.com

Utiliser ssh avec une interface réseau spécifique

J'utilise openconnect pour me connecter à vpn. Après avoir entré mes informations d'identification, j'obtiens 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

L'exécution de ifconfig indique que j'ai une nouvelle interface réseau tun0 avec une certaine adresse IP.

Question: Comment puis-je faire en sorte que ssh utilise uniquement l'interface réseau tun0 pour pouvoir accéder aux ordinateurs de ce réseau privé?

Modifier:

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

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
39
axel22

Ce n'est pas le client ssh qui décide par quelle interface TCP doivent aller, c'est le noyau. En bref, SSH demande au noyau d'ouvrir une connexion à une certaine adresse IP, et le noyau décide laquelle l'interface doit être utilisée 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 spécificités des commandes à exécuter et la façon dont la sortie est formatée 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 le tun0 interface; les connexions à toute adresse correspondant à cette ligne seront acheminées via cette interface. Par exemple, exécuter route -n sur mon ordinateur portable j'obtiens 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 dans le réseau 192.168.122.0/24 (c'est-à-dire les adresses 192.168.122.0 à 192.168.122.255 selon notation CIDR ) seront routées via l'interface virbr0; ceux vers 169.254.0.0/16 et 10.30.0.0/24 passeront par eth0, et tout le reste (la ligne 0.0.0.0) sera acheminé via eth0 vers hôte de la passerelle 10.30.0.1.

46
Riccardo Murri

Je ne sais pas quand il a été introduit mais le client OpenSSH sur RHEL7 a ceci 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.

11
ugob

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

Une fois le plug-in OpenConnect installé pour Network Manager, ouvrez Network Manager et cliquez sur le + icône en bas à gauche. Vous devriez recevoir une combo-box avec l'option [~ # ~] vpn [~ # ~] puis la possibilité de sélectionner VPN compatible OpenConnect.

En utilisant Network Manager pour interfacer avec OpenConnect, vos itinéraires apparaîtront automatiquement et vous aideront à vous connecter au VPN. Cela est particulièrement utile pour accéder aux serveurs via VPN, comme la façon dont FireHost fait les choses.

2
earthmeLon

Ajout d'une réponse. Vous pouvez utiliser -b marquez et définissez votre 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 
2
Shafiq