免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3826 | 回复: 9
打印 上一主题 下一主题

(原创)linux下简单nat及带宽控制实现 附路由设计文档 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-29 09:11 |只看该作者 |倒序浏览
来到论坛没多久但学到不少东西,受到很多人帮助,现在把前些阵子写的算是草稿的 nat和带宽控制拿出来,供交流学习。

1.        mynat是个hash表操作的算法,实现很简单,耐心看会看懂的,因为是在vc中写的这块,所以你们看到vc工程文件,后来加到netflter中时 把main函数用#ifdef给注销了。

2.        makefile用的是arm-linux-gcc ,这个你们可以改成pc下的gcc,  或者直接
gcc -I/usr/src/linux/include -c netflter.c

3.         mytbf.h是个简单的流量控制模块,实现也是很简单。

4.        时间关系,程序中我并没有写链接的回收(hash表的回收)。

5.        由于程序是在特定的环境下写的,所以很多东西都写死了,只是便于测试,学习的朋友测试是需要修改netfilter 中的已经测试过tcp和udp通信,ping也是可以支持的 ,但是ftp等特殊的协议还是没加。

6.        由于工作和时间关系,程序只是处于草稿状态,当看到不当之处不要奇怪,可能只是我打的草稿,最后希望可以可以和大家共同交流进步,支持开源。

[ 本帖最后由 tent8 于 2007-9-29 09:14 编辑 ]

linux下简单nat及带宽控制实现.rar

59.89 KB, 下载次数: 303

论坛徽章:
0
2 [报告]
发表于 2007-09-29 10:36 |只看该作者
及时雨啊,太感谢楼主了,先细读......

论坛徽章:
0
3 [报告]
发表于 2007-09-29 15:24 |只看该作者
没人  只能自己顶了    !!!!!!!!!!!!!

论坛徽章:
0
4 [报告]
发表于 2007-09-29 16:29 |只看该作者
楼主,使用skb_copy()复至一份skb2后,是不是只能通过dev_queue_xmit(skb2)来发送?还有没有其它简单点方式,这个好像还需构造MAC.
                                 if(!(ret=dev_queue_xmit(skb2)))
                         printk(KERN_INFO"sucess in dev_queue_xmit ret:%d",ret);

论坛徽章:
0
5 [报告]
发表于 2007-09-29 16:44 |只看该作者
构造mac是因为  我写的是nat 你那个ip跳转的  直接用dev_queue_xmit(skb2)发送就行了

这部就直接把包通过网卡发送出去 ,他调用的就是网卡驱动中的 hard_xmit_**()函数了。
这个函数很简单了。你是想把包继续交给上层协议吗 ?

[ 本帖最后由 tent8 于 2007-9-29 16:52 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-09-29 17:54 |只看该作者
对,我通过NF_IP_PRE_ROUTING  hook接到数据后,会对来源IP进行修改,再传给上层应用......这样怎么将skb_copy后的skb2继续上传呢????

论坛徽章:
0
7 [报告]
发表于 2007-09-30 08:34 |只看该作者
这个问题 不错  我回去找找资料  
过一时给你答复。

论坛徽章:
0
8 [报告]
发表于 2010-01-06 17:16 |只看该作者
好东西 非常 感谢~

论坛徽章:
2
巨蟹座
日期:2014-03-09 21:37:25射手座
日期:2014-04-16 16:23:03
9 [报告]
发表于 2010-01-11 23:36 |只看该作者
这个。。。。

论坛徽章:
0
10 [报告]
发表于 2010-04-21 09:41 |只看该作者
。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP