Wie zwinge ich SSH, eine zweite Schnittstelle mit höherer Metrik zu verwenden?

Wie zwinge ich SSH, eine zweite Schnittstelle mit höherer Metrik zu verwenden?

Ich habe eine Crunchbang-VM mit zwei Schnittstellen eth0und eth1, von denen jede mit einer OpenWRT-VM ( und ) verbunden ist eth0. Ich verwende Network Manager und DHCP. Mein Gesamtziel ist es, mehrere Verbindungen zu haben 10.232.64.20und diese mit zu eth1verbinden .10.232.65.20sshifenslave

Standardmäßig eth1ist (aus irgendeinem Grund) das Standard-Gateway:

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

Ich habe eine Route hinzugefügt für eth0:

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

Dann habe ich zwei Routen:

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

sshDer Ausstieg erfolgt jedoch nur über eth1:

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

user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa': 

Nach dem Ändern der eth0Metrik habe ich:

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

Und kommt jetzt sshnur noch raus über eth0:

user@crunchbang:~$ ssh -b 10.232.64.20 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa': 

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

Wie erzwinge ich sshdie Verwendung einer Schnittstelle mit einer höheren Metrik?

Bearbeiten

Ich habe die Konfiguration implementiert und getestet im4.2. Routing für mehrere Uplinks/AnbieterAbschnitt des Linux Advanced Routing & Traffic Control HOWTO. Da die Konfiguration einfach ist und ich keine Fehler festgestellt habe, zeige ich nur Code und Ergebnisse mit minimalen Erklärungen.

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

Hier sind die generierten Routingtabellen:

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 

Mit dieser Konfiguration stellt SSH eine Verbindung über beide Schnittstellen her:

user@crunchbang:~$ ssh -b 10.232.64.20 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa': 

user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa': 

Es sieht jedoch so aus, als müsste ich Network Manager aufgeben. Ich wäre dankbar, wenn mir jemand erklären könnte, warum das keine gute Idee ist, oder mich vor den Fallstricken warnen könnte.

Bearbeiten

Das Entfernen von Network Manager verlief reibungslos. Ich habe nur noch eine letzte Frage. Was ist derzeit die Standardmethode zum Laden der Konfiguration beim Booten?

Antwort1

Erstens ist Ihre Lösung für das Problem gut. Zweitens hängt es vom Betriebssystem ab. Crunchbag basiert auf Debian, daher könnten diese Lösungen funktionieren:

https://serverfault.com/questions/487939/permanently-adding-source-policy-routing-rules

Auf RHEL-basierten Systemen besteht auch die Möglichkeit, <ifname>-ruleund hinzuzufügen <ifname>-route.

verwandte Informationen