在 iptable 中创建规则时出现的问题

在 iptable 中创建规则时出现的问题

大家好 :) 我需要一点帮助来创建规则。我开始学习 iptables 和防火墙,但我有一些问题。我需要仅允许从 PcA 到 PcB 的 HTTP 通信。/我的代码是:

iptables  -A INPUT -s PcA's_IP -d PcB's_IP --sport 80 -j ACCEPT

iptables     -A INPUT -d PcB's_IP --dport 80 -jDROP

我的问题是我应该使用 INPUT 还是 FORWARD。

那么如果我想允许其余流量,我应该写什么? 也许:

iptables -A INPUT -P ACCEPT

我正在写入 PcB 的 INPUT 文件。如果有人能帮助我,我将非常高兴。我读了很多书,但只有一些复杂的例子,我很难理解。

答案1

您可能需要查看一个可以为您构建规则的工具,然后检查规则以了解它们的作用。有一些标准规则应该启用以允许。我更喜欢 Shorewall,它有很好的文档记录,我发现它很容易用于简单和复杂的设置。它还有很好的示例配置,可以作为起点。

答案2

了解 iptables 的一个关键点是,它将按顺序检查规则,因此,如果您不知道 iptables 配置中所有其他现有规则是什么,就无法回答您的问题。您可以使用“iptables -vL chain”(例如 iptables -vL INPUT)查看单个链,或使用“iptables-save”查看所有链。

三个默认链(INPUT、OUTPUT 和 FORWARD)中还有一条隐含规则,即链策略,它定义了对不符合该链中任何现有规则标准的数据包的处理方式。从您的示例来看,您似乎已经意识到了这一点。

就 INPUT 的使用而言,与 FORWARD 相反,请使用 INPUT。FORWARD 仅适用于将数据包转发到其他计算机的情况(即,当具有 iptables 的计算机充当其他计算机的防火墙时)。

总结一下,回到你最初的问题,你写的规则看起来几乎没问题(我认为标志中应该有一个“-p tcp”,以表明规则涉及 tcp 协议。当然,如果还有其他我们不知道的规则,那么它们可能会在 http 流量达到这些规则之前阻止它。因此,在 iptables 中,第一个终端规则(即具有 ACCEPT、REJECT 或 DROP 的规则)具有与数据包匹配的条件,将处理该数据包,并且同一链中它之后的任何其他规则都不会对处理产生影响。

相关内容