分类 Linux 下的文章

linux子系统的初始化_subsys_initcall()

内核选项的解析完成之后,各个子系统的初始化即进入第二部分—入口函数的调用。通常USB、PCI这样的子系统都会有一个名为subsys_initcall的入口,如果你选择它们作为研究内核的切入点,那么就请首先找到它。
朱德庸在《关于上班这件事》里说,要花前半生找入口,花后半生找出口。可见寻找入口对于咱们这一生,对于看内核代码这件事儿都是无比重要的。
但是很多时候,入口并不仅仅只有subsys_initcall一个,比如PCI。

以下代码来自 linux内核源码中 include/linux/init.h 文件

- 阅读剩余部分 -

Iptables的基本语法

理论
iptables 是一个防火墙规则配置程序,可以对封包就行过滤、封包处理、封包状态变更、NAT、封包 OoS 等。这些工作其实是核心(kernel)级别的 Netfilter 在处理,而 iptables 只是一个用户级的配置工具,可以更方便的对 netfilter 操作。

- 阅读剩余部分 -

在netfilter&iptables上开发自己的hook函数(二)

从用户空间来操作内核中Netfilter框架里自定义的HOOK函数
本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道iptables不能操作到么?如果我们需要让iptables操作我们在Netfilter框架中做过的扩展,那么最有效最直接的办法就是开发一个match或者target。但我们现在注册的这个hook很明显和iptables命令行工具没多大关系,你要让iptables来管理这不是强人所难么。当然如果你一要这么干的话,办法肯定是有的,但者不属于本文所要讨论的范畴。

- 阅读剩余部分 -

在netfilter&iptables上开发自己的hook函数(一)

向Netfilter中注册自己的hook函数
数据包在协议栈中传递时会经过不同的HOOK点,而每个HOOK点上又被Netfilter预先注册了一系列hook回调函数,当每个清纯的数据包到达这些点后会被这些可恶hook函数轮番调戏一番。有时候我们就在想,只让系统自带的这些恶棍来快活,我自己能不能也make一个hook出来和它们同流合污呢?答案是肯定的。
我们来回顾一下目前系统中已经注册了的hook函数可分为以下几类:

- 阅读剩余部分 -

linux中netfilter的5个hook

netfilter是一种内核中用于扩展各种网络服务的结构化底层框架。netfilter的设计思想是生成一个模块结构使之能够比较容易的扩展。新的特性加入到内核中并不需要从新启动内核。这样,可以通过简单的构造一个内核模块来实现网络新特性的扩展。给底层的网络特性扩展带来了极大的便利,使更多从事网络底层研发的开发人员能够集中精力实现新的网络特性。
Netfilter有4大特性:
1. 每一个协议定义"hooks"(钩子),IPv4定义了5个钩子,他们遍布协议栈中包传输的整个过程。在每一个点上,协议将使用包和钩子号来调用netfilter框架。

- 阅读剩余部分 -