Як змусити ssh використовувати другий інтерфейс з вищою метрикою?


9

У мене є Crunchbang VM з двома інтерфейсами, eth0і eth1кожен з яких підключається до OpenWRT VM ( eth0буття 10.232.64.20і eth1буття 10.232.65.20). Я використовую Менеджер мережі та 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. Маршрутизація для декількох посилань / розділів постачальників розширеного маршрутизації та управління трафіком Linux 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': 

Однак виявляється, що мені потрібно втратити Менеджер мережі. Якщо хтось міг би пояснити, чому це погана ідея, або попередити про підводні камені, я би вдячний.

Правка2

Видалення мережевого менеджера пройшло добре. У мене є лише одне останнє запитання. Який стандартний спосіб завантаження конфігурації під час завантаження?


Щойно я виявив 4.2. Маршрутизація для декількох посилань / постачальників . Я оновлю питання, яке очікує на реалізацію.
mirimir

Це спрацювало, тому я оновлю своє запитання.
mirimir

Я не розумію, як завантажити маршрутизацію під час завантаження, тому що для цього потрібні права root. Робити це зі сценарієм працює добре, але я скоріше зможу перезавантажитись без налаштування.
mirimir

Відповіді:


1

По-перше, ваше рішення проблеми добре. По-друге, це залежить від ОС. Crunchbag на основі debian, щоб ці рішення могли зробити цю роботу:

/server/487939/permanently-adding-source-policy-routing-rules

Для систем на базі RHEL також є можливість додати <ifname>-ruleта <ifname>-route.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.