连接跟踪在Netfilter的NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT两个HOOK点里以较高的优先级注册连接跟踪入口函数,然后以较低的优先级在NF_IP_LOCAL_IN和NF_IP_POST_ROUTING注册连接跟踪出口函数。入口函数对每个连接的**个报文进行查询,如果这个连接未被记录,则创建一个新的连接,出口函数将未被filter表过滤的连接真正加入到连接跟踪表项上。
连接跟踪以一个tuple(源地址/端口+目的地址/端口)四元组来标识一个连接,连接跟踪会建立两个方向的tuple,Original是主机发送出去的包的连接跟踪,Reply就是其相应回包的连接跟踪。
数据包的连接状态一般有以下几种:
IP_CT_ESTABLISHED:数据包是一个已建立连接的一部分,并且处在初始方向(初始方向为Original)。
IP_CT_RELATED:数据包属于一个已建连接的相关连接,在其初始方向(比如FTP,数据连接就是控制连接的一个相关连接)。
IP_CT_NEW:数据包试图建立新的连接。
IP_CT_ESTABLISHED+IP_CT_IS_REPLY:数据包是一个已建连接的一部分,并且处在响应方向(相应方向为Reply)。
IP_CT_RELATED+IP_CT_IS_REPLY:数据包属于一个已建连接的相关连接,并且处于相应方向。
连接跟踪里*重要的就是连接跟踪表。连接跟踪表是一个记录所有数据包连接信息的Hash散列表,实际上是以数据包的Hash值映射的双向循环链表数组,由全局变量ip_conntrack_hash所指向,节点元素是ip_conntrack_tuple_hash类型的对象,包含源地址/端口、目的地址/端口和协议号。事实上ip_conntrack_tuple_hash是对ip_conntrack_tuple的一个封装,将其组成一个双向链表而已。
连接跟踪表里有一个期望连接的成员变量,作用是当协议通信需要两个连接的时候,期望连接可以让这两个连接联系起来,比如FTP、PPTP、L2TP协议。另外连接跟踪还提供了一个helper功能模块,用来完成对连接跟踪的扩展。允许我们在一个数据包即将离开Netfilter框架时对其进行一些*后的处理。
需要注意的是,连接跟踪和包过滤是两个*立的功能。连接跟踪创建的连接结构并不成为数据包被允许或禁止的依据,只是在过滤的时候可以匹配连接跟踪里的状态进而决定对数据包采取什么操作。可以这样说,连接跟踪只是个基础,就算建立了连接,*后的去留还是要看过滤表中的规则,连接跟踪本身不具备对包的判决功能。这跟一般意义上的状态检测不同(在状态监测中,如果有连接存在,就不检查过滤规则,只进行相应的状态变迁)。这会造成效率上的降低,因为内核不管连接跟踪状态如何,都要去查询过滤规则表来进行下一步操作。并且,数据包的过滤是在NAT目的地址转换之后,源地址转换之前进行的,在添加过滤规则的时候要注意这一点。
投稿作者:孤芳不自赏46
爱亲母婴生活馆可以加盟吗?爱亲母婴生活馆当然可以加盟了,其招商加盟信息是由其总部北京华恩投资有限公司...
200平米爱亲母婴生活馆加盟费是多少?200平米爱亲母婴生活馆加盟费是在一万元以下!自爱亲母婴生活馆...
爱亲母婴生活馆,中国母婴用品权威品牌,第一家国内连锁卖场。以全球独特的连锁运营模式,倾情传播百年树人...
都说女人和孩子的钱是最好赚的,所以众多投资商也开始从母婴用品着手,对于母婴用品品牌排名情况最为关注,...
母婴生活馆哪个品牌好?爱亲母婴生活馆产品优质值得信赖!随着母婴用品市场的不断发展,现在市面上的母婴品...
3158招商加盟网友情提示:投资有风险,选择需谨慎