CentOS 6.0
我正在研究 iptables 并且对 FORWARD 和 OUTPUT 链之间的区别感到困惑。在我的培训文档中,它指出:
如果要附加到 (-A) 或从 (-D) 删除链,则需要将其应用于沿三个方向之一传输的网络数据:
- INPUT - 根据此链中的规则检查所有传入数据包。
- OUTPUT - 根据此链中的规则检查所有传出数据包。
- FORWARD - 发送到另一台计算机的所有数据包都根据此链中的规则进行检查。
这让我很困惑,因为在我看来,发往主机的数据包应该是传出的。那么是否存在数据包将前往另一台计算机但不会“传出”的情况?iptables 如何区分两者?
Gil*_*il' 37
OUTPUT 用于主机发出的数据包。它们的目的地通常是另一台主机,但通过环回接口可以是同一台主机,因此并非所有通过 OUTPUT 的数据包实际上都是传出的。
FORWARD 用于既不由主机发出也不定向到主机的数据包。它们是主机仅路由的数据包。
当您开始深入研究数据包处理和 NAT 时,整个故事就变得更加复杂了。
据我了解:
INPUT:dst IP 在主机上,即使它有多个端口和多个子网
OUTPUT: src IP 来自主机,任一端口
转发:主机上的 dst IP 和主机的 src IP 都没有
例如,到路由器 A
输入是:
192.168.10.1 -> 192.168.10.199
192.168.10.1 -> 192.168.2.1
输出是:
192.168.10.199 -> xxxx
192.168.2.1 -> xxxx
前进是:
192.168.10.1 -> 192.168.2.199
192.168.10.1 -> 192.168.8.1
192.168.10.1 -> 192.168.8.199