Verwenden Sie ssh mit einer bestimmten Netzwerkschnittstelle

37

Ich benutze openconnect, um eine Verbindung zu VPN herzustellen. Nach Eingabe meiner Anmeldeinformationen erhalte ich Folgendes:

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

Laufen ifconfigShows Ich habe eine neue Netzwerkschnittstelle tun0mit einer bestimmten IP-Adresse.

Frage: Wie verwende ich sshnur die Netzwerkschnittstelle, tun0damit ich auf Computer in diesem privaten Netzwerk zugreifen kann?

Bearbeiten:

Meine Netzwerkkonfiguration ( route -n) scheint wie folgt zu sein:

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
quelle
Können Sie Ihre Netzwerkkonfiguration näher erläutern? Bei ordnungsgemäßem Routing wird jeder Datenverkehr, der für das an tun0 angeschlossene Netzwerk bestimmt ist, diese Schnittstelle verwenden.
Eli Heady

Antworten:

45

Es ist nicht der ssh-Client, der entscheidet, über welche Schnittstelle TCP-Pakete gesendet werden sollen, sondern der Kernel. Kurz gesagt, SSH fordert den Kernel auf, eine Verbindung zu einer bestimmten IP-Adresse herzustellen, und der Kernel entscheidet anhand der Routing-Tabellen, welche Schnittstelle verwendet werden soll.

(Im Folgenden wird davon ausgegangen, dass Sie unter GNU / Linux arbeiten. Das allgemeine Konzept ist für alle Unices gleich, die Besonderheiten der auszuführenden Befehle und die Art und Weise, wie die Ausgabe formatiert wird, können jedoch variieren.)

Sie können die Kernel-Routing-Tabellen mit den Befehlen route -n und / oder ip route show anzeigen .

OpenConnect sollte eine Zeile für die tun0Schnittstelle hinzugefügt haben ; Verbindungen zu Adressen, die mit dieser Leitung übereinstimmen, werden über diese Schnittstelle geleitet. Wenn route -nich zum Beispiel auf meinem Laptop arbeite, erhalte ich die folgende Ausgabe:

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

Dies bedeutet, dass Verbindungen zu Hosts im Netzwerk 192.168.122.0/24 (dh Adressen 192.168.122.0 bis 192.168.122.255 gemäß CIDR-Notation ) über die Schnittstelle geleitet werden virbr0. Die bis 169.254.0.0/16 und 10.30.0.0/24 werden durchlaufen eth0, und alles andere (die 0.0.0.0-Zeile) wird über eth0 an den Gateway-Host 10.30.0.1 weitergeleitet.

Riccardo Murri
quelle
Vielen Dank für die Klärung für mich - es scheint, dass openconnectkeine Zeile für die tun0Schnittstelle hinzugefügt wurde . Ich nehme an, ich sollte das manuell machen.
Axel22
1
@ axel22 Hier finden Sie möglicherweise ein Skript, das openconnect verwendet und die Routen einrichtet: bbs.archlinux.org/viewtopic.php?id=69064 .
Riccardo Murri
@ RiccardoMurri Möchten Sie meine Frage
Rahul Gautam
6

Ich weiß nicht, wann es eingeführt wurde, aber der OpenSSH-Client auf RHEL7 hat dies in seiner Manpage:

 -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.

Nicht so gut wie die Schnittstelle auswählen zu können, aber zu schließen.

ugob
quelle
Auch das -BFlag, mit dem der Name der zu verwendenden Netzwerkschnittstelle angegeben werden kann.
Henrik
Die Option -b bind_addresshat bei mir irgendwie nicht funktioniert. Das vorübergehende Ändern von Routen sollte funktionieren. Übrigens: Die -BOption ist in der mit Ubuntu gelieferten SSH-Version nicht verfügbar.
John
2

Wenn Sie Network Manager zum Verwalten Ihrer Internetverbindungen verwenden (wie der Standardmanager auf vielen Systemen), möchten Sie möglicherweise sowohl openconnectals auch installieren network-manager-openconnect.

Sobald das OpenConnect-Plugin für Network Manager installiert ist, öffnen Sie Network Manager und klicken Sie auf das +Symbol unten links. Sie sollten ein Kombinationsfeld mit der Option VPN erhalten und anschließend die Möglichkeit haben, OpenConnect-kompatibles VPN auszuwählen .

Wenn Sie mit Network Manager eine Verbindung zu OpenConnect herstellen, werden Ihre Routen automatisch angezeigt und helfen Ihnen beim Herstellen einer Verbindung zum VPN. Dies ist besonders hilfreich, wenn Sie über VPN auf Server zugreifen möchten , z. B., wie FireHost vorgeht .

ErdeMeLon
quelle
1

Nur eine Antwort hinzufügen. Sie können -bflag verwenden und Ihre Quell-IP zum Zeitpunkt des Zugriffs definieren.

Format + Beispiel

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
Shafiq
quelle