
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
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