Iptables INPUT、OUTPUT 和 FORWARD 链

Iptables INPUT、OUTPUT 和 FORWARD 链

我有一台有两个接口的机器,eth0 和 eth1,eth0 面向 INTERNET,eth1 面向 DMZ。

我理解,关于 eth0 的 OUTPUT 和 INPUT 定义如下:

iptables -A INPUT  -i eth0 -j eth0_input
iptables -A OUTPUT -i eth0 -j eth0_output

但如果定义为,我对前向链有点不确定

iptables -A FORWARD -i eth0 -j eth0_forward

我从来没有遇到过必须考虑 eth1 相对于 eth0 和前向链的情况,但是今天早上,在 99.99%(似乎)的情况下,它只是将数据包路由到 eth1 后面的机器。

eth1 接口是 eth0_input 和 eth0_output 的一部分还是 eth0_forward 的一部分?

谢谢

答案1

我认为你问错了问题。eth1 接口不是 eth0_input 的一部分,eth0_output 也不是 eth0_forward 的一部分 - 尽管它们在你的配置中可能有关联

  • eth0 和 eth1 是接口。
  • eth0_input、eth0_output 和 eth0_forward 是由您的配置规则创建的构造,虽然描述性很强但完全是任意的。

尽管规则与接口交互,但它们却是分开的。

一般来说 -

  • 发往本地计算机的数据包由 INPUT 链处理。同样,来自本地计算机(忽略 NAT)的数据包由 OUTPUT 链处理。

  • 来自路由器后面其他机器的数据包会经过 FORWARD 链。

您很可能会发现 eth0_forward 链已被用来控制哪些服务器和端口暴露给互联网,即来自 eth0 的流量将是来自世界各地的流量,并且只应在以下情况下允许 - 它对应于出站流(即由较早的 ESTABLISHED,RELATED 规则捕获)或已知系统上的已知端口 - 在这种情况下,应该在它到达 eth1 之前允许或拒绝它。 该规则规定了来自世界各地的流量在到达防火墙的 LAN 侧之前进行处理。

答案2

我不明白你需要对规则进行哪些修改来解决你的问题,因为你的问题是关于链是接口的一部分。 他们不是。

如果只是回答你的问题,davidgo 的回答的第一部分是正确的。这似乎是xy 问题

但进一步来说,

  • eth0_输入eth0_输出eth0_forward:它们只是用户定义的命名链

你可以把它们想象成“跳线”。我们不妨这样称呼它们:eth0_输入等等,你称它们为输入0和类似的。

然后你可以制定如下规则:

iptables -A INPUT  -i eth0 -j input0
iptables -A OUTPUT -i eth0 -j output0
iptables -A FORWARD -i eth0 -j forward0
iptables -A input0 --match-something --do-something
iptables -A output0 --match-something --do-something
iptables -A forward0 --match-something --do-something

你不需要那些。你也可以不使用它们,直接陈述相同的内容,而不用 input0、output0 和 forward0。例如:

iptables -A INPUT  -i eth0 --match-something --do-something
iptables -A OUTPUT -i eth0 --match-something --do-something
iptables -A FORWARD -i eth0 --match-something --do-something

我希望这种方法可以明确您需要做什么。

相关内容