我的理解是通常情况下任何给定的数据包都只能与一个 iptables 链交互,即 INPUT FORWARD 或 OUTPUT。但是,我希望将端口 80 上的所有流量重定向,这些流量的源或目标都不是当前机器(从 FORWARD 链开始)到当前机器的端口 3219(最终位于 INPUT 链上)。这样做的目的是我正在运行透明代理,并且这台机器是网络的路由器。
iptables 命令和解释是理想的,但如果必须选择,我绝对更喜欢解释。
答案1
我的理解是,通常任何给定的数据包只会与一个 iptables 链(INPUT FORWARD 或 OUTPUT)交互。
您的理解是错误的,或者充其量是过于简单。一个数据包通常会在至少 3 个单独的表和这些表上的各种链上进行处理。当您只查看过滤表时,数据包通常只适合 IMPUT/OUTPUT/FORWARD。但在其他表上,您将在不同阶段遇到多个链。例如,从一个接口路由到另一个接口的数据包将遇到 nat 表上的 PREROUTING 和 POSTROUTING 链。
有各种流程图你可以找到 iptables。但是没有一个能真正让你完全理解到底发生了什么,但你可以查看一堆。通常当你把它们放在一起看时,你应该能够理解。