LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 976|回复: 5

请教全透明网关问题(iptables)

[复制链接]
发表于 2009-11-19 06:07:58 | 显示全部楼层 |阅读模式
背景:
公司在台湾有一台游戏服务器主机,假设IP:1.1.1.1  端口:8085

由于怕1.1.1.1被封掉,所以想在马尼拉设置一台proxy用于数据转发,也就是说用户客户端连接的是proxy主机,假设IP:2.2.2.2 端口8085


我在IPtables里加上这2句实现了转发,运行正常:

iptables -t nat -A PREROUTING --dst 2.2.2.2 -p tcp --dport 8085 -j DNAT --to-destination 1.1.1.1:8085

iptables -t nat -A POSTROUTING -p tcp --dst 1.1.1.1 --dport 8085 -j SNAT --to-source 2.2.2.2


问题:

在台湾主机里看到的数据都来自马尼拉proxy IP(2.2.2.2)而不是客户主机IP,请问如何配置能看到客户的源IP地址??
发表于 2009-11-19 13:26:13 | 显示全部楼层
打开x-forword的参数,就能把用户ip传过去了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-19 17:47:46 | 显示全部楼层
Post by harveyliu;2047571
打开x-forword的参数,就能把用户ip传过去了



请问能举个例子吗?查不到这个参数啊,多谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-21 11:34:35 | 显示全部楼层
这个论坛真冷清啊,这个问题看来没人能搞定了,看了一下用了snat后,地址会被替换,iptable应该无能为力。。。
回复 支持 反对

使用道具 举报

发表于 2009-11-21 12:18:12 | 显示全部楼层
从TCP/IP的原理上来讲,ip这一层做不到,不过你可以写个游戏proxy放在马尼拉,proxy和game server之间约定应用层协议来传递用户来源IP。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-21 17:59:32 | 显示全部楼层
Post by 没本;2048422
从TCP/IP的原理上来讲,ip这一层做不到,不过你可以写个游戏proxy放在马尼拉,proxy和game server之间约定应用层协议来传递用户来源IP。


现在暂时用最简单的办法,就是在马尼拉proxy server上开一个apache,客户端client连接时发个包到http端口,根据返回包获得自己的源地址。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表