netfilter(1)
来源:互联网 发布:海贼王883知乎 编辑:程序博客网 时间:2024/06/17 21:03
本文参考了http://blog.chinaunix.net/uid-23069658-id-3160506.html和http://blog.chinaunix.net/uid-23069658-id-3163999.html作者的思想,对最近的工作做个梳理。
1.大致模型:
2.上图中涉及到的上层协议,应该是网络层及以上,下图为内核和用户空间的交互大致过程:
3.内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter,nat和mangle。
1)、filter表
该表是整个过滤系统中真正起“过滤”作用的地方。所有对数据包的过滤工作都在这个表里进行,也就是说用户如果需要对某种类型的数据包进行过滤拦截,那么最好在这个表中进行操作。filter表会在NF_IP_LOCAL_IN、NF_IP_FORWARD和NF_IP_LOCAL_OUT三个hook点注册钩子函数,也就是说所有配置到filer表中的规则只可能在这三个过滤点上进行设置。
2)、nat表
主要用于DNAT和SNAT和地址伪装等操作。用于修改数据包的源、目的地址。目前版本的内核中nat表监视四个hook点:NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN/OUT、NF_IP_POST_ROUTING。但在真正的实际应用中,我们一般仅需要在nat表的PREROUTING和POSTROUTING点上注册钩子函数。该表有个特性:只有新连接的第一个数据包会经过这个表,随后该连接的所有数据包将按照第一个数据包的处理动作做同样的操作,这种特性是由连接跟踪机制来实现的。
3)、mangle表
该表主要用于对数据包的修改,诸如修改数据包的TOS、TTL等字段。同时该表还会对数据包打上一些特殊的标签以便结合TC等工具,实现诸如Qos等功能。该表监视所有的hook点。4.我们通常用iptables添加规则时使用的结构:
在 Netfilter 中规则是顺序存储的,一条rule规则主要包括三个部分:
- ipt_entry:标准匹配结构,主要包含数据包的源、目的IP,出、入接口和掩码等;
- ipt_entry_match:扩展匹配。一条rule规则可能有零个或多个ipt_entry_match结构;
- ipt_entry_target:一条rule规则有且仅有一个target动作。就是当所有的标准匹配和扩展匹配都符合之后才来执行该target。
- netfilter(1)
- NetFilter (1)
- netfilter 函数剖析-1
- 9.1.1 netfilter框架
- netfilter 例子改写1
- Netfilter
- netfilter
- netfilter
- netfilter
- netfilter
- netfilter
- netfilter
- netfilter
- Netfilter
- NetFilter
- Netfilter
- Netfilter
- netfilter
- hdu 5108 高效筛素数法模板题
- UVA 10347 || Medians(中线组成的三角形面积是原三角形的3/4
- javaBean与Map<String,Object>互转
- JavaBean 和 Map 之间互相转换
- XcodeDebug---远程bug报告和分析
- netfilter(1)
- 一个私有云选型方案
- php高手进阶:实现强大的翻页跳转功能
- android自定义键盘(解决弹出提示的字体颜色问题)
- HTTP协议第二篇
- 先介绍一下在翻页中用到的数据库语法
- AOP 的利器:ASM 3.0 介绍
- 【GoLang笔记】A Tour of Go - Exercise: Web Crawler
- 这里将介绍两种翻页显示功能的实现: