Dummynet简单部署

天翼云开发者社区
• 阅读 389

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

部署流程 ^准备内核版本 ^参看系统内核版本 uname -r 我们需要将ipfw编译成内核模块,请确保ipfw用到的内核源码版本同你linux系统运行内核版本一致。 ^编译dummynet https://github.com/FS1360472174/dummynet.git 下载包 ^上传解压 Dummynet简单部署 ^进入操作目录 cd dummynet-master Dummynet简单部署 ^编译 make KERNELPATH=/usr/src/kernels/3.10.0-957.el7.x86_64/

Dummynet简单部署 ^加载ipfw 模块 cd kipfw-mod insmod ipfw_mod.ko Dummynet简单部署 cd ../ipfw cp ipfw /sbin chmod 700 /sbin/ipfw Dummynet简单部署 ^验证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 );

点赞
收藏
评论区
推荐文章
常用内核架构
本文分享自天翼云开发者社区《》,作者:JackW宏内核应用程序调用内存分配的API(应用程序接口)函数。处理器切换到特权模式,开始运行内核代码。内核里的内存管理代码按照特定的算法,分配一块内存。把分配的内存块的首地址,返回给内存分配的API函数。内存分配的
Stella981 Stella981
3年前
Linux CentOS使用yum安装Docker
Docker支持以下的CentOS版本:目前,CentOS仅发行版本中的内核支持Docker.Docker运行在CentOS7上,要求系统为64位、系统内核版本为3.10以上.Docker运行在CentOS6.5或更高的版本的CentOS上,要求系统为64位、系统内核版本为2.6.32431或者更高版本.Docker要求CentOS系统的内核
Wesley13 Wesley13
3年前
02_Docker在CentOS 6和CentOS 7下的安装
CentOS7环境下安装docker安装Docker1.检查系统内核是否高于Linux3.10版本unamer1.使用root权限操作,确保yum包是最新版本sudoyumupdate1.卸载老版本docker(可选
Stella981 Stella981
3年前
CentOS Linux 升级内核步骤和方法
CentOSLinux升级内核步骤和方法1、查看当前系统内核\unamer2.6.3271.e16.i6862、下载linux3.2.14内核包\tarxvflinux3.2.14.tar.bz2\cdlinux3.2.143、配置内核并安装makemr
Stella981 Stella981
3年前
Liunx版本号码编排惯例
1、内核版本号不代表操作系统整体版本;Linux的内核,以及每一个应用程序、元件、库或者是发行版中的软件包都有自身的版本号。例如你使用的gcc版本号码是2.7.2.3,内核可能是2.2。在安装某个发行版时,所有这些过程得到了简化,因为发行版中包括的每一个软件包都是最新的,例如:RedHat、easyLinux。2、稳定版和开发版任何时候内核都以两
Wesley13 Wesley13
3年前
20179311《网络攻防实践》第七周作业
1.Windows操作系统的基本结构分为运行于处理器特权模式的操作系统内核,以及运行在处理器非特权模式的用户空间代码。采用宏内核模式来进行构架,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据,这种宏内核机制也使得Windows操作系统容易遭受以驱动方式植入内核的Rootkit的危害,为了避免这类攻击,最
Stella981 Stella981
3年前
CentOS下使用yum安装Git具体步骤
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git是用于Linux内核开发的版本控制工具。与常用的CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布
杨祚 杨祚
1年前
1.系统架构命令
1.内核版本cat/proc/versionunameaunamer2.linux版本信息lsbreleaseacat/etc/issue3.linux是64还是32getconfLONGBITfile/bin/ls4.直接查看系统架构dpkgprinta
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
722
粉丝
15
获赞
40