it-swarm.it

Usa ssh con una specifica interfaccia di rete

Sto usando openconnect per 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

L'esecuzione di ifconfig mostra che ho una nuova interfaccia di rete tun0 con un determinato indirizzo IP.

Domanda: Come faccio a utilizzare ssh solo sull'interfaccia di rete tun0 in modo che io possa accedere ai computer su quella rete privata?

Edit:

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

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

Non è il client ssh che decide attraverso quale interfaccia TCP dovrebbero andare, è il kernel. In breve, SSH chiede al kernel di aprire una connessione a un determinato indirizzo IP, e il kernel decide quale l'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 il tun0 interfaccia; le connessioni a qualsiasi indirizzo corrispondente a quella linea verranno instradate attraverso tale interfaccia. Ad esempio, eseguendo route -n sul 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 notazione CIDR ) verranno instradate attraverso l'interfaccia virbr0; quelli a 169.254.0.0/16 e 10.30.0.0/24 passeranno attraverso eth0 e qualsiasi altra cosa (la riga 0.0.0.0) verrà instradata attraverso eth0 a Gateway Host 10.30.0.1.

46
Riccardo Murri

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.

11
ugob

Se stai usando Network Manager per gestire le tue connessioni Internet (come è il gestore predefinito su molti sistemi), potresti voler installare sia openconnect che network-manager-openconnect.

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

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

2
earthmeLon

Solo aggiunta di una risposta. Puoi usare -b contrassegna e definisce il tuo IP di origine al momento dell'accesso.

Formato + Esempio

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