有关单网卡ipchains使用数据转发的问题

有关单网卡ipchains使用数据转发的问题

前几日在自己的机器试用LINUX下的防火墙,突然觉得想试试数据转发,可始终不行,还请朋友帮忙。。。
网络驾构:
服务器:双网卡,专线介入,2K PRO+ICS,内网IP192.168.0.1
客户机A:单网卡,LINUX7.1,IP192.168.0.23
客户机B: 单网卡,2k PRO,IP192.168.0.78

现在想在我的机器A上通过数据转发将客户机B的数据包转发到服务器上,也就是说想在B机的IE设置代理成A机的IP地址,通过 B ---》A --->服务器的方法上网
我使用的是IPCHAINS配置,并且通过我的机器能直接上网,网关什么的都配置完毕,/proc/sys/net/ipv4/ip_forward也已经设置为1。
下面是部分配置:
/sbin/ipchains -A input -i eth0 -s "192.168.0.78" -j ACCEPT
/sbin/ipcahins -A input -i eth0 -d "192.168.0.78" -j ACCEPT
/sbin/ipchains -A forward -i eth0 -s "192.168.0.78" -d "192.168.0.1" -j MASQ      
经过一段时间的摸索,测试成功。。。
不过是将客户B的网关设置成客户A,而不是设置IE代理

但是其中走UDP的QQ却无论怎么设置都可以,实在另人费解。。。      
QQ UDP协议 8000端口

无论怎么设置?何解?

此句:/sbin/ipchains -A input -i eth0 -s "192.168.0.78" -j ACCEPT
已允许QQ包出去。      
对不起,我可能没有说明白,我的意思是指在客户机A上进行了配置。。。而服务器还是原来的服务器。。。只是将B机器上通过设置网关为A,想将数据通过A转发给服务器。现在问题是B--》A--》服务器  出去的时候基本是可以出去,但数据是怎么回来的,源地址应该是隐藏替换掉了。。。服务器是如何识别转发到A甚至B的。。
我在A 上的设置是:
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT
/sbin/ipchains -P forward REJECT
/sbin/ipchains -A input -i eth0 -s \\"192.168.0.78\\" -j ACCEPT
/sbin/ipcahins -A input -i eth0 -d \\"192.168.0.78\\" -j ACCEPT
/sbin/ipchains -A forward -i eth0 -s \\"192.168.0.78\\" -d \\"192.168.0.1\\" -j MASQ

请问水鸟:
A机将B机的数据接收以后,它是如何走向的,如果我禁止了转发,尽管我注释掉后三句,为什么QQ还是可以用,而HTTP却不能使用,只有重新运行后面三句,HTTP才可以使用,UDP和TCP到底这里有什么不同?      
简单点说,你在服务器上做了IP伪装,
出去的包,服务器上已经做了记录,
当包回来以后,服务器会把包转发给请求的内部机器。

A同上,他向server请求包,再转发给B。
结构:b-->a-->server  & server-->a-->b

QQ走的是网关,HTTP会寻找IE中的代理IP,
如果你把B的网关设为A,
QQ走 A的input链,是ACCEPT,
HTTP走A的forward链,你如果把后三句注释掉,当然走不通。      
水鸟:
如果你把B的网关设为A,
QQ走 A的input链,是ACCEPT

您所说的QQ走A的input链是什么意思?我注释掉后三句,尽管开放INPUT,OUTPUT,但禁止了forward,A如何知道将数据发到服务器呢?通过A机器本身设置的网关(也就是服务器)走的?      
协议支持就行了,传输过程不管了      
input链和forward链本身没关系,
forward负责转发,
input是发向本机。
按照我的理解,
是发给A机,然后A机发出QQ情求,再还给B ,

这点我不能确定,没试过。

把A机的ACCEPT链设为禁止,看QQ能不能用。
(把结果发上来)      
测试说明:禁止的话,QQ不能用      
那说明我的想法是对的。