文档章节

Linux Kernel Netfilter Helper 分析

最新更新消息
 最新更新消息
发布于 2015/11/15 11:10
字数 233
阅读 135
收藏 3

linux netfilter 与helper相关的hook:

点击(此处)折叠或打开

{

.hook = ipv4_conntrack_in,

.owner = THIS_MODULE,

.pf = PF_INET,

.hooknum = NF_IP_PRE_ROUTING,

.priority = NF_IP_PRI_CONNTRACK,

}

{

.hook = ipv4_conntrack_help,

.owner = THIS_MODULE,

.pf = PF_INET,

.hooknum = NF_IP_POST_ROUTING|NF_IP_LOCAL_IN,

.priority = NF_IP_PRI_CONNTRACK_HELPER,

}

第一个数据包到来的流程:

ipv4_conntrack_in --> nf_conntrack_in --> resolve_normal_ct --> nf_ct_get_tuple --> nf_conntrack_find_tuple(1) --> init_conntrack --> nf_ct_find_expection(2) --> nf_ct_helper_find(3) --> nf_ct_helper_ext_add(4)


(1) 查找tuple五元组,因为是第一个连接,所有查找不到

(2) 查找期待连接,因为没有添加过期待连接,所有也查找不到

(3) 查找注册的helper,这里以tftp为例,找到了tftp注册的helper

(4) 将找到的helper添加到ct结果体中


在之后的ipv4_conntrack_help的hook函数中,会执行ct->helper->help函数,这个help函数tftp_help会添加一个exp到全局期待连接表中


当期待的链接的第一个数据包到达的时候,会在(2)中找到,从而将新的连接与之前的链接联系起来。


© 著作权归作者所有

共有 人打赏支持
最新更新消息
粉丝 1
博文 39
码字总数 49637
作品 0
崇明
私信 提问
Linux Kernel 4.10.1、4.9.13 和 4.4.52 稳定版发布

Linux Kernel 4.10.1、4.9.13 和 4.4.52 稳定版发布,后两个都包含了一些小的修复和一组通常的重要修复。 4.9.13 更新内容以及 4.4.52 更新内容 Linux Kernel 4.10.1 更新内容: xfs:清除写...

王练
2017/02/27
1K
4
conntrack-tools

The conntrack-tools user manual Pablo Neira Ayuso This document details how to install and configure the conntrack-tools >= 1.4.0. This document will evolve in the future to cov......

Linux_woniu
2017/11/02
0
0
iptables模块添加--七层过滤、防CC、DDOS

#!/bin/bash # BY kerryhu # QQ:263205768 # MAIL:king_819@163.com # BLOG:http://kerry.blog.51cto.com IPT=/sbin/iptables /* 当前系统版本centos5.3,内核版本2.6.18-128.el5,对现有系统......

刘赤龙
2010/06/08
0
0
debian 6上安装l7 filter在应用层禁用xunlei

平台:debian 6 x86_64,在linode里选择内核版本2.6.28,l7 filter官网说改版本内核可用 1,准备环境 apt-get update apt-get upgrade -y apt-get install -y build-essential libncurses5-d......

hiwill
2015/11/13
0
0
一个实用并且确实的内核补丁--关于桥接nat的

kernel-janitors@vger.kernel.org bdschuym@pandora.be ...相关的收件人邮箱 Hi,everyone As we know,the NAT netfilter-hook for IP hooking at OUTPUT is called after routing,so we mus......

晨曦之光
2012/04/10
146
0

没有更多内容

加载失败,请刷新页面

加载更多

Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
1
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部