Come posso forzare ssh a usare una seconda interfaccia con metrica più alta?


9

Ho una VM Crunchbang con due interfacce eth0e eth1, ognuna delle quali si collega a una VM OpenWRT ( eth0essere 10.232.64.20e eth1essere 10.232.65.20). Sto usando Network Manager e DHCP. Il mio obiettivo generale è avere più sshconnessioni e collegarle ifenslave.

Per impostazione predefinita, eth1(per qualche motivo) è il gateway predefinito:

user@crunchbang:~$ ip ro
default via 10.232.65.1 dev eth1  proto static
10.232.64.0/24 dev eth0  proto kernel  scope link  src 10.232.64.20
10.232.65.0/24 dev eth1  proto kernel  scope link  src 10.232.65.20

Ho aggiunto un percorso per eth0:

user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0  proto static metric 1

Quindi ho due percorsi:

user@crunchbang:~$ ip ro
default via 10.232.65.1 dev eth1  proto static
default via 10.232.64.1 dev eth0  proto static  metric 1
10.232.64.0/24 dev eth0  proto kernel  scope link  src 10.232.64.20
10.232.65.0/24 dev eth1  proto kernel  scope link  src 10.232.65.20

Tuttavia, sshesce solo tramite eth1:

user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
ssh: connect to host 1.2.3.4 port 22: Connection timed out

user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

Dopo aver modificato la eth0metrica ho:

user@crunchbang:~$ ip ro
default via 10.232.64.1 dev eth0  proto static  metric 1
default via 10.232.65.1 dev eth1  proto static  metric 2
10.232.64.0/24 dev eth0  proto kernel  scope link  src 10.232.64.20
10.232.65.0/24 dev eth1  proto kernel  scope link  src 10.232.65.20

E ora sshesce solo tramite eth0:

user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
ssh: connect to host 1.2.3.4 port 22: Connection timed out

Come forzare sshl'uso di un'interfaccia con una metrica più elevata?

modificare

Ho implementato e testato la configurazione nel 4.2. Routing per più uplink / provider della sezione Linux Advanced Routing & Traffic Control HOWTO. Dato che la configurazione è semplice e che non ho riscontrato errori, mostrerò semplicemente codice e risultati, con una spiegazione minima.

root@crunchbang:~# ip route add 10.232.64.0/24 dev eth0 src 10.232.64.20 table T0
root@crunchbang:~# ip route add default via 10.232.64.1 table T0
root@crunchbang:~# ip route add 10.232.65.0/24 dev eth1 src 10.232.65.20 table T1
root@crunchbang:~# ip route add default via 10.232.65.1 table T1
root@crunchbang:~# ip route flush table main
root@crunchbang:~# ip route add 10.232.64.0/24 dev eth0 src 10.232.64.20
root@crunchbang:~# ip route add 10.232.65.0/24 dev eth1 src 10.232.65.20
root@crunchbang:~# ip rule add from 10.232.64.20 table T0
root@crunchbang:~# ip rule add from 10.232.65.20 table T1
root@crunchbang:~# ip route add default scope global nexthop via 10.232.64.1 dev eth0 weight 1 nexthop via 10.232.65.1 dev eth1 weight 1

Ecco le tabelle di routing generate:

root@crunchbang:~# ip route show table T0
default via 10.232.64.1 dev eth0 
10.232.64.0/24 dev eth0  scope link  src 10.232.64.20 

root@crunchbang:~# ip route show table T1
default via 10.232.65.1 dev eth1 
10.232.65.0/24 dev eth1  scope link  src 10.232.65.20 

root@crunchbang:~# ip ro
default 
    nexthop via 10.232.64.1  dev eth0 weight 1
    nexthop via 10.232.65.1  dev eth1 weight 1
10.232.64.0/24 dev eth0  scope link  src 10.232.64.20 
10.232.65.0/24 dev eth1  scope link  src 10.232.65.20 

Con quella configurazione, ssh si collega tramite entrambe le interfacce:

user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

Tuttavia, sembra che ho bisogno di perdere Network Manager. Se qualcuno potesse spiegare perché questa è una cattiva idea, o avvisare di insidie, lo apprezzerei.

Edit2

La rimozione di Network Manager è andata bene. Ho solo un'ultima domanda. Qual è l'attuale modo standard per caricare la configurazione all'avvio?


Ho appena scoperto 4.2. Routing per più uplink / provider . Aggiornerò la domanda in attesa di implementazione.
mirimir

Ha funzionato, quindi aggiornerò la mia domanda.
mirimir

Non riesco a caricare il routing all'avvio, perché richiede i diritti di root. Farlo con uno script funziona bene, ma preferirei essere in grado di riavviare senza installazione.
mirimir

Risposte:


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.