reglas iproute2 e iptables NAT ... ¿cuál es la diferencia?

8

Tenemos 2 conexiones ISP diferentes. Nuestro "chico de TI" anterior configuró nuestro firewall de la siguiente manera:

Cuando /etc/rc.localse ejecutó al inicio, hizo un montón de ip rule addy ip route addcomandos para enrutar ciertos hosts internos para usar ciertas conexiones ISP.

Luego, al final de /etc/rc.local, ejecutó nuestras iptablesreglas de firewall que fueron generadas por Firewall Builder. Estas iptablesreglas tienen configuradas las reglas de Política y NAT.

Lo que no entiendo, es ¿por qué solía iproute2especificar reglas y rutas, pero también especificaba las reglas NAT iptables? ¿Por qué no lo hizo todo en uno u otro en lugar de usarlos a ambos? ¿Podría haberse deshecho de las iproute2reglas y rutas y simplemente poner todas esas mismas reglas en la iptablesconfiguración de NAT?

Jake Wilson
fuente

Respuestas:

13

Si bien existe una cierta superposición en la funcionalidad entre las dos herramientas, hay muchas cosas que solo puede hacer desde una de las herramientas. iproute2no puede hacer nada con las reglas de firewall de netfilter. iptablesNo puede hacer cosas como asignar direcciones IP.

Incluso en lugares donde la funcionalidad parece superponerse, en realidad no se superpone. Por ejemplo, puede hacer la traducción de direcciones con ambos iproute2y iptables. Pero la traducción de direcciones que puede hacer con iproute no tiene en cuenta ningún estado y no hace ninguna reescritura del paquete. Existen varios protocolos de red como FTP, SIP, H.323, etc. donde las direcciones IP están incluidas dentro del paquete, y no solo en los encabezados. Si usa el método iproute para la traducción de direcciones, esos tipos de protocolos se romperán. Netfilter hace un trabajo mucho mejor en la traducción de direcciones.

En la mayoría de los casos donde la funcionalidad se superpone, se maneja de diferentes maneras. Es posible hacer un enrutamiento con un módulo iptables, pero la última vez que verifiqué que el módulo no estaba en la mayoría de las distribuciones no tenía filtro de red / iptablesparcheado con el objetivo ROUTE . Si ese objetivo no está disponible, no puede usar netfilter para el enrutamiento a menos que esté de humor para compilar sus propios núcleos. Su decisión sobre qué herramienta usar se tomará simplemente porque la función no está disponible en la versión de las herramientas que está ejecutando. Incluso si tiene el objetivo ROUTE, por lo que entiendo, no es tan eficiente usar netfilter para las decisiones de enrutamiento como es hacerlo con las tablas de enrutamiento estándar con iproute2manipuladores.

Mucho de esto también está utilizando la herramienta adecuada para el trabajo correcto. iproute2está diseñado principalmente para administrar enrutamiento y direcciones en su computadora. iptables/ Netfilter está construido para cortafuegos.

Creo que en lugares donde una persona podría usar cualquiera de las herramientas, usualmente usarán la herramienta con la que están más familiarizados. Sé que uso el objetivo MARK iptablespara marcar algunos paquetes para una ruta u otra, aunque podría escribir la misma regla con iproute2.

Zoredache
fuente