阅读:1918回复:6
新手求助。希望大家帮我。NAT 方面
我在Passthru代码基础上编写实现NAT一些功能。目前可以实现了基本的转发功能了。
求助问题第一点: 在 NAPT 中,内网像网关发送链接到外网的请求。网关收到请求 原IP 为 192.168.0.2 源端口 为 3000 目标IP 为 121.14.88.14 当网关像 把这个请求转发给外网后,收到外网回复 网关 需要在转发给 原始请求的 内网。。根据什么条件知道要转发给哪个内网IP呢?按NAPT 的 算法 是在网关像 外网转发时,把原端口 修改为 网关的一个空闲端口。。。 我现在实现的是,网关像 外网转发时,把原端口 修改为 一个虚拟的端口号 (Port++) 虚拟端口 并不是网关真实开放的端口,只是在驱动中 利用计数器 累加出来的 目前使用这样的虚拟端口,是可以成功转发给外 和 内的。。。但是我不知道这样 有没有什么应用。。希望有经验的帮助解答一下。。 求助问题第二点: 一般网关都是有两块网卡,一个对内,一个对外,但是我安装驱动后,两个网卡都被安装了我的驱动,。 从理论上我理解是这样的,内网卡驱动收到 内网请求,之后内网卡驱动 把这个请求 转发给 外网卡。 外网卡收到数据请求,在转发给内网中// 按上面这样的思路,那么我想问的是,在一个网卡驱动中,如何把这个数据NDISSEND 给其他网卡? 还有如何得到当前驱动网卡的 的信息? 求助问题第三点:我现在在驱动的 两个接收函数中, 接收代码最开始 DBGPRINT 了 一下,为了识别 我的驱动运行了。。 驱动在正常进行 转发工作,过一会 DebugView 中就不在输出任何信息了?通过一些证明,我的驱动好像 不在运行了,但是 也没任何提示 。。。郁闷。。。。 |
|
沙发#
发布于:2009-12-23 09:58
我现在在驱动的 两个接收函数中, 接收代码最开始 DBGPRINT 了 一下,为了识别 我的驱动运行了。。
驱动在正常进行 转发工作,过一会 DebugView 中就不在输出任何信息了?通过一些证明,我的驱动好像 不在运行了,但是 也没任何提示 。。。郁闷。。。。 |
|
板凳#
发布于:2009-12-23 13:25
感到有点奇怪啊。先不管NAT方面的东西,如果你要实现类似功能的驱动,你应该写个NDIS protocol driver而不是intermediate driver。
|
|
地板#
发布于:2009-12-24 23:38
我也是因为想学NAPT以及流量控制才进来这里的,请大家多多指教!
|
|
地下室#
发布于:2009-12-25 01:29
|
|
5楼#
发布于:2009-12-25 22:50
期待源码啊大哥!
|
|
6楼#
发布于:2009-12-26 23:07
不好意思,我不想传到论坛了,留下你的E-MAIL
|
|