了解iptables中的连接跟踪

我在对iptables中的状态/连接跟踪进行了一些澄清之后。

注意:我不是在问什么是conntrack,我只是问他们是否相同。 我已经知道conntrack模块有更多的function。

  • 如果以上内容相同,在使用conntrackd时是否需要使用conntrack版本?

  • 当数据包首次匹配包含-m状态 – 状态BLA,或始终对所有通信stream进行连接跟踪时,是否打开连接跟踪?

    例如在FreeBSD PF下,你可以在规则上指定keepstate来跟踪状态。 netfilter也一样吗? 即一旦模块被加载,它是否对所有stream程都开启?

  • 可以/应该连接跟踪用于像下面的快速匹配? 如果不是像下面那样使用,是不是意味着防火墙会再次遍历规则集,寻找匹配的数据包,而不是仅仅触及第一个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 
  • 当conntrack表填满时,您的防火墙是否会开始拒绝stream量,或者将没有状态的规则仍然工作。 在这种情况下,我不应该使用INVALID状态丢弃数据包,对吗?

看到这里: 用iptables和kmod自动加载在脚下自己拍摄

第一个问题是什么是conntrack 。 这是conntrack-tools的网站。 考虑到这一点,国家做了什么?

国家比赛

最有用的匹配标准由state' extension, which interprets the connection-tracking analysis of the提供,该state' extension, which interprets the connection-tracking analysis of the ip_conntrack模块state' extension, which interprets the connection-tracking analysis of the 。 这是强烈build议。

指定-m state' allows an additional选项,这是逗号分隔的状态列表匹配(“!”标志表示不匹配那些状态)。 这些州是:

NEW创build新连接的数据包。

ESTABLISHED(已build立)属于现有连接的数据包(即回复数据包,或者已经看到回复的连接上的传出数据包)。

RELATED与现有连接(如ICMP错误)或(与插入的FTP模块相关)的数据包相关的数据包,它是build立ftp数据连接的数据包。

INVALID由于某种原因无法识别的数据包,包括内存不足和ICMP错误,这些错误与任何已知的连接都不相符。 通常这些数据包应该被丢弃。

这个强大的匹配扩展的例子是:

#iptables -A FORWARD -i ppp0 -m状态! – 状态NEW -j DROP

有关国家和政策的防火墙问题?

因此,为了回答这个问题, conntrack是用于conntrack工具包并取代这方面的状态 。 如果您打算使用conntrack工具包,那么比状态要好。

连接跟踪开启了通信stream量,它不断地尝试将stream量匹配到规则。

问题2的答案是,是的,使用conntrack

回答问题3,哪种情况? 状态的答案在上面的定义中。

对于4的答案是,conntrack是用于conntrack工具包,并声明,不使用工具包。 是的,你可以使用conntrack,而不用在你的例子中使用state。