Respuestas:
Probablemente puedas hacer lo que quieras con ip route
:
ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0
El primero ip route add
muestra una sola dirección IP, enviada una interfaz de Ethernet dada (ep3s8) al enrutador del siguiente salto, 10.0.0.1
La segunda ruta es para una red completa, 10.xyz, envió una tarjeta ethernet dada, eth0. Esa es la "red local", que no tiene un enrutador de próximo salto, todo está en el mismo cable lógico.
Sin man ip-route
embargo, quieres leer antes de hacer algo. Además, prepárese para reiniciar y no lo haga de forma remota. Puede crear fácilmente rutas incorrectas que terminan su acceso remoto. Soy la voz de la experiencia en esta última recomendación.
Lo que estás preguntando es policy-based routing
o source-based routing
. Hay una excelente introducción de David Schwartz en este mismo sitio.
Me gustaría señalar que también hay un pequeño programa muy bueno, que se puede encontrar aquí , que le permite vincular aplicaciones específicas a una interfaz determinada. Por supuesto, esto es fácil con aplicaciones como openssh que tienen opciones para vincularse a la dirección de escucha deseada. Pero esta biblioteca le permite vincular incluso aplicaciones sin tales opciones (como Firefox) a una dirección IP determinada.
De esta manera, puede elegir si desea proporcionar tablas de enrutamiento separadas para todas las aplicaciones, o anular esas mismas especificaciones por aplicación.
Un buen lugar para leer sobre el enrutamiento base de origen es Linux Advanced Routing & Traffic Control
. También puede leer los manuales.
man ip rule
man ip route
En general, debe agregar la regla (agregué la interfaz eth1 solo con fines de demostración, se puede omitir)
#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
aquí están:
dev eth1 - dispositivo que se utilizará para enviar paquetes
a 170.10.0.10 - la
tabla de destino 2 - tabla donde debe asignar a sus rutas la
prioridad 20000 - prioridad de la regla
puedes ver tu regla por
#ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default
A continuación, debe agregar las rutas de la manera habitual, pero debe especificar la tabla (tabla 2), donde colocaría la ruta
#ip route add table 2 via 170.10.0.1 default
para ver tus rutas, debes correr
#ip route show ta 2