У меня есть CrunchBang VM с двумя интерфейсами, eth0
и eth1
, каждый из которых подключается к OpenWRT VM ( eth0
будучи 10.232.64.20
и
eth1
будучи 10.232.65.20
). Я использую Network Manager и DHCP. Моя общая цель - иметь несколько ssh
связей и связывать их с ifenslave
.
По умолчанию eth1
(по некоторым причинам) это шлюз по умолчанию:
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
Я добавил маршрут для eth0
:
user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0 proto static metric 1
Тогда у меня есть два маршрута:
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
Однако ssh
выходит только через 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':
После изменения eth0
метрики у меня есть:
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
И теперь ssh
выходит только через 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
Как заставить ssh
использовать интерфейс с более высокой метрикой?
редактировать
Я реализовал и протестировал конфигурацию в 4.2. Маршрутизация для нескольких разделов uplink / провайдеров Linux Advanced Routing & Traffic Control HOWTO. Учитывая, что конфигурация проста, и что я не сталкивался с ошибками, я просто покажу код и результаты с минимальным объяснением.
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
Вот сгенерированные таблицы маршрутизации:
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
При такой конфигурации ssh подключается через оба интерфейса:
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':
Тем не менее, похоже, что мне нужно потерять Network Manager. Если бы кто-нибудь мог объяснить, почему это плохая идея, или предупредить о подводных камнях, я был бы признателен за это.
Edit2
Удаление Network Manager прошло хорошо. У меня есть только один последний вопрос. Каков текущий стандартный способ загрузки конфигурации при загрузке?
источник
Ответы:
Во-первых, ваше решение проблемы хорошее. Во-вторых, это зависит от ОС. Crunchbag основан на debian, поэтому эти решения могут сделать эту работу:
/server/487939/permanently-adding-source-policy-routing-rules
В системах на основе RHEL также есть возможность добавлять
<ifname>-rule
и<ifname>-route
.источник