iptables 内网两个主机 nat 后速度降低是什么原因? iptables 转发数据会影响速度吗

2016-06-05 22:29:26 +08:00
 itsme
两台主机,之间通过内网相连,并都有独立的公网 IP ,可以分别访问 internet 。

美国的外网 IP 是 48.13.10.42 内网网卡 IP 是 192.168.1.10
香港的外网 IP 是 118.83.10.142 内网网卡 IP 是 192.168.1.20

我的目的是从香港主机上通过内网走数据到美国的主机上,然后数据通过美国的主机的公网 IP 访问 Internet

在香港的主机上我设置了(默认 iptables 的 policy 全部是 accept 转发都允许):
iptables -t nat -A PREROUTING -d 118.83.10.142 -p tcp --dport 4003 -j DNAT --to 192.168.1.10:4003
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 4003 -j SNAT --to 192.168.1.20

在美国的主机上我设置了:
iptables -t nat -A PREROUTING -s 192.168.1.20 -p tcp --dport 4003 -j DNAT --to 48.13.10.42:4003

香港的主机上没有装 SS ,美国的主机上装有 SS 。

现在测试的电脑上用 SS 客户端连接香港的公网 IP 的 4003 端口能到达美国公网 IP 的 4003 端口,也就是说 SS 能否正常使用。说明转发应该是设置正确了(第一次用这种内网转发如果错误请指正)。

现在的问题:
设置 SS 的服务器地址为香港公网 IP 的时候, SS 速度大概只有 300Kbits 左右;
设置 SS 的服务器地址为美国公网 IP 的时候, SS 速度明显要快过上面的情况,一般都是 2000-4000Kbits

我的疑问:
1 、我这样设置转发是否有设置错误?
2 、如果设置没错,转发会不会对速度造成明显的影响?
4486 次点击
所在节点    Linux
8 条回复
sanool123
2016-06-06 00:07:37 +08:00
trace 一下看看,我觉得访问速度和内网做转发的关系不大。
colatin
2016-06-06 00:21:26 +08:00
这种情况感觉根本不需要 iptables ,配下路由就可以了。
colatin
2016-06-06 00:25:57 +08:00
@colatin 看错了撤销
carlhan
2016-06-06 01:09:45 +08:00
1.10 和 1.20 之间的速度怎么样啊?
leewangyang
2016-06-06 01:20:46 +08:00
问题难道不是一个是先到香港机再到美国机,一个是直接走美国机么?港机到美机速度是瓶颈么
netwboy
2016-06-06 10:51:54 +08:00
我也遇到这个问题了,我只在香港放了一台机子,有数据在走的时候,但延迟很大,没数据走的时候,延迟正常的,不知道以原因。
fangjinmin
2016-06-08 19:44:00 +08:00
我感觉是不是应该把在香港主机上内网网卡转发改一下?你原来的设置的意思是到 192.168.1.10 的包的 IP 地址改成 192.168.1.20.

iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 4003 -j SNAT --to 192.168.1.20
改成
iptables -t nat -A POSTROUTING -s 192.168.1.10 -p tcp --dport 4003 -j DNAT --to 192.168.1.20

就是说从 192.168.1.10 过来的包都转发到 192.168.1.20 去。
Siril
2016-06-24 11:07:13 +08:00
推测: 延迟对吞吐量产生影响。


假设从楼主到香港,从香港到美国的测速都大于 “ 2000-4000Kbits ”。


再假设楼主使用普通电信 /联通网络,连接香港路由会绕道美国,那么比如说:
楼主 ping 美国至少 200ms ;
楼主 ping 香港至少 300ms ;
香港 ping 美国至少 100ms 。


则 SS 建立 tcp 连接,实际延迟至少 400ms (楼主到香港的延迟+香港到美国的延迟+iptables 转发的延迟)。
[据说] 只要 linux 主机负载不高, iptables 的延迟可以忽略。



对于 tcp 来说,延迟和丢包的增加,都会导致吞吐量剧减,适当优化窗口大小之类的可以缓解此情形。



奇怪的是, 香港也无墙吧, 有必要多倒腾一次么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283709

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX