Tengo una máquina virtual Crunchbang con dos interfaces eth0
y eth1
cada una de las cuales se conecta a una máquina virtual OpenWRT ( eth0
ser 10.232.64.20
y
eth1
ser 10.232.65.20
). Estoy usando Network Manager y DHCP. Mi objetivo general es tener múltiples ssh
conexiones y unirlas ifenslave
.
Por defecto, eth1
(por alguna razón) es la puerta de enlace predeterminada:
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
Agregué una ruta para eth0
:
user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0 proto static metric 1
Entonces tengo dos rutas:
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
Sin embargo, ssh
solo sale a través de 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':
Después de cambiar la eth0
métrica tengo:
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
Y ahora ssh
solo sale a través de 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
¿Cómo fuerzo ssh
a usar una interfaz con una métrica más alta?
Editar
He implementado y probado la configuración en 4.2. Enrutamiento para múltiples enlaces ascendentes / sección de proveedores del Linux Advanced Routing & Traffic Control HOWTO. Dado que la configuración es simple y que no encontré errores, solo mostraré el código y los resultados, con una explicación 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
Aquí están las tablas de enrutamiento generadas:
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
Con esa configuración, ssh se conecta a través de ambas interfaces:
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':
Sin embargo, parece que necesito perder Network Manager. Si alguien pudiera explicar por qué es una mala idea, o advertir sobre las trampas, lo agradecería.
Edit2
Eliminar Network Manager fue bien. Solo tengo una última pregunta. ¿Cuál es la forma estándar actual de cargar la configuración en el arranque?