使用netfilter_queue修改数据包以及需要的环境搭建
环境:ubuntu 16.04 64bit LTS
下面的内容只是一些安装测试的步骤和方法的记录,并没有什么实质性和原理的说明,主要为作者本人记录的远程笔记,如果有幸对您也有帮助,请您顺手顶一下,如果您觉得您是在看不下去,也请不要喷我,毕竟学习不易,小白辛苦的学习还是需要鼓励的,先谢谢您呐!(滑稽狗头.jpg)
在项目中需要使用netfilter_queue修改数据包,然后习惯性的先找了度娘,看到了大神的博文 这是传送门
但是奈何对这块的知识一点都不知道,环境也没有配置好,只能一点一点摸索,下面就当是自己的步骤做一个简单的记录。
个人习惯:习惯于将手动下载的,手动安装的程序放置在/opt下,所以操作都是在普通用户下使用sudo命令。
libnetfilter_queue主要依赖于libmnl,libnfnetlink以及一些其他的工具等,先进行依赖文件的安装。
一、安装libmnl
二、安装 libnfnetlink
三、安装libnetfilter_queue
四、测试
安装完成之后,进入到example目录,里面包含了一个测试文件,使用gcc编译并执行,因为例子中使用了libmnl的功能,所以编译需要连接libmnl。
在测试之前需要将数据包入到队列中(本人测试中直接将所有的数据都入到队列8008中)
五、自己根据需要编写测试例程
测试例程功能简单说明:客户端和服务端通过socket-tcp进行通讯,客户端只负责发送数据,服务端负责接收数据并显示,服务端通过iptables增加数据抓包并且修改其中的数据。
服务端iptables规则设置:
1、将所有输入的协议为tcp、目标端口为9999的数据入到队列号为80的队列
然后运行编译好的程序(代码后附)
客户端发送的数据
数据抓取成功并且更改成为其他的数据,然后发送到用户空间。
服务端运行成功并且接收到数据。
下面是nfqueue的主要实现的代码: