GFW

自搭梯子shadowsocks科学上网

2017.10.19更新

时间过得太久了,现在安装ss直接用秋水的四合一一键安装脚本:
https://teddysun.com/486.html

在 root 下(sudo -i)输入以下命令:

wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

具体可以看这里的安装部分 Google Cloud Platform 免费搭shadowsocks一年

以下内容基本已过时,可以不用看了


首先感谢原文作者Anonymous V,地址在这里:http://shadowsocks.blogspot.com/2015/01/shadowsocks.html 当然,你可能访问不了,在Blogspot屏蔽了多少年了。

goagent已近废,手机是fqrouter也停止了,VPN,SSH也经常被清除,现在就看Shadowsocks了。什么是shadowsocks就不多说了,搭建需要vps服务器。目前我知道的便宜vps有这几家:

俗称搬瓦工的BandwagonHOST:OpenVZ架构 512MB内存   5GB硬盘 500GB流量/月 9.99美元/年https://bandwagonhost.com/aff.php?aff=1285&pid=22 此款VPS的年付选项在Billing Cycle的下拉菜单里。
budgetvm,也是openvz架构,最低25美元一年:https://www.budgetvm.com/vps-servers.php
5美元一个月的有好几个,有些找邀请链接可以送钱的,自己找下:
https://www.vultr.com/pricing/ 这个可以按小时收费,不用了关停不收费
http://www.host1plus.com/vps-hosting/ 这个还有最低2.5美元的
http://www.ramnode.com/vps.php 这个价格还有15美元一年,3.5美元一月的openvz架构,kvm架构的SSD3.5一月还是很划算的
以上vps我只用过搬瓦工的。如果想高端点选Linode,风评都不错,如果只是为了ss我觉得没必要。
购买一般需要PayPal,或者信用卡,没信用卡的可以看下全球付http://www.globalcash.hk/
附:
OpenVZ为不完全虚拟化技术,每个VPS账户共享母机内核,易受同一母机下其他VPS的影响,几乎不能单独修改内核。Xen和KVM为完全虚拟化技术,各VPS之间互相独立,基本互不影响,而且可以任意修改内核。Xen和KVM可通过系统内核修改来优化服务器,大幅度提升shadowsocks的连接速度,尤其体现在晚高峰的时候。OpenVZ就没法使用官方的优化了。
 下面是我在搬瓦工搭建shadowsocks的过程。既是记录笔记也是教程分享。
1.选择购买链接后,先选节点,这个可以换的,搬瓦工很多选Los Angeles,这个要看本地网络,自行测试吧。
2.购买后Portal Home > Client Area > My Products & Services 找到你的服务器,点KiwiVM Control Panel ,见下图:

默认系统为Centos 6 x86,主页有VPS的IP,SSH端口,root密码需要在Root password modification获取。在windows系统上远程登陆vps要用putty。下载:http://www.putty.org/ 注意:用putty登录VPS时输入的密码是不可见的,正常输入完毕后回车即可,和goagent上传时一样。
OpenVPN Server选项,可以一键搭建OpenVPN服务端,千万别去使用。原因附后。
图像 1
可以随便起个名,保存设置,下次load就不用每次写ip和端口号了。
open后显示如下:
登录名是root,密码是前面获取的

登录后即开始输入命令。下面的命令,需要一行一行的执行,每输入一行命令,回车执行,如果没有报错,即为执行成功,出现确认提示的时候,输入 y 后,回车即可。每行命令可以复制后在putty里右键即粘贴,回车执行。

yum install epel-release
yum update
yum install python-setuptools m2crypto supervisor
easy_install pip
pip install shadowsocks
以上都是安装或更新shadowsocks,及其运行必须的软件。据说有一键安装包,请自行搜索。
这时该修改配置了,继续执行命令 vi /etc/shadowsocks.json

