本文分享自天翼云开发者社区《Dummynet简单部署》,作者:凸凹

部署流程

^准备内核版本

^参看系统内核版本

uname -r

我们需要将ipfw编译成内核模块,请确保ipfw用到的内核源码版本同你linux系统运行内核版本一致。

^编译dummynet

https://github.com/FS1360472174/dummynet.git 下载包

^上传解压

^进入操作目录

cd dummynet-master

^编译

make KERNELPATH=/usr/src/kernels/3.10.0-957.el7.x86_64/

^加载ipfw 模块

cd kipfw-mod

insmod ipfw_mod.ko

cd ../ipfw

cp ipfw /sbin

chmod 700 /sbin/ipfw

^验证ipfw

ipfw add pipe 2 in proto tcp

可选择地,将ipfw 设置为boot启动

cp /root/dummynet-master/kipfw-mod/ipfw_mod.ko /lib/modules/3.10.0-957.el7.x86_64/kernel/net/netfilter

depmod

sh -c 'echo modprobe ipfw_mod >> /etc/rc.modules'

chmod +x /etc/rc.modules

^附录

问题分析

1.insmod: ERROR: could not insert module ipfw_mod.ko: Invalid module format

解决:

modinfo ipfw_mod.ko 看下vermagic版本是不是uname -r的版本。

然后重新编译ipfw 模块

make KERNELPATH=/usr/src/kernels/3.10.0-957.el7.x86_64

2.ipfw: getsockopt(IP_FW_ADD): Protocol not available

解决:

ipfw 模块未加载到内核

可以lsmod |grep ipfw看下

需要重述上述步骤,将ipfw编译进内核模块

3.编译模块时报错

类似于ipfw2_mod.c line 848 nf_hook_ops.hk struct have errors.

解决:

Hook structure 在各个版本的linux中定义不一样,所以如果是从dummynet 站点中下载的

老的dummynet 包可能就有错误。

查看下当前所用系统的hook 结构

/usr/src/kernels/linux-3.10.0-957.el7/include/linux/netfilter.h

定义了nf_hook_ops,nf_hookfn的结构

struct nf_hook_ops {

struct list_head list;

/* User fills in from here down. */

nf_hookfn       *hook;

struct module   *owner;

void            *priv;

u_int8_t        pf;

unsigned int    hooknum;

/* Hooks are ordered in ascending priority. */

int             priority;

/* Reserved for use in the future RHEL versions. Set to zero. */

unsigned long   __rht_reserved1;

unsigned long   __rht_reserved2;

unsigned long   __rht_reserved3;

unsigned long   __rht_reserved4;

unsigned long   __rht_reserved5;

};

typedef unsigned int nf_hookfn(const struct nf_hook_ops *ops,

struct sk_buff *skb,

const struct net_device *in,

const struct net_device *out,

#ifndef __GENKSYMS__

const struct nf_hook_state *state

#else

int (*okfn)(struct sk_buff *)

#endif

);

Dummynet简单部署的更多相关文章

  1. XenApp简单部署

    作者:MR.Yangwj 目录 XenApp简单部署... 1 一.         XenApp安装... 1 (一)      服务器配置任务... 9 1)     许可证服务器配置... 9 ...

  2. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  3. Glue4Net简单部署基于win服务的Socket程序

    smark 专注于高并发网络和大型网站架规划设计,提供.NET平台下高吞吐的网络通讯应用技术咨询和支持 Glue4Net简单部署基于win服务的Socket程序 在写一些服务应用的时候经常把要它部署到 ...

  4. SQL Server中的变更捕获技术--简单部署

    ------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...

  5. Tomcat_记一次tomcatwar包应用简单部署过程

    记一次tomcat war包应用简单部署过程 by:授客 QQ:1033553122 1.  实践环境 Linux apache-tomcat-7.0.73 2.  实践步骤 # 解压tomcat压缩 ...

  6. Ceph分布式存储-原理介绍及简单部署

    1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...

  7. WebStorm 简单部署服务器进行测试操作

    WebStorm 简单部署服务器对外发布接口 第一步: 查看webstorm防火墙是否允许链接,控制面板-->防火墙-->高级设置 入站规则-->webstrom是否允许链接 ,双击 ...

  8. nginx之旅:安装及简单部署

    安装之前最好了解一下nginx,参考nginx百度百科吧,下面这一句话基本概括了nginx的基本功能 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理  ...

  9. jenkins安装和简单部署

    jenkins安装和简单部署 jenkins历史 jenkins是一款非常好用的团队CI(Continuous Integration)工具.它可以使你的构建,集成,发布,开发流程自动化.减轻各个环节 ...

  10. Hexo博客搭建和简单部署

    title: Hexo博客搭建和简单部署 date: 2020-03-02 12:00:00 categories: - [IT,博客] - [IT,软件,程序] - [IT,软件,搭建与配置] ta ...

随机推荐

  1. 《Django 5 By Example》阅读笔记:p237-p338

    <Django 5 By Example>学习第11天,p237-p338总结,总计102页. 一.技术总结 1.follow system(关注功能) 表之间的关系有三种:OneToOn ...

  2. laravel之验证器

    开发中使用框架自带验证器进行参数验证 1.定义验证器基类,定义失败返回值 新建基础类文件 app > Http > Requests > BaseRequest.php <?p ...

  3. vue使用高德地图初始化坑

    使用的时候有时候会报除Amap没有定义之外的错如 TypeError: v.w.uh is not a constructor Uncaught TypeError: Cannot read prop ...

  4. 1.猿人学web爬虫攻防第一题 js混淆源码乱码

    题目链接:http://match.yuanrenxue.com/match/1 1.首先我们打开F12开发者工具,点击..... 我们可以看到在请求中有m的加密参数! 2.根据题目js混淆,我们寻找 ...

  5. 【项目学习】Morpho 借贷协议简单调研

    项目背景 Morpho blue (下称 Morpho)是一个超额抵押借贷协议.与传统的借贷协议不同,Morpho 无需经过治理批准即可创建任意定制化的借贷市场.用户可以通过指定一项贷款资产.一项抵押 ...

  6. HTMLDivElement.prototype

    HTMLDivElement.prototype.test = function(){console.log("i am div")} $0.innerHTML = '<di ...

  7. 【MyBatis】学习笔记13:延迟加载(懒加载)

    目录 Mybatis13:延迟加载(懒加载) 测试 测试1 测试2 部分特殊情况处理 Mybatis13:延迟加载(懒加载) 延迟加载是分步查询的好处,默认是不开启延迟加载的,要开启需要在核心配置文件 ...

  8. 使用OpenSSL创建生成CA证书、服务器、客户端证书及密钥

    说明: 对于SSL单向认证:服务器需要CA证书.server证书.server私钥,客户端需要CA证. 对于SSL双向认证:服务器需要CA证书.server证书.server私钥,客户端需要CA证书, ...

  9. Qt编写物联网管理平台30-用户登录退出

    一.前言 一个用户登录界面,是一个完整的应用系统,尤其是客户端系统必备的一个功能模块,传统的登录处理一般都是和本地的用户信息进行比对,而现代的登录系统一般是发送请求到服务器进行验证,无论何种方式,都是 ...

  10. 大型IM稳定性监测实践:手Q客户端性能防劣化系统的建设之路

    本文来自腾讯手Q基础架构团队杨萧玉.邱少雄.张自蹊.王褚重天.姚伟斌的分享,原题"QQ 客户端性能稳定性防劣化系统 Hodor 技术方案",下文进行了排版和内容优化. 1.引言 接 ...