redhat7 上安装dummynet
更多请访问 http://www.webpersonaldeveloper.cn
摘要:
在redhat 上部署dummynet 需要将ipfw 编译为内核模块,而ipfw需要调用linux kernel的一些函数。
linux kernel版本在不断提升,相关的数据结构也在变化。所以可能需要根据你要部署的系统内核版本,来调整参数
提醒
如果你要部署在Redhat6,CentOS6等内核版本比较低的平台,不必参考下面的部署流程。
这篇文章就可以满足的你要求
http://xmodulo.com/how-to-install-dummynet-on-centos.html
2016-08-18 update
不需要下载和系统同一版本的内核,因为并不是真正的编译内核。netfilter 默认就在内核中启动。
所以只用下面即可,可以跳过准备内核版本这步骤
yum install kernel-devel
yum group install "Development Tools
如果遇到问题,再返回这篇进一步学习
dummynet简介
dummynet 是linux下面(现在也可以部署在window下)一款开源的网络带宽控制工具,
在网站上线前,可能需要测试带宽对站点的影响。而dummynet就是为此而生。
部署流程
准备内核版本
参看系统内核版本
uname -r
我们需要将IPFW编译成内核模块,请确保
IPFW用到的内核源码版本同你LINUX系统运行内核版本一致。
我的linux系统版本redhat7.2,内核版本3.10.0-327.13.1.el7.x86_64
- 下载此版本的内核源码包
kernel-3.10.0-327.13.1.el7.src.rpm
http://vault.centos.org/7.2.1511/updates/Source/SPackages/
使用wget或者直接下载放在/usr/src/kernels 目录
解压源码包
`
rpm2cpio kernel-3.10.0-327.13.1.el7.src.rpm |cpio -div
tar xvf linux-3.10.0-327.13.1.el7.tar.xz
cd 3.10.0-327.13.1.el7.x86_64
make oldconfig
make prepare
make scripts
`
编译dummynet
git clone https://github.com/FS1360472174/dummynet.git
cd dummynet
make KERNELPATH=/usr/src/kernels/3.10.0-327.13.1.el7.x86_64
加载ipfw 模块
cd kipfw-mod
insmod ipfw_mod.ko
cd dummy/ipfw
cp ipfw /sbin
chmod 700 /sbin/ipfw
验证ipfw
ipfw add pipe 2 in proto tcp
optional,将ipfw 设置为boot启动
cp ipfw_mod.ko /lib/modules/3.10.0-327.13.1.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 clean
make KERNELPATH=/usr/src/kernels/3.10.0-327.13.1.el7.x86_64
如果仍然不行在/usr/src/kernels/$source 执行make,然后reboot
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 erors.
解决:
Hook structure 在各个版本的linux中定义不一样,所以如果是从dummynet 站点中下载的
老的dummynet 包或者从这个download下来的包可能就有错误。
https://github.com/luigirizzo/dummynet
建议你查看下当前所用系统的hook 结构
/usr/src/kernels/linux-3.10.0-327.4.5.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
);
参考:
http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-327.4.5.el7.src.rpm
https://www.rpmfind.net/linux/RPM/centos/updates/7.2.1511/x86_64/Packages/kernel-3.10.0-327.13.1.el7.x86_64.html
http://xmodulo.com/how-to-install-dummynet-on-centos.html
https://access.redhat.com/articles/3078
redhat7 上安装dummynet的更多相关文章
- RedHat7上安装MySQL5.7.16
1.查看系统中是否已将安装MySQL,如果安装了,需要卸载. [root@chenguo etc]# rpm -qa|grep -i mysql 2.创建用户和组 [root@chenguo ~]# ...
- RedHat7上安装MariaDB
编译安装MariaDB 下载MariaDB# wget http://mirrors.opencas.cn/mariadb//mariadb-10.1.8/source/mariadb-10.1.8. ...
- RedHat7上安装PHP
编译安装PHP 下载PHP# wget http://cn2.php.net/distributions/php-7.0.0.tar.gz 解压缩PHP# tar -zxvf php-7.0.0.ta ...
- 在虚拟机VMware上安装Linux系统教程
目录: 一. CentOS的安装 二. RedHat的安装 三. VMwaretools的安装 此处提供CentOS和RedHat两个版本的系统安装流程,至于选哪个 ...
- [转帖]redhat7.6Linux安装Oracle19C完整版教程
redhat7.6Linux安装Oracle19C完整版教程 https://www.oracle.com/technetwork/database/enterprise-edition/downlo ...
- RedHat7.4安装在个人电脑(笔记本)中安装遇到的问题总结
RedHat7.4安装在个人电脑(笔记本)中安装 以下纯属个人在安装过程中遇到问题的一些总结,如果有描述不恰当的地方,还请给予指出,欢迎大家评论和交流. 物理主机的配置: 硬件配置: 华硕A456U笔 ...
- 在centos7上安装Jenkins
在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...
- 记录在Windows上安装和使用Oracle数据库过程中的坑
1.安装Oracle Oracle软件是免费的,可以去官网下载相应的安装包.但是如果用于商业用途需要购买License.官网上针对各种平台,32位和64位都有,如果在Windows一般会下载到两个文件 ...
- raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序
参考网址: http://www.linuxdot.net/ http://www.cnblogs.com/mayswind/p/3279380.html http://www.raspberrypi ...
随机推荐
- 使用Nwjs开发桌面应用体验
之前一直用.net开发桌面应用,最近由于公司需要转为nodejs,但也是一直用nodejs开发后台应用,网站,接口等.近期,需要开发一个客户端,想着既然nodejs号称全栈,就试一下开发桌面应用到底行 ...
- [NOIp 2014]解方程
Description 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) Input 输入文件名为equation .i ...
- 区间(interval)
[问题描述]给定 N 个区间, 要求选出若干个区间 A1, A2, A3... Am (m > 1), 使得:|A1∩A2∩A3...∩Am| * |A1∪A2∪A3...∪Am|最大.[输入格 ...
- POJ 1486二分图的必要边
题意:有n个大小不等透明的幻灯片(只有轮廓和上面的数字可见)A.B.C.D.E…按顺序叠放在一起,现在知道每个幻灯片大小,由于幻灯片是透明的,所以能看到幻灯片上的数字(给出了每个数字的坐标,但不知道这 ...
- 【USACO Feb 2014】Cow Decathlon
题目描述 约翰有 N 头奶牛,组成了一直队伍参加全能比赛.比赛一共有 N 项,每头奶牛必须参加一项比 赛,每项比赛也必须有一头奶牛参加.任何一头奶牛可以胜任任何一项比赛,但得分不一样.如果第 i 头奶 ...
- bzoj 4006: [JLOI2015]管道连接
Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 ...
- 使用JAXB解析xml文件(二)
前面一章简单演示了JAXB的用法,这个章节主要梳理一下JAXB常见的几个注解 1.@XmlRootElement 用于类级别的注解,对应xml的跟元素,常与 @XmlType 和 @XmlAccess ...
- 常用Markdown语法
个人常用的Markdown语法 前言 初次使用Markdown编辑器,将自己最常用的几个语法记录一下,如有错误或是更方便的使用方式还请指出. 多级标题 一个"#"到六个" ...
- SSM框架原理,作用及使用方法(非原创)
原帖:地址https://blog.csdn.net/bieleyang/article/details/77862042 如有侵权请联系删除 作用: SSM框架是spring MVC ,spring ...
- Python小代码_10_判断是否为素数
import math n = int(input('Input an integer:')) m = int(math.sqrt(n) + 1) for i in range(2, m): if n ...