阿里云中转,加速Linode上的ss

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

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

1、开启ip_forward
vi /etc/sysctl.conf
#在文件末添加以下一行(如已有则不必添加)
net.ipv4.ip_forward=1
2、使用iptables,转发TCP、UDP流量
iptables -t nat -A PREROUTING -p tcp --dport 12XXX -j DNAT --to-destination 106.186.XX.XX:12XXX
iptables -t nat -A POSTROUTING -p tcp -d 106.186.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 106.186.XX.XX:12XXX
iptables -t nat -A POSTROUTING -p udp -d 106.186.XX.XX --dport 12XXX -j SNAT --to-source 139.XX.XX.XX

其中 106.186.XX.XX:12XXX 是ss服务器的IP端口139.XX.XX.XX是阿里云ECS的公网IP

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

reboot

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

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

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

感谢 orzFly 提供的帮助。

《阿里云中转,加速Linode上的ss》有17个想法

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

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

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

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

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

发表评论

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