Dummynet简单部署
本文分享自天翼云开发者社区《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简单部署的更多相关文章
- XenApp简单部署
作者:MR.Yangwj 目录 XenApp简单部署... 1 一. XenApp安装... 1 (一) 服务器配置任务... 9 1) 许可证服务器配置... 9 ...
- mongodb 简单部署方案及实例
mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6 ...
- Glue4Net简单部署基于win服务的Socket程序
smark 专注于高并发网络和大型网站架规划设计,提供.NET平台下高吞吐的网络通讯应用技术咨询和支持 Glue4Net简单部署基于win服务的Socket程序 在写一些服务应用的时候经常把要它部署到 ...
- SQL Server中的变更捕获技术--简单部署
------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...
- Tomcat_记一次tomcatwar包应用简单部署过程
记一次tomcat war包应用简单部署过程 by:授客 QQ:1033553122 1. 实践环境 Linux apache-tomcat-7.0.73 2. 实践步骤 # 解压tomcat压缩 ...
- Ceph分布式存储-原理介绍及简单部署
1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...
- WebStorm 简单部署服务器进行测试操作
WebStorm 简单部署服务器对外发布接口 第一步: 查看webstorm防火墙是否允许链接,控制面板-->防火墙-->高级设置 入站规则-->webstrom是否允许链接 ,双击 ...
- nginx之旅:安装及简单部署
安装之前最好了解一下nginx,参考nginx百度百科吧,下面这一句话基本概括了nginx的基本功能 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 ...
- jenkins安装和简单部署
jenkins安装和简单部署 jenkins历史 jenkins是一款非常好用的团队CI(Continuous Integration)工具.它可以使你的构建,集成,发布,开发流程自动化.减轻各个环节 ...
- Hexo博客搭建和简单部署
title: Hexo博客搭建和简单部署 date: 2020-03-02 12:00:00 categories: - [IT,博客] - [IT,软件,程序] - [IT,软件,搭建与配置] ta ...
随机推荐
- Blazor 组件库 BootstrapBlazor 中Alert组件介绍
组件介绍 Alert组件几乎是组件库里必不可少的组件了,即使浏览器,也自带了一个alert,会弹出一个模态框. 但是这个模态框有点太丑了,所以各大组件库分分实现了自己的Alert组件. 当然Boots ...
- 设计模式【3.2】-- JDK动态代理源码分析有多香?
前面文章有说到代理模式:http://aphysia.cn/archives/dynamicagentdesignpattern 那么回顾一下,代理模式怎么来的?假设有个需求: 在系统中所有的 con ...
- C#中 自定义验证规则ValidationAttribute的使用
C#中 自定义验证规则ValidationAttribute的使用 迷恋自留地 进行接口请求的时候难免会对请求字段进行验证,验证对象的所有字段的值是否合乎要求,如进行非空检测,长度检测等等. Requ ...
- 攻防世界:Web习题之 get_post
攻防世界:Web习题之 get_post 题目内容 https://adworld.xctf.org.cn/challenges/list 题目首先需要我们用GET方式提交一个名为a,值为1的变量: ...
- 树莓派下,打包发布能在树莓派中运行的Qt5程序和其运行环境
目标:把Qt程序部署到新的树莓派中. 平台:树莓派 工作:把Qt程序和运行环境分别打包 一.程序打包过程如下,仅供参考: 1.新建文件夹A,把程序拷贝到文件夹中. 2.使用ldd获取依赖关系,并复制到 ...
- 鸿蒙UI开发快速入门 —— part09: 应用级状态管理LocalStorage & AppStorage
1.说在前面的话 前面几个章节中介绍的装饰器(@State.@Props.@Link.@Provide.@Consume.@Observed.@ObjectLink)仅能在页面内,即一个组件树上共享状 ...
- 【报错解决】使用代理后从Github中clone仓库报错
当电脑使用代理后,会造成Github的clone和push等功能无法正常使用 报错内容:Failed to connect to github.com port 443 after ***** ms: ...
- openEuler欧拉系统重置root密码
步骤: 系统启动时,出现如下页面,按e进入内核编辑模式 进入如下页面 按下光标后,找到linux开头这一行,修改ro为rw,并在行尾添加init=/bin/sh,修改后效果如下,在crtl+x保存后开 ...
- iOS录制屏幕
iOS 录制屏幕 RPScreenRecorder 通过 RPScreenRecorder来录制屏幕 定义一个 RPScreenRecorder private var recorder: RPScr ...
- 在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
本文主要分析了在 K8s 中创建一个 Pod 并申请 GPU 资源,最终该 Pod 时怎么能够使用 GPU 的,具体的实现原理,以及 device plugin.nvidia-container-to ...