enrutar el tráfico fuera de la puerta de enlace diferente por red de destino


9

Tengo varias puertas de enlace y me gustaría enrutar algo de tráfico de diferentes puertas de enlace en función de su destino. Supongo que necesitaría usar una combinación de reglas de iproute2 e iptables, pero no estoy seguro de por dónde empezar.
¿Alguien puede dar un ejemplo?

Respuestas:


9

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 addmuestra 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-routeembargo, 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.


1
Tenga en cuenta que también puede especificar puertas de enlace para bloques completos, `` ip route add 10.1.0.0/16 via 192.168.0.1`
hasta el

Gracias por su respuesta, eso me ayudará a orientarme en la dirección correcta. Lo intentaré y te lo haré saber.
Walter

5

Lo que estás preguntando es policy-based routingo 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.


No necesita una política de enrutamiento si desea enrutar por destino.
Diego Woitasen

Hola, ese también es un buen punto, hmm, que permitirá una mayor flexibilidad que probablemente sea más avanzada de lo que quiero estar en este punto. Definitivamente algo para aprender.
Walter

3

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.