它首先需要存储状态。我使用的一些旧的BSD防火墙,我猜它被命名为IPFW,我曾经放置一条规则,即“跟踪离开数据包的状态”,并将其放置在接口的出站方向上。然后,另一个关于入站方向的规则将它们与由出站方向规则创建的状态进行检查。所以曾经有两条规则:(1)填充状态表,这是出站方向,(2)查找状态表,这是入站方向。
但是使用 connntrack,我看到它应用在 INPUT 链上,比如这条规则:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
这让我想知道,该声明实际上在做什么?
- 是不是说它将通过将信息放入状态表中来开始跟踪匹配该规则的数据包?
- 还是说它已经拥有状态信息,并且将根据它对入站消息采取行动?(例如,如果它们属于先前接受的连接,则接受?)。但是,在这种情况下,states 表是在哪里填充的?是哪个规则?或者它是无规则的和隐含的?