打算写一个在netfilter中的helper, 但有两个难点不知如何实现?

主要的应用是这样的: 内网LAN侧的host PC1与外网WAN侧的host PC2连接, PC1将会以6112这个端口作为源端口去连接PC2的6112端口(或者一个随机的高端端口)进行某些数据通信,但有时候由于应用所需,PC2会新建立一条连接使用6112端口(或者一个随机的高端端口)来连接PC1的6112端口。该连接在到达路由器时被防火墙挡掉了,无法把包传递给PC1. 所以,我需要写一个类似于ALG的东西来完成这个事情,让PC2新建立的连接在到达路由器时能转给PC1.

考虑了之后我觉得,要在netfilter中实现该helper必须解决两个问题:问题一,如何查询连接跟踪表,从而获得PC1的IP地址? 问题二:当PC2的新连接包到来时,如何在netfilter中实现端口转发?
还请哪位能给予指点,我如何实现这个helper?特别是如何解决这两个问题? 非常感谢!

作者: firvalor   发布时间: 2011-03-01

忘记说了,我的内核版本是2.6.21.7.

作者: firvalor   发布时间: 2011-03-01



QUOTE:
。该连接在到达路由器时被防火墙挡掉了,无法把包传递给PC1.


建议先检查一下防火墙的配置,为什么要这样处理

作者: Godbach   发布时间: 2011-03-01

因为路由器不会允许新的连接从WAN侧到LAN侧的。这个是路由器最基本的防火墙功能。也就是WAN侧的主机是不能随便访问LAN侧主机的。

作者: firvalor   发布时间: 2011-03-01

回复 firvalor
你所谓的路由器,是不是就是值得防火墙啊

作者: Godbach   发布时间: 2011-03-01

没有呀,就是Router呀,里面带了基本的防火墙功能、nat等。

作者: firvalor   发布时间: 2011-03-01

那你是觉得要去修改 Router 中的防火墙实现了,对吗

作者: Godbach   发布时间: 2011-03-01