九天小哥的专栏

天道酬勤

连接跟踪子系统之期望连接

这篇笔记记录了连接跟踪子系统中期望连接相关的内容,这部分内容比较抽象,自己目前也只是基于ftp协议的使用来理解的,对于其它应用场景尚未接触过,尚不理解。期望连接相关代码文件有: 代码路径 说明 /net/netfilter/nf_conntrack_expect.c 期望连接子模块...

2019-05-01 13:19:12

阅读数 21

评论数 0

连接跟踪子系统之初始化

这篇笔记记录了连接跟踪子系统框架部分的初始化过程,涉及的核心代码文件有: 代码路径 说明 net/netfilter/nf_conntrack_standalone.c 连接跟踪子系统的启动文件 net/netfilter/nf_conntrack_core.c 连接跟踪子系统...

2019-04-21 21:03:23

阅读数 20

评论数 0

连接跟踪子系统之extend

NAT和状态防火墙是基于连接跟踪的,但是在 数据结构 在连接跟踪信息块struct nf_conn的定义中,有一个ct_ext字段,如下: struct nf_conn { ... struct nf_ct_ext *ext; struct rcu_head rcu; }; struct ...

2019-04-21 16:19:23

阅读数 22

评论数 0

连接跟踪子系统之helper---ftp

这篇笔记以ftp协议为例,看看应用层协议要想支持连接跟踪子系统应该如何做。这篇笔记还涉及到了helper模块和期望连接。 相关代码文件如下: 代码路径 说明 net/netfilter/nf_conntrack_ftp.c 连接跟踪子系统中ftp协议的实现 ftp协议的连接跟踪...

2019-04-14 22:52:50

阅读数 18

评论数 0

连接跟踪子系统之helper

在Netfilter之AF_INET协议族连接跟踪子系统钩子函数 中有看到,在Netfilter子系统的出口,第一个钩子是ipv4_conntrack_help()(以AF_INET协议族为例),之后才是对新连接的确认钩子。并且help钩子的逻辑就是调用连接跟踪信息块中的help()回调函数。这篇...

2019-04-13 11:13:13

阅读数 19

评论数 1

连接跟踪子系统之L4协议---udp

在前面的笔记中有看到,连接跟踪子系统框架只是提供了一种连接的抽象,并且为跟踪一个连接在数据包的传输路径上提供了一种通用的拦截方法,但是要想真正的完成连接的跟踪,还需要具体L3和L4协议的参与,之前的笔记已经详细分析了AF_INET协议族的L3协议ipv4具体是如何实现连接跟踪的,这篇笔记以udp协...

2019-04-07 21:04:14

阅读数 38

评论数 0

连接跟踪子系统之核心数据结构

相关代码文件: 代码路径 说明 includde/net/netfilter/nf_conntrack_tuple.h tuple结构的定义 net/netfilter/nf_conntrack_core.c 连接跟踪子系统框架代码的实现文件 struct nf_connt...

2019-04-06 23:24:40

阅读数 15

评论数 0

连接跟踪子系统之AF_INET协议族钩子函数

这篇笔记来看看AF_INET协议族的连接跟踪模块在入口处的处理逻辑,即PRE_ROUTING和LOCAL_IN两个HOOK点的处理,如前面的笔记所示,连接跟踪在这两个HOOK点共有四个钩子函数,PRE_ROUTING的两个钩子分别是ipv4_conntrack_defrag()和ipv4_conn...

2019-04-06 23:13:46

阅读数 7

评论数 0

连接跟踪子系统之核心实现

这篇笔记分析了连接跟踪子系统框架部分的核心代码实现,涉及文件主要有: 代码路径 说明 net/netfilter/nf_conntrack_core.c 连接跟踪子系统框架代码的实现文件 连接跟踪入口: nf_conntrack_in() 数据包skb就是通过该函数进入连接跟踪...

2019-04-06 23:08:24

阅读数 16

评论数 0

连接跟踪子系统之AF_INET初始化

