Shadowsocks技术的交流与学习
SSR翻墙系统的组成部分:
一个SSR翻墙翻墙系统,由两大部分组成:
SSR服务器(Server):
SSR服务器搭建在位于墙外(国外)的电脑服务器(如VPS)上。
可以为多个用户、多种设备提供翻墙服务。
可以自己搭建,也有公司出售服务(提供用于连接的IP、密码等)。
SSR客户端软件(Client):
运行在不同的设备上:如电脑、手机(苹果、安卓)等。
可以免费下载。
使用时连接到Shadowsocks服务器上,达到翻墙的作用。
Shadowsocks的不同版本:
Shadowsocks目前有两个不同的版本:
原始版本的Shadowsocks(SS):
这是最早的Shadowsocks版本
仍然可用,但功能有限。
ShadowsocksR(SSR):
在SS版本上做了一些改进,增加了一些功能,如用于反干扰的混淆协议等。
一部分用户反应SSR目前在国内比SS更好用。
在这篇教程里,我们将使用ShadowsocksR(SSR)版本。
自己搭建SSR服务器需要的条件:
在这篇教程里,我们将花相当篇幅讲解SSR服务器的搭建和设置。自己搭建SSR服务器需要以下条件:
熟悉基本的电脑Linux系统操作指令:如cd、pwd、ls、cp等,如果这几个指令你根本没听说过,那么你可能不适合自己搭建Shadowsocks服务器。
有能力购买海外服务器(VPS):
费用:大概每个月5美元左右。
语言:需要掌握基本的英文来完成服务器的购买等步骤。
付款方式:需要有信用卡或PayPal账户(也有公司支持支付宝)。
懂得如何通过SSH方式连接VPS服务器:Mac用户可以使用电脑自带的终端Terminal,Windows用户可以使用Putty或者Windows 10最新开始提供的Ubuntu。
第二部分:SSR服务器的搭建和优化
一、购买海外VPS服务器:
在VPS服务器供应商的选择上,常见的包括DigitalOcean、Hostwinds、Vultr、搬瓦工、Amazon AWS等等。在本教程里我们将以DigitalOcean为例,新用户可以点击这里获得10美元DigitalOcean开户优惠。
具体注册、购买DigitalOcean的步骤因为篇幅原因在这里省略,大家可以自己搜索相关教程。
二、创建虚拟主机VPS:
购买服务器之后,下一步就是创建主机VPS。以下是在DigitalOcean创建主机的步骤:
点击页面上端”Create”,从下拉菜单中选择“Droplets”(虚拟主机在DigitalOcean被称为Droplet)。
创建Droplet时的选项:
Choose an image(重要):选择Distribution下面的”Ubuntu”(目前缺省版本是16.04.4 x64,选这个即可)。
Choose a size:选择Standard Droplets下面最便宜的选项(目前是1GB, 1vCPU, 25GB SSD Disk, 1 TB transfer, $5/month)。
Add Backups:不需要。
Add Block Storage:不需要。
Choose a datacenter region(选择服务器地理位置,重要):建议选择美国西海岸或亚洲的服务器,因为这些位置离国内较近,Shadowsocks的速度也会更快一些。具体来说,如果选择美国的服务器,选择San Francisco(1或2都可以),如果选择亚洲服务器,目前只有Singapore(新加坡)。如果拿不定注意,建议选择San Francisco(1或2都可以)。如果用vultr的服务器,建议选择日本。
selct additional options:不需要。
Add your SSH keys(重要):添加自己用于登录虚拟主机的SSH公钥。
How many Droplets? 不改变,1个。
Choose a hostname:给虚拟主机起一个名字。
创建好虚拟主机之后,你会看到这个虚拟主机的IP地址,记住这个地址,用于下一步登录。
三、使用SSH连接主机:
下一步需要使用SSH连接创建好的虚拟主机VPS,一般来说,命令行是“ssh root@[IP 地址]”。具体如何SSH在这里因为篇幅有限就不写了,Mac用户可以使用电脑自带的终端Terminal,Windows用户可以使用Putty或者Windows 10最新开始提供的Ubuntu。
连接好之后,运行以下命令更新主机:
apt-get update && apt-get upgrade -y
四、安装SSR:
在Shadowsocks版本选择上,我们建议选择ShadowsocksR(SSR),因为很多网友反映SSR性能更好,根据我们自己观察,SSR至少不比SS差。
SSR的本身安装步骤较为繁琐,但网友teddysun提供了一个非常方便的一键安装脚本,该脚本还可以用于安装SS等多种Shadowsocks版本。在这里我们将使用这个一键安装脚本来安装SSR。
以Root身份连接到虚拟主机后,运行以下命令:
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
运行完最后的命令行后,会看到一个选项:Which Shadowsocks server you’d selct,因为我们要安装ShadowsocksR,就选择ShadowsocksR对应的数字。
然后会看到“Please enter password for ShadowsocksR”,这时需要设定一个以后翻墙时连接Shadowsocks的密码,请自行设定。
下一个选项”Please enter a port for ShadowsocksR [1-65535]”是让选择一个Shadowsocks的服务器端口,建议使用:443。
接下来的选项“Please selct stream cipher for ShadowsocksR”,是让选择加密方式,建议选择:chacha20-ietf。
下一个选项“Please selct protocol for ShadowsocksR”,是让选择协议,建议选择:origin。
下一个选项“Please selct obfs for ShadowsocksR”,是让选择混淆模式,建议选择:http_simple_compatible。
然后出现的指示“Press any key to start…or Press Ctrl+C to cancel”,意思是按任何键开始安装或按“Ctrl+C”取消安装。这时按回车键,就可以开始安装了。安装过程可能需要一段时间,请耐心等待。
安装完成后,屏幕会显示连接Shadowsocks服务器的所有重要参数,包括:Server IP(服务器IP)、Server Port(服务器端口)、Password、Protocol(协议)、obfs(混淆)、Encryption Method(加密)。一定要把所有参数记下来!
这时ShadowsocksR服务器已经成功安装完成了。如果将来想要更改设置,可以使用编辑器更改“nano /etc/shadowsocks-r/config.json”文件:
nano /etc/shadowsocks-r/config.json
每次更改完设置后,需要运行以下命令行重启ShadowsocksR:
/etc/init.d/shadowsocks-r restart
五、SSR服务器端提速优化(可选项):
下面我们将介绍一些额外的软件和服务器配置的更改,以优化Shadowsocks服务器,让速度变得飞快。
安装Google TCP BBR拥塞控制算法,用以加快服务器网速:
这里我们将仍然使用网友teddysun的一键安装脚本。仍然以Root身份SSH连接主机后,运行以下命令行:
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
当看到提示“Press any key…”时,按回车键开始安装。
安装过程中如果出现选项,按回车键选缺省选项即可。最后需要重启服务器主机。
增大服务器可以同时处理的连接数量:
编辑“/etc/security/limits.conf”文件:
nano /etc/security/limits.conf
在文件末尾增加以下两行(注意:*符号也要包括):
* soft nofile 51200 * hard nofile 51200
退出文件后,运行以下命令行:
ulimit -n 51200
优化内核参数:
编辑“/etc/sysctl.conf”文件:
nano /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 = 4096 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_mem = 25600 51200 102400 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.ipv4.tcp_mtu_probing = 1
退出文件编辑后,运行以下命令:
sysctl -p
然后重启SSR:
/etc/init.d/shadowsocks-r restart
恭喜!到这里,SSR服务器端已经安装、设置、优化提速完成。下面介绍以下Shadowsock客户端的使用方法。
第三部分:Shadowsocks客户端的下载和配置
Shadowsocks客户端是安装在用户的电脑、手机等设备上的软件或APP,用来连接Shadowsocks服务器以达到翻墙的目的。
Shadowsocks客户端软件下载:
在这里我们仍然以ShadowsocksR为例,来介绍不同设备上的Shadowsocks客户端软件。以下是SSR客户端的下载链接:
Windows电脑:下载 Shadowsocks-Windows
Mac电脑:下载 ShadowsocksX-NG-R
安卓手机/平板:下载 Shadowsocksr-android
苹果手机/平板:使用海外账号在App Store搜索“Shadowrocket”或“Potatso Lite”
SSR客户端的基本配置:
因为不同平台的Shadowsocks软件和App的界面不尽相同,我们就不一一具体介绍了。在设置时最关键的步骤是输入服务器的信息,包括服务器IP、端口,密码,加密方式等等。只有这些信息全部输入正确,Shadowsocks才能连上。
Shadowsocks代理模式的设置:
Shadowsocks(包括SSR)主要有两种代理模式:
全局模式(Global):访问所有网站都通过Shadowsocks,如果平时大部分时间访问国外网站,选用这种模式即可。
PAC模式(PAC):通过PAC文件里的规则列表控制哪些流量走SS,哪些不走(比如国内流量不走)。注:在Windows版本的SSR客户端,这个功能已经可以被“代理规则”(Proxy Rule)设置代替(除非使用gfwlist),因此在Windows版本的SSR客户端一般不建议用这一模式。
直连模式(Disable System Proxy):基本可以理解为关掉Shadowsocks。
好了,到这里我们的Shadowsocks教程就告一段落了。希望大家能成功地使用SSR或其它翻墙软件、顺利地翻墙。