1、下载所需软件包:

linux-2.6.25.tar.gz

iptables-1.4.1.tar.bz2

ipset-2.4.9.tar.bz2

netfilter-layer7-v2.21.tar.gz

iptables-1.4.1-imq.diff

linux-2.6.25-imq5.diff

2、拷贝这些文件到 /usr/src/ 目录下,并解压

tar 文件用

$tar -xvf xxx.tar解压

tar.gz文件用

$tar -zxvf xxx.tar.gz解压

如果有tar.bz2文件,用

$bunzip2 xxx.tar.bz2

把文件xxx.tar.bz2变成xxx.tar再用上面的命令解压

3、创建一个软连接

当前目录 /usr/src/

$ln -s linux-2.6.25 linux

4、设置环境变量

当前目录 /usr/src/

$export KERNEL_DIR=/usr/src/linux

$export IPTABLES_DIR=/usr/src/iptables-1.4.1

5、当前目录 /usr/src/

$cd linux

配置内核:

$make menuconfig

保存退出

可以取消一些选项,此处略。

6、进入目录/usr/src/ipset-2.4.9

依次输入:

$make KERNEL_DIR=/usr/src/linux binaries

$make KERNEL_DIR=/usr/src/linux binaries_install

$make KERNEL_DIR=/usr/src/linux patch_kernel

7、打layer7补丁

当前目录/usr/src/linux

输入:

$patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch

$make menuconfig

进入网络选项把layer7support选上(M),自己查一下:

Core Netfilter Configuration --->

IP: Netfilter Configuration —>

8.打IMQ补丁:

$patch -p1 < ../linux-2.6.25-imq5.diff

$make menuconfig

驱动模块

IMQ (intermediate queueing device) support (IMQ)

Location:

-> Device Drivers

-> Networking support

-> Network device support (NETDEVICES)

-> IMQ (intermediate queueing device) support (IMQ)

选择编译为模块后,有两个参数可以设置:

Number of IMQ devices (IMQ_NUM_DEVS):默认IMQ设备的数量

IMQ behavior (PRE/POSTROUTING):IMQ的处理方法在nat表的勾取位置

默认是BA,也就是:PREROUTING(Before NAT),POSTROUTING(After NAT),可根据实际情况选择。

网络模块配置:

IMQ target support (IP_NF_TARGET_IMQ)

Location:

-> Device Drivers

-> Networking support

-> Networking support (NET)

-> Networking options

-> Network packet filtering (replaces ipchains) (NETFILTER)

-> IP: Netfilter Configuration

另外,IPv6也是可选的:

9、编译内核

$make

$make modules

$make modules_install

$make install

内核编译结束。

10、安装ipset

进入ipset文件夹

$make

$make install

11、安装iptables-1.4.1并 为iptables增加IMQ支持

进入netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward文件夹

将libxt_layer7.c中的

#include 改为:

#include “/usr/src/linux/include/linux/netfilter/xt_layer7.h”

把这两个文件拷贝到iptables-1.4.2/extensions中去。

进入/usr/src/iptables-1.4.1

$patch –p1 < ../iptables-1.4.1-imq.diff

chmod +x extensions/.IMQ-test*

将libip6t_IMQ.c中的:

#include #include 改为:

#include “/usr/src/linux/include/linux/netfilter_ipv6/ip6_tables.h”

#include “/usr/src/linux/include/linux/netfilter_ipv6/ip6t_IMQ.h”

和libipt_IMQ.c中的

#include #include 改为:

#include “/usr/src/linux/include/linux/netfilter_ipv4/ip_tables.h”

#include “/usr/src/linux/include/linux/netfilter_ipv4/ipt_IMQ.h”

然后输入:

$./configure

$make

$make install

$reboot

12.加载IMQ模块

$modprobe imq

$lsmod #查看一下是否加载成功

# ifconfig imq0 up

# ifconfig imq1 up

阅读(1417) | 评论(0) | 转发(0) |