初始化 static int __init nf_conntrack_l3proto_ipv4_init(void) { int ret = 0; need_conntrack(); //向Netfilter框架注册xxx_sock_opt()接口 ret = nf_register_s...

2019-04-05 23:05:10

阅读数 17

评论数 0

连接跟踪子系统之L3L4协议管理

这篇笔记记录了连接跟踪子系统框架对L3和L4协议的管理,核心代码涉及如下文件: 代码路径 说明 net/netfilter/nf_conntrack_l3proto.c 对L3和L4协议的管理 include/net/netfilter/nf_conntrack_l3proto...

2019-04-05 19:47:32

阅读数 19

评论数 0

Netfilter之AF_INET协议族rule、match、target

在笔记Netfilter之table、match、target中,有看到框架对table、match、target的定义,分别是struct xt_table、struct xt_match和struct xt_target。如果要扩展match和target,只需要实现对应的结构,然后将其注册给...

2019-03-31 00:36:41

阅读数 24

评论数 0

Netfilter之filter(二)

继上一篇笔记Netfilter之filter表(一),这篇笔记来看看AF_INET协议族的filter表的钩子的注册,以及防火墙检查时规则的遍历。 1. HOOK的注册 static int __init iptable_filter_init(void) { ... /* Register h...

2019-03-31 00:29:26

阅读数 16

评论数 0

防火墙之filter表(一)---AF_INET协议族

在Netfilter中,各个table、match和target都是以模块形式存在的。这篇笔记以AF_INET协议族的filter表为例,看看各个协议族是如何与Netfilter框架配合,实现table的。 1. 初始化 AF_INET协议族的filter表的实现模块是/net/ipv4/netf...

2019-03-30 00:07:55

阅读数 31

评论数 0

Netfilter之table、rule、match、target

表、规则、匹配和target在内核中都有其对应的数据结构,在理解内核的逻辑代码之前,非常有必要先熟悉这些数据结构,以及它们之间的关系。 如标题,这篇笔记记录的内容针对的是PF_INET协议族,对于PF_INET6,相同概念对应的数据结构并不相同。 数据结构 struct net 如下,每个协议族有...

2019-03-24 23:53:43

阅读数 21

评论数 0

Netfilter之框架初始化与对外接口

从Makefile中也可以看的出来,Netfilter框架的核心功能由如下几个文件实现: netfilter-objs := core.o nf_log.o nf_queue.o nf_sockopt.o obj-$(CONFIG_NETFILTER) = netfilter.o 其中core...

2019-03-24 13:36:48

阅读数 27

评论数 0

TCP选项之SACK选项的接收(三)

标准的TCP确认机制中,如果发送方发送了0-1000序号之间的数据,接收方收到了0-100、300-1000,那么接收方只能向发送方确认101,这时发送方会重传所有101-1000之间的数据,实际上这是不必要的。为了优化这种情况,必须让发送方知道更多的接收信息,所以发展出了SACK选项,这篇笔记就...

2019-03-24 10:08:50

阅读数 10

评论数 0

TCP选项之SACK选项的接收(二)

这篇笔记记录了TCP在收到SACK选项后,对发送队列中skb的记分牌的更新细节。 tcp_sacktag_skip() 辅助函数tcp_sacktag_skip()遍历发送队列,直到某个skb的末尾序号(假设序号范围为[seq1, end1))end1大于等于目标值,并且将遍历过程中所有不满足条件...

2019-03-15 23:59:17

阅读数 15

评论数 0

TCP选项之SACK选项的接收(一)

这篇笔记开始记录SACK选项的接收部分处理逻辑,这部分内容较多,会分成几篇来介绍。 接收方对SACK信息的处理 收到ACK段后,首先会用tcp_paser_options()解析输入段携带的选项信息,在该函数中,如果包含了SACK信息,那么skb的控制块的sacked字段就记录了SACK信息距TC...

2019-03-15 01:07:46

阅读数 34

评论数 0

TCP定时器之超时重传定时器

每条TCP连接都会维护一个超时重传定时器,该定时器是TCP保证可靠性的一个非常重要的手段,一旦该定时器超时,那么就会重传还未收到ACK的报文。这篇笔记就来看看该定时器相关的代码实现。 1. 相关数据结构 struct inet_connection_sock { ... //icsk_retra...

2019-03-09 12:26:24

阅读数 127

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