如果用过vim编辑器就很了解了。按 i 键进入编辑模式,putty黑框的左下角会出现 -- INSERT -- 字样,然后一次性复制下面的内容(复制之前记得修改8388和yourpassword为你自己的服务器端口号和密码,此端口号是在手机或电脑上的shadowsocks客户端连接VPS上搭建的服务端的端口号,范围 1 - 65535 ,只要不和现有的端口号如SSH端口冲突都可以,记下你修改的端口号和密码,待会儿在配置手机和电脑的客户端时还要用到)。
{
    "server":"0.0.0.0",
    "server_port":端口号,
    "local_port":1080,
    "password":"yourpassword",
    "timeout":600,
    "method":"aes-256-cfb"
}
复制完成后,按 ESC键退出编辑模式,此时putty黑框左下角的 -- INSERT -- 字样消失,按下 : 键,输入 wq 后回车,此时文件保存完毕并退出了vi编辑器。(“ : ”的输入方法为“Shift+分号键”)
下面接着编辑
vi /etc/supervisord.conf


同样按 i 键再次进入编辑模式,用方向键将光标调整至文件尾部的空行处,然后一次性复制下面的内容,在putty里右键粘贴。

[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=root

一样ESC键:wq 保存退出。

再编辑

vi /etc/rc.local

 

光标到最下方,复制一下内容:

service supervisord start

保存后退出。

最后执行,重启:

reboot
此时,VPS重新启动,服务端已经完全配置完毕,putty会弹出一个连接已断开的提示框。当然,也可以到KiwiVM Control Panel 界面,主页上有开关机和重启按钮。

 

 

服务器端的shadowsocks就搭建完毕,下面是如何使用。

Android客户端
免翻下载
电脑客户端端下载链接(Windows、Mac OS X)
Windows 7用户下载Shadowsocks-win-x.x.x.zip,Windows 8用户下载Shadowsocks-win-dotnet4.0-x.x.x.zip。
iOS客户端端下载链接
客户端配置示例:
服务器:你的VPS IP地址
远程端口:第一个配置文件里修改的
本地端口:1080 不用变
密码:yourpassword 第一个配置文件里修改的
加密方法:AES-256-CFB
其他选项如
路由:绕过局域网及中国大陆地址
全局代理:勾选
UDP转发:勾选
自动连接:勾选
自行测试吧。
新版的shadowsocks电脑客户端已经支持一键切换系统代理,无需浏览器插件,内置可编辑的PAC服务,并提供HTTP代理,兼容IE。Chrome浏览器配合SwitchySharp或Omega代理插件使用,代理协议选socks5,127.0.0.1 端口1080
如果感觉速度慢,一个是修改服务器节点,一个是修改服务器远程端口。要不就换好点的服务器喽。
下面是shadowsocks的优化,如果买的是openvz架构,下面就不用看了。
这个优化配置官方网站有shadowsocks.org
增加TCP连接数量
编辑limits.conf
vi /etc/security/limits.conf
增加以下两行
* soft nofile 51200
* hard nofile 51200
开启shadowsocks服务之前,先设置一下ulimit
ulimit -n 51200
1、查看可用的算法。 主要看内核是否支持hybla,如果没有,只能用cubic了。
sysctl net.ipv4.tcp_available_congestion_control
2、如果没有该算法,则加载hybla算法(不支持OpenVZ)
/sbin/modprobe tcp_hybla
3、首先做好备份工作,把sysctl.conf备份到root目录
cp /etc/sysctl.conf /root/
4、修改sysctl.conf配置文件,优化TCP参数
vi /etc/sysctl.conf
添加以下代码
fs.file-max = 51200 #提高整个系统的文件限制 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.core.netdev_max_backlog = 250000 net.core.somaxconn = 3240000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_fastopen = 3 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.ipv4.tcp_mtu_probing = 1 net.ipv4.tcp_congestion_control = hybla
5、保存生效
sysctl -p

小结

经测试,digitalocean,ramnode的KVM等内核支持hybla算法。但是linode的内核目前不支持,请参考Linode内核加载hybla模块进行加载。注意每次重启需要重新加载hybla算法模块。
FAQ,纯复制:
1.Android 5.0的Shadowsocks为什么耗电量非常高?
Android 5.0的电量统计模块把所有经过shadowsocks代理的流量所产生的耗电量都算在了shadowsocks上,因此看起来会很耗电,比如你Chrome浏览器的电量都被算到了shadowsocks头上,实际上还是很省电的。
2.如何查看当前VPS上的Shadowsocks服务端版本号?
pip show shadowsocks
3.以后如何升级VPS上的Shadowsocks服务端?
pip install --upgrade shadowsocks
reboot
4.我搭建过程中不小心出错,想重新来过,如何重装VPS的系统?
搬瓦工:VPS控制面板里,Install new OS
DigitalOcean:VPS控制面板里,Destroy,Rebuild
Linode:VPS控制面板里,Rebuild
5.我开始选择的节点线路不理想,如何切换机房?
搬瓦工:VPS控制面板里,Migrate to another DC,无需重新搭建Shadowsocks服务端。
DigitalOcean:新建一台你想要机房的VPS,删除原来的,需要重新搭建Shadowsocks服务端。
Linode:新建一台你想要机房的VPS,删除原来的,需要重新搭建Shadowsocks服务端。
6.如何配置多账户?
小提示:Shadowsocks支持一个账户在多个终端同时使用,一般人没有配置多账户的必要。所以如果你看不懂,那你还是别折腾了。
{
    "server":"0.0.0.0",
    "port_password":{
        "8388":"password1",
        "8389":"password2",
        "8390":"password3",
        "8391":"password4"
    },
    "timeout":300,
    "method":"aes-256-cfb"
}
友情提醒:GFW目前是根据流量检测分析匹配统计学模型的方式来判断你是否在翻墙,换言之,你用什么方式翻墙并不重要,重要的是你和服务器之间的流量特征是否像是在翻墙。一旦匹配,既对你进行有罪推论,轻则限速,重则彻底封锁IP。在IPv4地址已经枯竭的今天,可用的美国IP地址会越来越少,所以不建议将自己的账号分享多人使用,以防被封。
7.为什么我的shadowsocks在刚搭建好的时候速度很快用了几天后速度就变慢了甚至网页都很难刷出来?
出现这种情况有多种可能性:
①shadowsocks长时间保持不间断连接会被GFW根据流量模型分析判断出你可能在翻墙(原理见上面的友情提醒),于是进行主动干扰,轻则限速,重则切断你和服务端的连接。解决方法:切换一下你的网络,比如从Wi-Fi切换到3G或者从3G切换到Wi-Fi或者直接断开网络连接,等待10分钟以后,一般即可恢复正常。PS:每天晚上睡觉前关闭手机的网络连接会大大减小此种情况发生的概率;而将自己的VPS分享给多人使用则可能大大增加此种情况发生的概率,请自行斟酌。值得说明的是,VPN最容易受到此类干扰,而shadowsocks作为可自定义端口的私有协议代理已经是最不容易被干扰的翻墙方式之一了。
②机房的QoS策略。解决方法:将shadowsocks服务端的server_port改为常见端口。
③本地线路抽风,你所使用宽带运营商的国际出口出现问题。比如最近南方电信部分地区国际出口严重不稳定(电信人为限制)。解决方法:<1>先尝试一下DigitalOcean的新加坡节点或者Linode的日本节点;<2>如果当地有“国际精品网”业务,开通后可立即完美解决这个问题;<3>如果不愿意给电信交保护费,那么就换家运营商吧,移动和联通都没问题。
④VPS间歇性抽风。无论你选择哪家供应商的VPS,都可能遇到有时候线路抽风、VPS速度慢或者不正常。不同的是,越是价位高的VPS出现抽风情况的可能性越低,越是价位高的VPS出现抽风情况时能保证的最低连接速度越高。出现这种情况的可能性比较低,我手头的无论是搬瓦工还是DigitalOcean以及Linode暂时未遇到线路抽风情况。
⑤搬瓦工的年付VPS为OpenVZ架构,同一母机下的VPS越多,同一时间段使用的人越多,速度就越慢。解决方法:一分价钱一分货,将VPS更换为DigitalOcean或者Linode。
⑥中国的国际出口带宽有限,晚高峰时段可能出现网络拥堵,速度多少会受影响,但这种情况起码白天的速度应该是没问题的。
⑦如果你在VPS上搭建了VPN并且经常使用,尤其是OpenVPN,请立即停止使用。VPN协议特征明显,GFW可以非常容易的检测到,从而盯上你的IP,轻则限速,重则彻底屏蔽。常见VPN协议根据易受干扰的程度从大到小依次为:OpenVPN > PPTP > L2TP > IPSec,尤其是OpenVPN,GFW已经可以实现对其定点清除(同样遭此待遇的还有SSH翻墙)。如果你想让自己VPS的IP快速报废,那么就请尽情的使用搬瓦工的控制面板搭建OpenVPN吧。重要提醒:在不明所以的情况下尽量不要在自己的VPS上搭建其他杂七乱八的翻墙服务尤其是一些早已过时和落后的翻墙方式,翻墙手段宜新不宜旧,只搭一个Shadowsocks是最能保证你翻墙效果和服务器稳定的好策略。
⑧其他:偶尔的速度慢或者连不上都是正常的,但如果经常性的速度奇慢或者连不上那就不正常了。
8.为什么是CentOS?
作为服务器而言,永远都是稳定性压倒一切。而CentOS简单易用,上手快速,业界公认的稳定,且易于维护,是服务器操作系统首选。
9.为什么是Python版?
Python版的Shadowsocks易部署,后期升级维护都非常方便,相当适合新手,支持的特性也最多,稳定性好,运行效率高,而且还由Shadowsocks发明者亲自维护,可第一时间享受新功能和新特性。
10.为什么使用supervisord?
与繁琐的带参执行方式相比,service命令在CentOS系统里使用起来更加灵活方便,比如:
①启动Shadowsocks服务端:service supervisord start
②关闭Shadowsocks服务端:service supervisord stop
③重启shadowsocks服务端:service supervisord restart
-------------------------------

错误排查

已经成功的小伙伴可以直接略过这部分了。
温馨提醒:在怀疑教程的任何一个地方之前,请先怀疑你自己。
服务端搭建成功的唯一衡量标准是在手机或者电脑客户端正确配置后能否顺利的访问被屏蔽的网站,无论是电脑还是手机,只要有一个终端能够成功翻墙即视为服务端搭建成功,出现所谓的可以连接但无法上网其实还是服务端或者客户端的配置有问题,认真按照下面的步骤一步步排错吧。
遇到问题的小伙伴请先认真仔细阅读这两篇文章
上面的链接为vi编辑器基本用法扫盲(新手必读)
最容易出现问题的地方,就是vi编辑器的使用,如果你在执行vi命令后没有按 i 键进入编辑模式就直接复制粘贴,会造成粘贴内容的首行被覆盖,从而导致错误;或者你在粘贴内容后,没有以正确的方式保存退出,同样会出现问题。
如果你在执行完reboot命令后,手机端无法连接,请先确保你的手机端配置正确,并且网络环境良好(参照上面的Android手机客户端配置示例)。然后用putty登入你的VPS后通过以下方式逐步排查:
1.执行命令service supervisord start,执行完毕后如果没有报错,手机端也可以正常连接,那么问题出在vi /etc/rc.local这个环节,请重新检查该文件配置;如果手机端依然无法连接,请继续往下看。
2.执行命令ssserver -c /etc/shadowsocks.json,执行完毕后如果没有报错,手机端也可以正常连接,那么问题出在vi /etc/supervisord.conf这个环节,请重新检查该文件配置;如果手机端依然无法连接,请继续往下看。
3.如果依次进行完以上两步后,手机端依然无法连接,那么问题出在vi /etc/shadowsocks.json环节,请重新检查该文件配置。
4.如果以上三个文件的配置问题都解决后,执行reboot命令后,手机端依然无法连接,那么说明你在教程最开始的5行命令没有正确执行,在搬瓦工和DigitalOcean以及Linode官网的控制面板里重装VPS系统后,按照教程认认真真仔仔细细的重新来过吧。
微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

回复

  1. 556 556
    Chrome 72 10

    为什么我的shadowsocks老是用到一半就连不上。。。然后从新连也上不去 只有从新配置才能用。。

This is just a placeholder img.