¿Cuál es la diferencia entre las cadenas OUTPUT y FORWARD en iptables?

22

CentOS 6.0

Estoy estudiando iptables y me estoy confundiendo sobre la diferencia entre las cadenas FORWARD y OUTPUT. En mi documentación de entrenamiento, dice:

Si está agregando a (-A) o eliminando de (-D) una cadena, querrá aplicarla a los datos de red que viajan en una de tres direcciones:

  • ENTRADA: todos los paquetes entrantes se verifican contra las reglas de esta cadena.
  • SALIDA - Todos los paquetes salientes se verifican contra las reglas de esta cadena.
  • ADELANTE: todos los paquetes que se envían a otra computadora se verifican según las reglas de esta cadena.

Esto me confunde porque, en mi opinión, los paquetes que salen para un host SERÍAN salientes. Entonces, ¿hay escenarios en los que un paquete iría a otra computadora pero NO sería "saliente"? ¿Cómo distinguiría iptables entre los dos?

Mike B
fuente

Respuestas:

26

OUTPUT es para paquetes emitidos por el host. Su destino suele ser otro host, pero puede ser el mismo host a través de la interfaz de bucle invertido, por lo que no todos los paquetes que pasan por OUTPUT son de hecho salientes.

FORWARD es para paquetes que no son emitidos por el host ni dirigidos al host. Son los paquetes que el host simplemente está enrutando.

Cuando comienzas a profundizar en la manipulación de paquetes y NAT, la historia completa es bastante más compleja .

Gilles 'SO- deja de ser malvado'
fuente
Interesante ... así que, para mi entendimiento, es justo decir que OUTPUT es para paquetes que se "originan" del sistema ... y FORWARD es para paquetes que no se originan del sistema o están destinados a y en su lugar están "pasando" por el sistema?
Mike B
1
No del todo, los paquetes que son "reenviados" también son "emitidos" por la interfaz de red ... tal como los paquetes son "ingresados" antes de ser "reenviados". , iptables decide que está bien reenviar, el paquete ingresa en la "cadena de salida", iptables comprueba, ve que está "bien" salir, el paquete sale ... ¡simple!
Grizly
2
@Grizly n, de la memoria (admito que no he probado específicamente al escribir esta respuesta) y de acuerdo con el diagrama me enlace a un paquete pasa siempre por exactamente una de las tres filtercadenas ( INPUTo OUTPUTo FORWARD). (Suponiendo que alguna otra cadena no la deje caer antes.) Las cadenas mangley natson diferentes, ¿tal vez estabas pensando en la manglecadena?
Gilles 'SO- deja de ser malvado'
0

A mi entender:

ENTRADA: dst IP está en el host, incluso tiene múltiples puertos con múltiples subredes

SALIDA: src IP es del host, ya sea puerto

ADELANTE: Ni dst IP en el host ni src IP del host

ingrese la descripción de la imagen aquí

Por ejemplo, al enrutador A

INPUT es:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

SALIDA es:

192.168.10.199 -> xxxx

192.168.2.1 -> xxxx

ADELANTE es:

192.168.10.1 -> 192.168.2.199

192.168.10.1 -> 192.168.8.1

192.168.10.1 -> 192.168.8.199

flz
fuente