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 [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
solo sale a través de 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
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 [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 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?
fuente
Respuestas:
Primero, su solución para el problema es buena. En segundo lugar, depende del sistema operativo. Crunchbag está basado en Debian, por lo que estas soluciones podrían hacer el trabajo:
/server/487939/permanently-adding-source-policy-routing-rules
En los sistemas basados en RHEL también existe la posibilidad de agregar
<ifname>-rule
y<ifname>-route
.fuente