我正在阅读此方法手册,并且类似这样:


我们可以允许已建立的会话接收流量:

$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT


上面的规则在ESTABLISHED,RELATED

中,逗号的两边都没有空格。如果上面的行不起作用,则可能是在cast割的VPS上,其
提供程序无法使用扩展名,在这种情况下,
次版本可以作为最后的选择:

$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT



-m conntrack --ctstate吗?他们说可能没有用,但没有说为什么。为什么我要一个比另一个更好?

评论

serverfault.com/questions/358996/的可能的重复项...

我明白了,我应该删除这个问题吗?

@ John1024-重复项仅在单个SE站点内。只要Q在管理特定SE网站的规则之内,就可以在多个SE网站上发布类似问题,这是完全可以的!

@MikhailMorfikov-您的问题,尽管与其他SE网站上的其他Q相似,在这里完全可以解决!

@Totor-如果在我的回答状态中看到我的“数据点#4”,则实际上是conntrack的别名。所以没关系。我想在将来的某个时候它们可能会完全删除状态,但是暂时使用它并不重要。

#1 楼

我并没有声称自己是使用iptables规则的专家,但是第一个命令使用连接跟踪扩展名(conntrack),而第二个命令使用state扩展名。

根据本文档,conntrack扩展名已取代state。找到了标题为:有关状态和策略的防火墙问题的SF问题与解答? OP声称在#iptables @ freenode上的IRC上问了这个问题。在讨论之后,他得出的结论是:从技术上讲,conntrack匹配取代了状态匹配(因此过时了)。但是实际上,状态匹配不会以任何方式被淘汰。 -m状态和-m conntrack ?。这个问题的答案可能是有关如何查看conntrackstate用法的最佳证据和建议。 (连接跟踪
子系统)。

xt_conntrack.c的标头:

 Obsolete extensions:
  • -m state: replaced by -m conntrack


所以我说-状态模块是更简单(错误可能更少)。内核中的时间也更长。另一侧的Conntrack具有更多选项和功能[1]。

如果需要,我的电话是使用conntrack,否则请使用状态模块。
/>

关于netfilter的类似问题
邮件列表。

[1]非常有用,如"-m conntrack --ctstate DNAT -j MASQUERADE"
路由/ DNAT修复;-)

数据点#4

我从netfilter@vger.kernel.org netfilte / iptables讨论中找到了该线程,标题为:状态匹配已过时1.4.17,这几乎表明state只是conntrack的别名,因此使用哪个并不重要,在两种情况下,您都使用conntrack。实际上,我必须表示同意。

摘录




为什么我们不保留“状态”作为别名,并
接受“ conntrack”中的旧语法?


状态当前被别名并转换为iptables中的conntrack
如果内核有它。没有脚本被破坏。

如果别名是在用户空间中完成的,则可以删除内核部分-
也许有一天。


别名是已经在用户空间中完成。一种类型是“ state”,然后
将其转换为“ conntrack”,然后将其发送到内核。到conntrack模块,甚至可以删除状态内核模块。)


参考文献


关于状态和策略的防火墙问题?
iptables:使用conntrack或状态模块的区别


#2 楼

我不是netfilter专家,但是我调查了iptables-extensions手册页并感到惊讶,它是

The "state" extension is a subset of the "conntrack" module.


所以状态是conntrack的一部分,如果您真的只需要--state而不是conntrack的更高级功能,则它是一个更简单的版本