连接跟踪
TCH_world
记录职业生涯的点滴
展开
-
netfilter之链接跟踪做nat
上一节我们将了NAT是基于链接跟踪实现的,当一条链接跟踪建立要改变它的tuple的reply方向才能做nat,这个链接跟踪的nat是函数nf_nat_setup_info实现 1、nf_nat_setup_info nf_nat_setup_info对链接跟踪的做NAT,只会改变链接跟踪reply方向的ip、端口,不会改变数据包的ip、端口,数据包的DAT在上一节已经介绍了是在PRE_ROUT...原创 2018-12-14 00:01:02 · 1211 阅读 · 0 评论 -
netfilter连接跟踪主要数据结构
linux协议栈中netfiler框架对数据包做过滤处理基本上都是基于连接跟踪来做的,比如snat、dnat等,连接跟踪就是记录数据流在协议栈中的两个方向,不同的协议有不同的特征,tcp/udp就是五元组(源ip、目的Ip、源端口、目的端口、协议号),icmp协议就是ip、id、type、code。 1、struct nf_conn struct nf_conn结构体是连接跟踪的抽象结构,其中...原创 2018-12-09 16:19:22 · 1187 阅读 · 0 评论 -
netfilter连接跟踪初始化
连接跟踪的初始化主要有三个地方 (1)连接跟踪本身初始化。 (3)在对应的Hook上注册连接跟踪的处理函数。 (4)初始化连接跟踪和三层协议、四层协议相关的函数。 1、连接跟踪本身初始化 连接跟踪本身初始化函数是nf_conntrack_net_init主要做两件事情:为连接跟踪分配slab缓冲、初始化后proc文件系统 1.1、nf_conntrack_net_init nf_co...原创 2018-12-09 17:18:21 · 535 阅读 · 0 评论 -
netfilter链接跟踪实现之nf_conntrack_in函数
1、数据包方向 要分析连接链接跟踪的实现我们就要先分析数据包在协议栈中的方向,总的来说主要分为三个方向:本机转发的数据包、本机接受的数据包、本机产生的数据包,我们之前分析了连接跟踪只在四个链上注册了钩子函数,分别是PRE_ROUTING链、OUT链、LOCAL_IN链、POST_ROUTING链。PRE_ROUTING链上注册的是ipv4_conntrack_in,OUT链上注册的是ipv4_c...原创 2018-12-10 00:02:52 · 3218 阅读 · 0 评论 -
netfilter链接跟踪实现之ipv4_confirm函数
ipv4_confirm函数注册在LOCAL_IN链、POST_ROUTING链,这个是netfiler的两个出口,从函数名字看得出函数的功能是链接跟踪确认,下面来分析这个函数。 static struct nf_hook_ops ipv4_conntrack_ops[] __read_mostly = { ... { /*数据包最后出去在POSTROUTING链上连接跟踪确认*/ ...原创 2018-12-11 20:51:11 · 1339 阅读 · 0 评论