linux imq原理图,编译IMQ模块相关推荐

  1. 关于linux内核无法编译成模块的解决方法

    在做驱动时,往往想编译成模块,让后加载来使用,这样灵活性较高,无需重新编译内核. 然后在使用供应商提供的内核时,往往无法编译成内核.也就是说把宏设置为y,编译进内核没有问题,但是设置成m编译成模块却不 ...

  2. Linux下nginx编译安装,重新添加模块

    Linux下nginx编译安装,重新添加模块 前言:编译完成后的Nginx,当我们需要新的功能模块时,要怎么重新添加呢?可以按照下面的方法试试. 1.查看nginx版本以及编译安装模块 [root@# ...

  3. Linux学习-额外(单一)核心模块编译

    编译前注意事项 由于我们的核心原本就有提供很多的核心工具给硬件开发商来使用, 而硬件开发商也需要针对核心 所提供的功能来设计他们的驱动程序模块,因此, 我们如果想要自行使用硬件开发商所提供的模块 来进 ...

  4. linux 内核模块(驱动) 编译详解

    一.准备工作 准备工作如何做,这里就不详说了. a) 首先,你要有一台PC,装好了Linux. b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的).make.ncurse ...

  5. linux 内核 netfilter 网络过滤模块 (1)-框架

    1. netfilter框架 Netfilter 是Linux内核中进行数据包过滤.连接跟踪.地址转换等的主要实现框架.当我们希望过滤特定的数据包或者需要修改数据包的内容再发送出去,这些动作主要都在n ...

  6. Linux下Nginx编译安装过程详解

    Linux下Nginx编译安装过程详解 一.Nginx介绍 二.Nginx源码下载 1.打开Nginx官网 2.下载官网的源码包 三.Nginx源码安装 1.解压源码包 2.安装开发包组及环境 3.编 ...

  7. Android编译系统分析二:mm编译单个模块

    因为Android的编译系统不同于Linux Kernel的递归式的编译系统,它的编译系统是一种称之为independent的模式,每个模块基本独立(它有可能依赖其他模块),每个模块都可以单独编译,这 ...

  8. [driver]linux内核动态加载模块

    问题: 1. 把编译好的模块放到板子/lib/modules对应文件夹下,并且执行了depmod -a, 比如pl2303.ko, 那么下一次插入pl2303的串口线,是否可以识别,也就是自动加载pl ...

  9. 从四个问题透析Linux下C++编译链接

    摘要:编译&链接对C&C++程序员既熟悉又陌生,熟悉在于每份代码都要经历编译&链接过程,陌生在于大部分人并不会刻意关注编译&链接的原理.本文通过开发过程中碰到的四个典型 ...

最新文章

  1. 3dsmax biped 骨骼姿势 对称操作
  2. 软件工程(2019)第一次作业
  3. 什么是groupid和artifactId?
  4. matlab中的方波信号图片_电气信息类专业课程之matlab系统仿真 第十章 DBPSK调制解调器(9)...
  5. Win32ASM学习[3]:局部变量
  6. Python+OpenGL实现物体快速运动时的模糊效果
  7. 谈谈中兴捧月大赛决赛以及总结
  8. [CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)]飞行棋
  9. 六合彩:Linux基金会项目合体之后会更精彩吗?
  10. ajax上传文件formData
  11. Java常用实现八种排序算法与代码实现
  12. onlyoffice添加删除字体
  13. Centos 7 安装 TEMPO2
  14. 模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每月还款金额:总利息=贷款金额×利息。 每月还款金额=(贷款金额×总利息)÷ 贷款年限。
  15. 基于java的图书馆借阅管理系统设计(含源文件)
  16. 数据挖掘面试题(1)
  17. Mac OS X 键盘快捷键
  18. ffmpeg视频转动图gif和Webp
  19. Angr 从入门到放弃(一)
  20. 使用计算机如何清零,怎样清除电脑所有数据_如何清空电脑所有数据

热门文章

  1. 计算机辅助的开发方法,基于计算机辅助设计技术(TCAD)的工艺开发
  2. (Pwn)CTF工具 ROPgadget 的安装与使用介绍
  3. Python教程:多变量的灵活处理
  4. python 错误、调试、单元测试、文档测试
  5. 本月与上月对比数据叫什么_财务人事应会Excel数据对比Vlookup函数快速核定变动...
  6. linux 域名 都访问了 哪些路由,Ngnix管理域名路由
  7. Numpy中np.dot()与np.matmul()的区别(矩阵乘积、矩阵乘法、矩阵相乘)
  8. 什么是尾递归?测试python尾递归
  9. Excel 如何根据单元格中的值设立不同的颜色(或渐变)?(222)
  10. ERROR: cannot launch node of type [pointcloud_to_laserscan/pointcloud_to_laserscan]