1
tanyuxiang 2014-12-06 12:16:58 +08:00 1
不熟悉iptables
经过nat服务器的时候外面发过来包的源ip没修改啊,应用服务器本来就知道源ip |
2
extreme 2014-12-06 13:20:49 +08:00 1
你看一下TCP三次握手。
我的思路是不POSTROUTING,在目标服务器OUTPUT时把数据包DNAT到NAT服务器。 不过我做了实验,失败了,两个原因: 1. 如果不SNAT,NAT服务器就会以客户的IP发出数据包,但很多数据中心对出网数据包的来源IP有限制…… 2. 目标服务器OUTPUT处DNAT不生效,这个我百思不得其解,TCPDUMP处查看到TCP三次握手的数据包仍直接发送回给访客,无法DNAT到NAT服务器。 事实上有一个更好的解决方案——IPv4隧道,因为你目标服务器知道数据包要通过那个隧道发回去到NAT服务器,NAT服务器自然也不需要使用SNAT告诉目标服务器该把数据包发到哪个IP。 具体建立IPv4隧道的方法可以Google搜索IP GRE(推荐点击属于BuyVM的WiKi的搜索结果),我目前部分服务器正采用了此解决方案。 事实上你用PPTP,L2TP也行,因为都是建立一个隧道,关闭VPN协议的加密功能,就能把传输速度都损失降到最低。 |
3
zeyexe OP @tanyuxiang 做nat的时候就需要把源IP换成NAT自己的IP,否则没法和应用建立连接。
|
5
HowardMei 2014-12-06 13:39:39 +08:00 1
不可能,NAT本来就是在IP层干地址/端口转译这个活的,为了Checksum正确,还要顺便把每个TCP/UDP头信息都更新,要想ip不被转译,只能在应用层想办法,或者打洞。
|
7
zeyexe OP |
8
iptux 2014-12-06 14:30:52 +08:00
|
9
typcn 2014-12-06 15:52:41 +08:00 via iPad 1
在传输的数据里面附上地址啊
|
10
invite 2014-12-06 16:53:24 +08:00 1
这明显不是IPTables的功能,必然得应用自己支持。
|