我们可以允许已建立的会话接收流量:
$ 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
吗?他们说可能没有用,但没有说为什么。为什么我要一个比另一个更好?#1 楼
我并没有声称自己是使用iptables
规则的专家,但是第一个命令使用连接跟踪扩展名(conntrack
),而第二个命令使用state
扩展名。 根据本文档,
conntrack
扩展名已取代state
。找到了标题为:有关状态和策略的防火墙问题的SF问题与解答? OP声称在#iptables @ freenode上的IRC上问了这个问题。在讨论之后,他得出的结论是:从技术上讲,conntrack匹配取代了状态匹配(因此过时了)。但是实际上,状态匹配不会以任何方式被淘汰。 -m状态和-m conntrack ?。这个问题的答案可能是有关如何查看conntrack
和state
用法的最佳证据和建议。 (连接跟踪子系统)。
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的更高级功能,则它是一个更简单的版本
评论
serverfault.com/questions/358996/的可能的重复项...我明白了,我应该删除这个问题吗?
@ John1024-重复项仅在单个SE站点内。只要Q在管理特定SE网站的规则之内,就可以在多个SE网站上发布类似问题,这是完全可以的!
@MikhailMorfikov-您的问题,尽管与其他SE网站上的其他Q相似,在这里完全可以解决!
@Totor-如果在我的回答状态中看到我的“数据点#4”,则实际上是conntrack的别名。所以没关系。我想在将来的某个时候它们可能会完全删除状态,但是暂时使用它并不重要。