Eu tenho uma VM Crunchbang com duas interfaces eth0
e eth1
, cada uma das quais se conecta a uma VM OpenWRT ( eth0
sendo 10.232.64.20
e
eth1
sendo 10.232.65.20
). Estou usando o Network Manager e o DHCP. Meu objetivo geral é ter várias ssh
conexõ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
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, ssh
apenas 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 eth0
mé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 ssh
só 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ço ssh
a usar uma interface com uma métrica mais alta?
Editar
Eu implementei e testei a configuração no 4.2. Roteamento para vários uplinks / provedores da seção Linux Advanced Routing & Traffic Control HOWTO. Dado que a configuração é simples e que não encontrei erros, mostrarei apenas o código e os resultados, com uma explicação mínima.
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 essa é uma má idéia ou alertar para as armadilhas, eu agradeceria.
Edit2
A remoção do Network Manager correu bem. Eu tenho apenas uma última pergunta. Qual é a maneira padrão atual de carregar a configuração na inicialização?
fonte
Respostas:
Primeiro, sua solução para o problema é boa. Segundo, depende do sistema operacional. O Crunchbag é baseado no debian, portanto, essas soluções podem fazer o trabalho:
/server/487939/permanently-adding-source-policy-routing-rules
Nos sistemas baseados em RHEL, há também a possibilidade de adicionar
<ifname>-rule
e<ifname>-route
.fonte