Cómo se atraviesan las tablas y cadenas de iptables


22

Sé que Linux tiene 3 tablas integradas y cada una de ellas tiene sus propias cadenas de la siguiente manera:

FILTRO : PREROUTING, FORWARD, POSTROUTING

NAT : PREROUTING, INPUT, OUTPUT, POSTROUTING

MANGLE : PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

Pero no puedo entender cómo se atraviesan, en qué orden, si es que lo hay. Por ejemplo, ¿cómo se atraviesan cuando:

  1. Envío un paquete a una PC en mi misma red local
  2. cuando envío un paquete a una PC en una red diferente
  3. cuando una puerta de enlace recibe un paquete y tiene que reenviarlo
  4. cuando recibo un paquete destinado a mí
  5. cualquier otro caso (si lo hay)

Respuestas:


28

Wikipedia tiene un gran diagrama para mostrar el orden de procesamiento.

Para obtener más detalles, también puede consultar la documentación de iptables, específicamente el capítulo de desplazamiento de tablas y cadenas . Que también incluye un diagrama de flujo .

El orden cambia dependiendo de cómo se use netfilter (como un puente o filtro de red y si tiene interacción con la capa de aplicación).

En general (aunque hay más detalles en el capítulo anterior), las cadenas se procesan como:

  • Vea la cadena INPUT como "tráfico entrante desde el exterior a este host".
  • Vea la cadena FORWARD como "tráfico que utiliza este host como enrutador" (el origen y el destino no son este host).
  • vea la cadena OUTPUT como "tráfico que este host quiere enviar".
  • PREROUTING / POSTROUTING tiene diferentes usos para cada uno de los tipos de tabla (por ejemplo, para las tablas nat, PREROUTING es para el tráfico SNAT entrante (enrutado / reenviado) y POSTROUTING es para el tráfico DNAT saliente (enrutado / reenviado). Consulte los documentos para obtener más información. detalles específicos.

Las diferentes tablas son:

  • Destrozar es cambiar paquetes (Tipo de servicio, Tiempo de vida, etc.) en el recorrido.
  • Nat es poner en reglas NAT.
  • Raw se debe utilizar para marcar y rastrear conexiones.
  • El filtro es para filtrar paquetes.

Entonces, para tus cinco escenarios:

  1. Si el host de envío es su host con iptables, OUTPUT
  2. Lo mismo de arriba
  3. La cadena FORWARD (siempre que la puerta de enlace sea el host con iptables)
  4. Si "yo" es el host con iptables, INPUT
  5. Mire las reglas de la cadena arriba (que es la regla general) y el diagrama de flujo (y esto también varía en lo que está tratando de lograr con IPTables)

También recientemente encontré este enlace: stuffphilwrites.com/2014/09/iptables-processing-flowchart . Hay un buen diagrama de flujo allí por Phil Hagen.
slm

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.