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

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

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

一般来说,机房的网络相比民用网络,有更高的 QoS 级别,出口质量会相对高一些。经朋友推荐,入手了阿里云 ECS(云服务器),用其中转原本直接到 ss 服务器的流量。经过几番折腾,总结出设置如下(以下均在 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 是 ss 服务器的 IP 与 端口139.XX.XX.XX 是阿里云ECS的公网 IP(若 ECS 为专用网络,则填写内网IP)。

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

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

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

参考:https://xuzhenglun.github.io/2015/02/05/Shadowsocks-relay-based-on-Azure/

感谢 orzFly 提供的帮助。

25 thoughts on “阿里云中转,加速其他服务器上的 ss”

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

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

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

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

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

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

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

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

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

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

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

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

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

Leave a Reply