Mam CrunchBang VM z dwoma interfejsami, eth0
i eth1
, z których każdy łączy się z OpenWrt VM ( eth0
będącego 10.232.64.20
a
eth1
będącego 10.232.65.20
). Używam Menedżera sieci i DHCP. Moim ogólnym celem jest posiadanie wielu ssh
połączeń i łączenie ich ifenslave
.
Domyślnie eth1
(z jakiegoś powodu) jest bramą domyślną:
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
Dodałem trasę dla eth0
:
user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0 proto static metric 1
Następnie mam dwie trasy:
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
Jednak ssh
wydostaje się tylko przez 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':
Po zmianie danych eth0
mam:
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
A teraz ssh
wychodzi tylko przez 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
Jak wymusić ssh
użycie interfejsu z wyższą charakterystyką?
Edytować
Zaimplementowałem i przetestowałem konfigurację w wersji 4.2. Routing dla wielu sekcji łącza w górę / dostawców w Linux Advanced Routing & Traffic Control HOWTO. Biorąc pod uwagę, że konfiguracja jest prosta i nie napotkałem błędów, po prostu pokażę kod i wyniki, z minimalnym wyjaśnieniem.
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
Oto wygenerowane tabele routingu:
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
W tej konfiguracji ssh łączy się przez oba interfejsy:
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':
Wygląda jednak na to, że muszę stracić Network Managera. Byłbym wdzięczny, gdyby ktokolwiek mógł wyjaśnić, dlaczego to zły pomysł lub ostrzec przed pułapkami.
Edytuj2
Usunięcie Network Managera poszło dobrze. Mam tylko ostatnie pytanie. Jaki jest obecnie standardowy sposób ładowania konfiguracji podczas rozruchu?
źródło
Odpowiedzi:
Po pierwsze, twoje rozwiązanie problemu jest dobre. Po drugie, zależy to od systemu operacyjnego. Crunchbag jest oparty na Debianie, więc te rozwiązania mogą wykonać zadanie:
/server/487939/permanently-adding-source-policy-routing-rules
W systemach opartych na RHEL istnieje również możliwość dodania
<ifname>-rule
i<ifname>-route
.źródło