¿Cómo fuerzo a ssh a utilizar una segunda interfaz con una métrica más alta?

¿Cómo fuerzo a ssh a utilizar una segunda interfaz con una métrica más alta?

Tengo una máquina virtual Crunchbang con dos interfaces eth0y eth1cada una de las cuales se conecta a una máquina virtual OpenWRT ( eth0siendo 10.232.64.20y eth1siendo 10.232.65.20). Estoy usando Network Manager y DHCP. Mi objetivo general es tener múltiples sshconexiones y vincularlas con ifenslave.

De forma predeterminada eth1(por alguna razón) la puerta de enlace predeterminada es:

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, sshsólo sale a través de 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': 

Después de cambiar la eth0mé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 sshsólo sale vía 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

¿Cómo fuerzo sshel uso de una interfaz con una métrica más alta?

Editar

He implementado y probado la configuración en el4.2. Enrutamiento para múltiples enlaces ascendentes/proveedoressección del CÓMO Enrutamiento avanzado y control de tráfico de Linux. 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 [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': 

Sin embargo, parece que necesito perder Network Manager. Si alguien pudiera explicar por qué es una mala idea o advertir sobre los peligros, se lo agradecería.

Editar2

La eliminación de Network Manager fue bien. Sólo tengo una última pregunta. ¿Cuál es la forma estándar actual de cargar la configuración en el arranque?

Respuesta1

Primero, su solución al problema es buena. En segundo lugar, depende del sistema operativo. Crunchbag está basado en Debian, por lo que esta solución podría funcionar:

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

En los sistemas basados ​​en RHEL también existe la posibilidad de agregar <ifname>-ruley <ifname>-route.

información relacionada