为什么 ipchains 中要内置表?

为什么 ipchains 中要内置表?

为什么要内置表ipchains?添加表有什么好处ipchains?是否有一个简单的场景可以说明如何使用表来提高性能或提供其他一些好处?

答案1

iptables -N dmzrules
iptables -A dmzrules -p TCP --dport 22  -j ACCEPT
iptables -A dmzrules -p TCP --dport 80  -j ACCEPT
iptables -A dmzrules -p TCP --dport 443 -j ACCEPT
iptables -A dmzrules -p UDP --dport 53  -j ACCEPT
iptables -A dmzrules -p UDP --dport 123 -j ACCEPT


iptables -A FORWARD -s 10.0.91.0/24    -j dmzrules
iptables -A FORWARD -s 192.168.22.0/24 -j dmzrules
iptables -A FORWARD -s 172.16.33.0/24  -j dmzrules

因此,在上面的示例中,您不必为允许的网络一遍又一遍地为同一组允许的 UDP/TCP 端口编写规则。因此,您有 9 行而不是 15 行。性能应该会有所提高,因为每个传入数据包不必尝试匹配 15 条规则。相反,数据包将匹配这 3 个 INPUT 规则,如果源 IP 匹配,它将尝试匹配 dmzrules 表中的 4 个规则。

我认为如果您将 iptables 用于单个盒子,那么使用表可能不太有用。您可能可以一次性枚举允许的端口,但要记住克里斯关于黑/白名单的观点,即您可以更新此列表而无需破坏主要规则集。

答案2

“表”之所以被包含在内,是因为这个概念从 Linux 使用 BSD 的 IPFW 防火墙时就延续到了 ipchains 中。它们可以轻松地将一个或多个规则应用于一组应在管理上受到相同对待的 IP。

我最常看到它们的地方是使用黑名单或白名单时。您可能会使用fail2ban自动阻止“攻击”您的服务器的IP,将它们添加到顽皮表中,而不是为每个IP创建规则以保持干净。同样,您的网络上可能有一组具有不同 IP 的“管理”计算机,您可以将它们添加到表中,然后编写一条规则,允许它们通过 SSH 访问您的服务器。

相关内容