阿里云中转,加速其他服务器上的服务

2018-3-22 更新:优化排版,添加专用网络下需使用内网 IP 的提示。

因为某些原因,博主(电信)访问国外的网络质量是相当差。经历了 7、8 月份几乎无法访问国际互联网(下称“外网”)以及和奠信的斗争,9 月算是终于换来一丝光明。但是奠信访问某些服务器的线路还是被“特殊照顾”,依然是惨不忍睹。每天连接服务器上的服务非常困难,于是决心咬咬牙,折腾出一个解决方案,找回过去 24h 连接外网的男人的自信。

一般来说,机房的网络相比民用网络,有更高的 QoS 级别,出口质量会相对高一些。经朋友推荐,入手了阿里云 ECS(云服务器),用其中转原本直接到服务器的流量。经过几番折腾,总结出设置如下(以下均在 Ubuntu 下操作):

1、开启ip_forward
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
2、使用 iptables,转发TCP、UDP流量
iptables -t nat -A PREROUTING -p tcp --dport 12XXX -j DNAT --to-destination 100.XX.XX.XX:12XXX
iptables -t nat -A POSTROUTING -p tcp -d 100.XX.XX.XX --dport 12XXX -j SNAT --to-source 139.XX.XX.XX

iptables -t nat -A PREROUTING -p udp --dport 12XXX -j DNAT --to-destination 100.XX.XX.XX:12XXX
iptables -t nat -A POSTROUTING -p udp -d 100.XX.XX.XX --dport 12XXX -j SNAT --to-source 139.XX.XX.XX

其中 100.XX.XX.XX:12XXX 是目标服务器的 IP 与 端口139.XX.XX.XX 是阿里云ECS的公网 IP(若 ECS 为专用网络,则填写内网IP)。

3、保存 iptables
#这里使用 iptables-persistent 保存iptables配置,也可以使用其他方法保存
apt-get install iptables-persistent
netfilter-persistent save

OK,这时将上网客户端的 IP 改为阿里云 ECS 的公网 IP,再去连接,流量就会通过阿里云中转,从此卡顿不再有(钞票也不再有)。

需要注意的是,并非所有机房都支持转发,各个机房网络环境也不同,具体操作过程中需要根据实际情况,找到合适的线路。

感谢 orzFly 提供的帮助。

阿里云中转,加速其他服务器上的服务》有35个想法

  1. 公司的联通日本节点很稳,然而电|信

    如果再做一次中转,每个月f q 100块。

  2. 你好,
    感谢这篇文章的指导。
    但是我的Linode服务器美国的所有数据库我都试过了,可是每一个都会间歇性失联,或被干扰。
    所以就有了用跳板机的想法。
    但是我的服务器有时ping都不通,跳板机的理论连接到国内的vps上是什么样的一个状态呢?
    谢谢!

    1. 只有保证跳板机到两边的网络质量都较好,跳板机才有意义。比如你可以从跳板机上试着ping美国的机子,看看是否有丢包,如果有一定量的丢包,那说明跳板机到美国机器的线路质量不够好。当然,也要从你的网络(或需要连接跳板机的设备)去ping跳板机,看看之间的线路是否良好。

  3. 请问能否在一个阿里云上中转两条不同端口的线路?另外pptp是否可以实现中转呢?

    一个爱折腾的外服游戏玩家求教

    1. 中转两个端口应该是没问题的,复制一下规则就行了。pptp不太了解 = =##

  4. 能否直接用阿里云 ECS 的国外节点(香港,日本)搭建 SS 呢?

    1. 可以的,但是要看线路质量。否则和阿里云之间线路不好的话,还是起不到作用。另外阿里云对包会有检测,而且是国内企业,直接在阿里云上搭建私密性得不到保证。

      1. 但是如果使用海外的阿里云的话,还需要看该国法规的。有的国家有明确的禁止数据出国的法规,阿里云也比较难拿回来。

  5. 我用阿里云做的中转linode,第一次IP当天就被封了,第二次撑了1个星期,刚刚发现也被封了,从阿里云ping不通linode机器,难道SS已经被精确识别了吗

  6. 最近正在研究楼主的这个方法,发现一个百思不得其解的问题,我所有的操作都是按照楼主的教程来的,但是我把ss客户端的ip改成阿里云的ip之后,无法翻出去。这里有就有个问题啊,ss客户端里面是要输入一个密码的。但是阿里云的机器里面并没有安装ss的服务,那这个是如何解决?

    1. 只是让阿里云无条件的中转流量。另外新的阿里云很多是专用网络了,这种情况下需要填入内网 IP。

  7. 现在还能用吗?我买了个ECS,内网外网地址都试过了,不管用啊。TCPDUMP显示没有转发

  8. 使用Iptables转发,方便简单。 阿里云和腾讯云,最近的vps都是内网,所以要写内网IP:172.17.*****

  9. 阿里云青岛专有网络成功,很稳。
    但是疑问,数据包从本地-境内跳板数据包时加密的吗?

    1. 不知道我设想的是不是正确的:数据包从本地ss发出后已经是加密的,在海外终端server上才能被解包。
      也就是说中间的国内跳板机只能负责转发,也是看不到内容的。

        1. 感谢回答,我有一个很无解的问题。
          我当前的配置时青岛阿里云+Bandwagon CN2 GIA
          我现在又重新添加了一个gigs cloud 的server,但是奇怪的事情发生了,我gigs cloud的vps只能直连,不可以经过跳板连接。我重复建了2个新跳板,阿里云&腾讯云,都测试不通过。只有bandwagon+阿里云可以用,跳板的防火墙也都全放行了,请问这个问题出在哪里?

  10. 我用阿里云香港的做跳板,阿里云香港的服务器不会被发现是ss用的吧?
    之前直接用阿里云香港做ss,被警告了,现在做跳板机应该不会再警告吧?

发表评论

电子邮件地址不会被公开。 必填项已用*标注