博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux netfilter/iptables内核模块介绍
阅读量:4139 次
发布时间:2019-05-25

本文共 1026 字,大约阅读时间需要 3 分钟。

netfilter架构

netfilter架构其实就是在一个packet流经系统时的多个关键点处设置了钩子,程序员可以为每一个钩子点注册一个监听器(即钩子函数,就是在packet流经这个钩子点时的一段处理代码),钩子函数将决定packet的下一个动作是什么?

在钩子函数的代码最后需要决定netfiler框架接下来需要怎么处理packet,可以返回以下5种值:

NF_ACCEPT: continue traversal as normal.

NF_DROP: drop the packet; don't continue traversal.

NF_STOLEN: I've taken over the packet; don't continue traversal.

NF_QUEUE: queue the packet (usually for userspace handling).

NF_REPEAT: call this hook again.

Iptables--filter、nat、mangle表

IPtables作为一个packet选择系统建立在netfilter框架之上。Iptables可扩展内核,注册一系列规则表,从而要求每一个packet进过某个表从而实现对某些packet的过滤。系统中默认含有3张表,它们分别是:filter、nat、mangle

1. filter,默认表,不能修改packet的内容,只能过滤packet。filter表中设置的规则仅能在NF_IP_LOCAL_IN,NF_IP_FORWARD和NF_IP_LOCAL_OUT钩子点上注册监听器。其中对于NF_IP_FORWARD钩子,netfilter还提供INPUT和OUTPUT两种接口。

2. nat, 在‘nat’领域使用,在修改源和目的地址时使用。对于非本地packet,NF_IP_PRE_ROUTING和NF_IP_POST_ROUTING钩子可以使用来修改packet的源和目的地址。如果定义了CONFIG_IP_NF_NAT_LOCAL,可是使用NF_IP_PRE_ROUTING和NF_IP_POST_ROUTING钩子修改本地packet的源和目的地址。

3. mangle, 在修改packet信息时使用。mangle表支持所有的5类钩子。

对于一个packet,程序用能够编写钩子函数的地方及处理的顺序如下图所示:

转载地址:http://tnhvi.baihongyu.com/

你可能感兴趣的文章
为什么有时ping不通www.baidu.com但可以访问www.baidu.com网页?
查看>>
从telnet www.baidu.com 80 聊聊我经历过的tcp“三次握手”失败---顺便验证telnet是基于tcp协议的
查看>>
C++智能指针auto_ptr源码完全解析---以微软auto_ptr为例来探讨auto_ptr的用法
查看>>
我修改的问题单居然回归不通过?---趣闻二则
查看>>
模拟linux的shell---顺便复习一下fork,execlp和waitpid函数
查看>>
如何获取linux shell中ls进程的进程号?---有趣的问题!
查看>>
利用thread来简要模拟signal函数功能
查看>>
linux shell “永久环境变量”、“临时环境变量”和“普通变量“之完全解读
查看>>
AlphaGo 4:1 李世石
查看>>
修改svn中的文件名
查看>>
svn diff | grep work看修改的文件
查看>>
txt中的内容复制到excel中无法对齐, 该怎么处理?
查看>>
网络传输的本质(buffer传输)决定了序列化和反序列化的重要应用
查看>>
ldd -r xxx.so命令的重要作用------见招拆招地解决缺库问题(undefined symbol)
查看>>
再来聊聊linux中的nm命令(nm与ldd命令实战)
查看>>
大白话解释互联网后台为什么常用异步server?
查看>>
确定性这剂毒药,你喝过没?
查看>>
GNU makefile英文官方介绍------干货
查看>>
makefile指定头文件和库出错的那点破事
查看>>
C/C++为什么要短路求值?
查看>>