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
siendo 10.232.64.20
y
eth1
siendo 10.232.65.20
). Estoy usando Network Manager y DHCP. Mi objetivo general es tener múltiples ssh
conexiones 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, ssh
só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 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
só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 ssh
el 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>-rule
y <ifname>-route
.