阅读:2229回复:11
请教:linux下的passthru(80分已放)
我需要在linux下实现一个类似passthru功能的东东,但是我没有接触过linux,不过我看过Rtl8139 linux下的网卡驱动源代码。开发linux下passthru这样的东东应该从什么地方入口呢?怎么实现?
欢迎各位多提意见,5.27号放分。谢谢 [编辑 - 5/31/04 by nicklezhang] |
|
沙发#
发布于:2004-05-23 09:48
linux下也有ndis啊, 看来没有白学
|
|
板凳#
发布于:2004-05-25 16:37
我顶,谁能给点建议呢,我让我少走点弯路。过几天我就要朝这方面努力了
|
|
地板#
发布于:2004-05-26 10:47
在Linux 内核中有五条内置的规则链(input chain, forward chain, output chain。。。。还有。。。),分别对应接收检测,转发检测和发送检测(内置链不可删除),每一条chain 包含一系列过滤规则及链的缺省策略.利用各规则链可以对输入、转发、和输出的数据包进行过滤。这些叫钩子(hook)函数,此hook非彼hook比windows下的强大多了,直接在网路层,你可以利用钩子函数编写自己的程序,编译成内核模块,insmod加载。
|
|
|
地下室#
发布于:2004-05-27 10:28
你说的是不是那五个Filter hook:NF_IP_PRE_ROUTING, NF_IP_LOCAL_IN, NF_IP_FORWARD, NF_IP_LOCAL_OUT, NF_IP_POST_ROUTING,在这些里面只能判断数据包的去留或转发等等吧,我需要修改数据包,好像在这里不能实现。此hook比windows2000下的ip packet filter有什么强大之处我也没来得及关心过。
迟一点放分,问题解决方法征集中... |
|
5楼#
发布于:2004-05-29 16:32
在内核/net/中
你可以在ip_forwar.c中的forward函数来处理路由转发来的包,最好做成模块,随时安装到系统中。 在ipv4.c中有ip_rcv函数处理收到的包,有个*send*函数处理发出的包。 要注意这些操作是针对哪一块网卡的 |
|
|
6楼#
发布于:2004-05-31 16:09
ljjlovernet能否说详细点,我任务催的很急,所以我没时间自己查阅资料了,如果你能说明白点那就太好了:
1.ip_forward.c是不是已经被编译进内核,如果我修改该文件,然后再重新编译,那我的网络模块岂不是和别的linux的网络模块不一样了?linux的内核是可以自立任意修改再重新编译的么? 2.做成模块是不是就不需要每次调试时重新编译内核? 3.怎样做成模块? 等待你的回答,提前放分。 |
|
7楼#
发布于:2004-05-31 16:58
你可以在内核里注册函数接口,如果函数接口为NULL时就不做IPSEC处理,就不会和别人的不一样了。模块里要把ipsec处理的函数注册在接口上。
做成模块每次编译模块就可以了,内核只做一次修改就行了。以后只需要加载和卸载模块。 做模块就不好说了,需要找本内核编程的书看一下先。 |
|
8楼#
发布于:2004-05-31 17:00
我就是ljjlovernet,不好意思,别人的ID.
|
|
9楼#
发布于:2004-06-01 15:13
直接编译系统内核比较麻烦你可以以可加载内核模块的形式编译,编译命令为:
gcc -O -c -Wall |
|
|
10楼#
发布于:2004-06-04 13:44
linux下面修改数据还要自己分配一个skb_buf么?
|
|
|
11楼#
发布于:2004-06-05 10:25
不用吧,
|
|
|