Usa ssh con una specifica interfaccia di rete


38

Sto usando openconnectper connettermi a VPN. Dopo aver inserito le mie credenziali, ottengo questo:

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

Esecuzione di ifconfigspettacoli Ho una nuova interfaccia di rete tun0con un determinato indirizzo IP.

Domanda: Come posso sshutilizzare solo l'interfaccia di rete in tun0modo da poter accedere ai computer su quella rete privata?

Modificare:

La mia configurazione di rete ( route -n) sembra essere questa:

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

Puoi approfondire la configurazione della tua rete? Con il corretto instradamento in atto, tutto il traffico destinato alla rete collegata a tun0 utilizzerà tale interfaccia.
Eli Heady,

Risposte:


45

Non è il client SSH che decide attraverso quale interfaccia devono essere inviati i pacchetti TCP, è il kernel. In breve, SSH chiede al kernel di aprire una connessione a un determinato indirizzo IP e il kernel decide quale interfaccia deve essere utilizzata consultando le tabelle di routing.

(Quanto segue presuppone che tu sia su GNU / Linux; il concetto generale è lo stesso per tutti gli Unices, ma le specifiche dei comandi da eseguire e il modo in cui l'output è formattato possono variare.)

È possibile visualizzare le tabelle di routing del kernel con i comandi route -n e / o ip route show .

OpenConnect avrebbe dovuto aggiungere una riga per l' tun0interfaccia; le connessioni a qualsiasi indirizzo corrispondente a quella linea verranno instradate attraverso tale interfaccia. Ad esempio, in esecuzione route -nsul mio laptop ottengo il seguente output:

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

Ciò significa che le connessioni agli host nella rete 192.168.122.0/24 (ovvero gli indirizzi da 192.168.122.0 a 192.168.122.255 secondo la notazione CIDR ) verranno instradate attraverso l'interfaccia virbr0; quelli a 169.254.0.0/16 e 10.30.0.0/24 passeranno attraverso eth0e qualsiasi altra cosa (la riga 0.0.0.0) verrà instradata attraverso eth0 all'host gateway 10.30.0.1.


Grazie per avermi chiarito questo, sembra che openconnectnon abbia aggiunto una riga per l' tun0interfaccia. Suppongo che dovrei farlo manualmente.
axel22

1
@ axel22 Puoi dare un'occhiata qui: bbs.archlinux.org/viewtopic.php?id=69064 per uno script che utilizza openconnect e imposta i percorsi.
Riccardo Murri,

@RiccardoMurri Vuoi rispondere alla mia domanda
Rahul Gautam,

7

Non so quando è stato introdotto, ma il client OpenSSH su RHEL7 ha questo nella sua 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.

Non buono come poter scegliere l'interfaccia, ma chiudere.


Anche il -Bflag, che sembra consentire di specificare il nome dell'interfaccia di rete da utilizzare.
Henrik,

L'opzione -b bind_addressnon ha funzionato per me, in qualche modo. Il cambio temporaneo dei percorsi dovrebbe funzionare. A proposito: l' -Bopzione non esiste sulla versione SSH fornita con Ubuntu.
Giovanni

2

Se si utilizza Network Manager per gestire le connessioni Internet (come è il gestore predefinito su molti sistemi), è possibile che si desideri installare sia openconnecte network-manager-openconnect.

Una volta installato il plug-in OpenConnect per Network Manager, apri Network Manager e fai clic +sull'icona in basso a sinistra. Dovresti ricevere una casella combinata con l'opzione VPN e quindi la possibilità di selezionare VPN compatibile OpenConnect .

Usando Network Manager per interfacciarsi con OpenConnect, i tuoi percorsi appariranno automagicamente e ti aiuteranno a connetterti alla VPN. Ciò è particolarmente utile per accedere ai server tramite VPN, ad esempio come FireHost fa le cose.


1

Solo aggiunta di una risposta. Puoi usare -bflag e definire il tuo IP sorgente al momento dell'accesso.

Formato + Esempio

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.