我对 iptables 中的状态/连接跟踪进行了一些澄清。
这两个规则有什么区别?
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
当指定 -m state 或 -m conntrack 时,两者似乎都加载了 nf_conntrack 模块。这两个选项都打开状态或连接跟踪。
注意:我不是在问 conntrack 做什么,我只是在问它们是否等效。我已经知道 conntrack 模块具有更多功能。
如果上面是等价的,那么在使用conntrackd时是否需要使用conntrack版本?
当包含 -m state --state BLA 的数据包首次匹配时,连接跟踪是否打开,或者连接跟踪是否始终针对所有流量流?
例如,在 FreeBSD PF 下,您可以在规则上指定 keepstate 来跟踪状态。netfilter 不也是这样吗?即加载模块后是否立即启用所有流程?
可以/应该使用连接跟踪进行如下快速匹配吗? 如果没有像下面那样使用,是不是意味着防火墙会再次遍历规则集寻找数据包的匹配项,而不是仅仅命中第一个 ESTABLISHED 规则?[许多例子似乎没有利用它,如果是真的]
例如,假设这是某种路由器/防火墙(没有 nat)。
# Default DROP policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Drop invalid
iptables -A FORWARD -m state --state INVALID -j DROP
# Accept established,related connections
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow ssh through, track connection
iptables -A FORWARD -p tcp --syn --dport 22 -m state --state NEW -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
第一个问题是conntrack是什么。这是conntrack-tools的网站。考虑到这一点,国家会做什么呢?
州比赛
最有用的匹配标准由
state' extension, which interprets the connection-tracking analysis of the
ip_conntrack 模块提供。强烈推荐这个。指定
-m state' allows an additional
--state' 选项,这是要匹配的状态的逗号分隔列表(“!”标志表示不匹配这些状态)。这些状态是:NEW 创建新连接的数据包。
ESTABLISHED 属于现有连接的数据包(即回复数据包或已看到回复的连接上的传出数据包)。
RELATED 与现有连接相关但不是其一部分的数据包,例如 ICMP 错误,或(插入 FTP 模块)建立 ftp 数据连接的数据包。
无效 由于某种原因无法识别的数据包:这包括内存不足和与任何已知连接不对应的 ICMP 错误。一般来说,这些数据包应该被丢弃。
这个强大的匹配扩展的一个例子是:
# iptables -A FORWARD -i ppp0 -m 状态!--state 新-j 丢弃
因此,为了回答这个问题,conntrack 与 conntrack 工具包一起使用,并在这方面取代了 state。如果您计划使用 conntrack 工具包,这比声明要好。
连接跟踪针对流量启用,它不断尝试将流量与规则进行匹配。
问题 2 的答案是,是的,使用 conntrack
回答问题3,哪种情况?状态的答案在上面的定义中。
4 的答案是,conntrack 是与 conntrack 工具包一起使用的,state 是不使用该工具包的。是的,您可以在示例中使用 conntrack,而不会对使用 state 造成任何损失。
归档时间: |
|
查看次数: |
8466 次 |
最近记录: |