Como faço para forçar o ssh a usar uma segunda interface com métrica mais alta?

Como faço para forçar o ssh a usar uma segunda interface com métrica mais alta?

Eu tenho uma VM Crunchbang com duas interfaces, eth0e eth1cada uma delas se conecta a uma VM OpenWRT ( eth0sendo 10.232.64.20e eth1sendo 10.232.65.20). Estou usando o Network Manager e o DHCP. Meu objetivo geral é ter múltiplas sshconexões e vinculá-las ifenslave.

Por padrão, eth1(por algum motivo) é o gateway padrão:

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

Eu adicionei uma rota para eth0:

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

Então eu tenho duas rotas:

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

No entanto, sshsó sai via 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': 

Depois de alterar a eth0métrica, tenho:

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 agora sshsó sai via 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

Como forçar ssho uso de uma interface com uma métrica mais alta?

Editar

Eu implementei e testei a configuração no4.2. Roteamento para vários uplinks/provedoresseção do Linux Advanced Routing & Traffic Control HOWTO. Dado que a configuração é simples e não encontrei erros, vou apenas mostrar o código e os resultados, com o mínimo de explicação.

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

Aqui estão as tabelas de roteamento geradas:

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 

Com essa configuração, o ssh se conecta através de ambas as interfaces:

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': 

No entanto, parece que preciso perder o Network Manager. Se alguém pudesse explicar por que isso é uma má ideia ou alertar sobre armadilhas, eu agradeceria.

Editar2

A remoção do Network Manager correu bem. Tenho apenas uma última pergunta. Qual é a maneira padrão atual de carregar a configuração na inicialização?

Responder1

Primeiro, sua solução para o problema é boa. Em segundo lugar, depende do sistema operacional. O Crunchbag é baseado em Debian, então estas soluções podem fazer o trabalho:

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

Em sistemas baseados em RHEL também existe a possibilidade de adicionar <ifname>-rulee <ifname>-route.

informação relacionada