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

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

CentOS 6.0

Estoy estudiando iptables y me confundo con la diferencia entre las cadenas FORWARD y OUTPUT. En mi documentación de formación, dice:

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

  • ENTRADA: todos los paquetes entrantes se comparan con las reglas de esta cadena.
  • SALIDA: todos los paquetes salientes se comparan con las reglas de esta cadena.
  • ADELANTE: todos los paquetes que se envían a otra computadora se comparan con las reglas de esta cadena.

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

Respuesta1

SALIDA 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 loopback, por lo que no todos los paquetes que pasan por OUTPUT son salientes.

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

Cuando empiezas a profundizar en la manipulación de paquetes y NAT, la historia completa esbastante más complejo.

Respuesta2

A mi entender:

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

SALIDA: src IP es del host, cualquiera de los puertos

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

LA ENTRADA es:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

LA 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

información relacionada