什么是Shadowsocks?
Shadowsocks本质上是一种旨在绕过地理限制的开源技术。由于Shadowsocks服务不属于任何公司,任何具有编程技能的人都可以使用并为此技术做出贡献。
也就是说,Shadowsocks不容易使用。构建和配置它并不适合所有人,需要相当多的技术知识。
这就是为什么Shadowsocks在技术娴熟的人群中非常受欢迎,特别是在编程社区。
Shadowsocks技术的细分
Shadowsocks基本上有两个组件。实际的Shadowsocks服务器和Shadowsocks客户端软件与服务器进行交互。我将在下面的单独标题中解释这两个组件的作用。
Shadowsocks服务器
- Shadowsocks服务器可以位于中国大防火墙之外的任何地方。
- 它允许多个设备或用户绕过地理限制。
- Shadowsocks服务器既可以用于个人用途,也可以出租给其他人使用。
Shadowsocks客户端软件
- Shadowsocks客户端软件可在各种设备和平台上运行。支持Windows,Android,iOS。
- 客户端软件完全免费使用。
- Shadowsocks服务器可用于连接中国辖区以外的远程Shadowsocks服务器。
Shadowsocks版本
由于这项技术相对较新,它只有两个版本。Shadowsocks(SS)和ShadowsocksR(SSR)。
Shadowsocks(SS)
- Shadowsocks(SS)是该技术的首次发布。
- 它是ShadowsocksR(SSR)的前身
- Shadowsocks(SS)已经过时了今天的标准,现在很少使用。
ShadowsocksR(SSR)
- ShadowsocksR(SSR)是Shadowsocks(SS)的继承者。
- ShadowsocksR(SSR)改进了SS版本并提供了加密等高级功能。
构建自己的Shadowsocks服务器的先决条件
在你太兴奋之前,我将打破构建你自己的Shadowsocks服务器所需的实际知识和资源。
熟悉计算命令
在考虑制作自己的Shadowsocks服务器之前,您需要熟悉Linux命令及其工作原理。
作为参考,Linux命令看起来像这样:
- 光盘
- PWD
- LS
- CP
如果您从未熟悉过这些命令,请不要费心投入时间和精力来构建Shadowsocks服务器。
Shadowsocks帐户购买和承担外包成本
虚拟专用服务器并不便宜,它们可以在几美元到几百美元之间的任何范围内。
尽管与shadowsocks购买相关的付款程序相对容易,但您必须确保能够负担得起海外服务器的成本。
除此之外,您还需要掌握英语语言,以便与全球VPS提供商进行沟通。
与VPS建立连接
即使您能够负担得起VPS并了解Linux命令的方法,您仍然需要知道如何使用SSH连接到虚拟专用服务器。这意味着对于Mac用户,您需要知道如何使用内置终端,Windows用户必须知道如何使用Putty。
最后,构建,优化并进入Shadowsocks服务器配置
既然您知道SSR构建自己的Shadowsocks服务器需要什么,那么我们应该深入研究实现。
以免直接潜入它。
购买海外虚拟专用服务器
现在,选择VPS提供商并没有硬性规定。您可以选择满足您需求的任何提供商。
如果您不了解任何可靠的VPS供应商,可以参考以下内容:
为了本教程的目的,我将使用DigitalOcean。
创建主机VPS
现在您已购买了DigitalOcean,您需要使用VPS创建虚拟主机。虽然这是一个漫长的过程,但它相对容易。我将列出下面的所有步骤。
- 首先,使用位于页面顶部的“ 创建 ”按钮。
- 现在从下拉菜单中选择“ Droplets ”选项。
- 创建“ Droplets ”时,请选择以下步骤中提到的选项。
选择一张图片
要选择图像,请选择位于“分布”下的“ Ubuntu ”。
选择尺码
现在选择您希望Droplet的大小。我的建议,选择标准Droplet下列出的最便宜的选项(例如,1GB,1vCPU,25GB SSD磁盘,1 TB传输,5美元/月)。
添加备份
只需选择“否”即可。
添加块存储
只需选择“否”即可。
选择数据中心区域
选择数据中心可能很棘手。如果您选择的服务器太远,您将获得可怕的Shadowsocks速度。因此,建议选择美国和亚洲服务器。
根据我的经验,西海岸,旧金山(1,2)的服务器和新加坡的服务器工作得非常快。
选择其他选项
只需选择“否”即可。
添加SSH密钥
使用提供的SSH公钥登录新购买的虚拟主机。
选择一个主机名
现在为您的虚拟主机命名。它可以是你喜欢的任何东西。
- 现在您已完成虚拟主机的创建,您应该会看到与虚拟主机关联的IP地址。您必须记住此IP地址才能再次登录Shadowsocks帐户。
使用SSH连接到主机:
现在您已经创建了主机VPS,现在是时候使用SSH连接它了。如果您之前使用过SSH,则应该知道建立连接的常规命令行是"ssh root@ [IP address]"
。
你可以在Terminal和Putty上运行这个命令,你最终会使用它。
成功建立连接后,需要使用下面提到的命令更新主机。
Apt-get update && apt-get upgrade -y
安装ShadowsocksR:
现在是时候安装ShadowsocksR了。虽然你可以去Shadowsocks(SS)。建议您选择ShadowsocksR(SSR),因为它具有更好的性能。
通常,安装过程非常具有挑战性,但是,由于Teddysun提供的脚本,它变得非常简单。您现在可以运行一个简单的脚本,它将自动安装各种版本的Shadowsocks。
要安装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
一旦运行最后一个命令行,您将得到如下提示:您选择哪个Shadowsocks服务器。
由于我们要安装ShadowsocksR,请选择与ShadowsocksR匹配的服务器。
现在您将获得输入ShadowsocksR密码的选项。输入您选择的密码。请务必记住此密码,因为您需要它才能通过墙壁访问。
现在您将获得如下选项:“请输入ShadowsocksR [1-65535]的端口”。虽然您可以选择范围内的任何端口,但建议您使用443。
接下来,您将获得如下选项:“请为ShadowsocksR选择流密码”。此选项基本上要求您选择shadowsocks加密方法。只需选择chacha20-ietf即可。
之后,您将被要求“请选择ShadowsocksR的协议”。只需使用Origin来选择此选项。
接下来,您将获得如下选项:“请为ShadowsocksR选择OBFS”。虽然您可以选择任何模糊处理模式,但建议您选择http_simple_compatible。
如果一切顺利,您将得到如下提示:“按任意键开始……或按Ctrl + C取消”。由于您要安装ShadowsocksR(SSR),请按任意键以开始安装过程。
安装过程确实需要一段时间,所以请耐心等待。
安装过程完成后,您将看到有关Shadowsocks服务器的重要信息。这包括您的服务器IP,服务器端口,obfs,Shadowsocks加密方法,密码和shadowsocks协议。
确保在某处记下这些信息。
恭喜!您现在已成功安装ShadowsocksR服务器。如果要在安装后更改任何设置,可以使用编辑器修改下面提到的文件。
Nano /etc/shadowsocks-r/config.json
完成所需的更改后,必须重新启动ShadowsocksR。为此,请使用以下命令。
/etc/init.d/shadowsocks-r restart
优化Shadowsocks提高服务器的速度
此步骤是可选的。但是,如果您想提高服务器的速度,可以查看我在下面讨论过的其他一些技巧。
技巧1:使用Google TCP BBR拥塞控制算法并提高服务器速度
要安装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
现在和以前一样,点击回车键开始安装过程。安装完成后,您需要重新启动主机服务器。
技巧2:增加服务器上同时运行的连接数
要增加服务器上的连接数,需要编辑“/etc/security/limits.conf”文件。
Nano /etc/security/limits.conf
您还必须在文件末尾添加下面提到的两行。(下面提到的两行也包括*符号)。
* soft nofile 51200
* hard nofile 51200
现在退出文件并运行下面提到的命令。
Ulimit -n 51200
技巧3:调整内核设置
要修改内核设置,您需要编辑“/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
最后,使用以下命令重新启动ShadowsocksR SSR服务器: /etc/init.d/shadowsocks-r restart
就是这样,您现在已经成功优化了Shadowsocks服务器。你现在应该比以前获得更好的速度。
下载Shadowsocks客户端应用程序
现在您已经成功购买,安装和优化了Shadowsocks服务器,现在您需要下载并配置Shadowsocks客户端应用程序。
对于那些不知道shadowsocks客户端应用程序是什么的人?它基本上是一个多平台应用程序,用于连接到远程Shadowsocks服务器。
Shadowsocks客户端软件下载链接
由于我们在此博客中使用了ShadowsocksR版本,因此我列出了各种设备的SSR客户端链接,包括移动shadowocks的链接。
- 对于Shadowsocks Windows客户端,请使用此链接:下载ShadowsocksR-win
- 对于Mac,请使用此链接: 下载ShadowsocksX-NG-R
- 对于Android设备,请使用此链接: 下载Shadowsocksr-android
- 对于iPhone和iPad,请在Apple App Store中搜索“Shadowrocket”或“Potatso Lite”。(确保使用海外Apple ID)。
Shadowsocks客户端基本配置
配置Shadowsocks客户端可能具有挑战性。为了使用客户端应用程序成功访问Shadowsocks服务器,您需要提供服务器IP,端口,密码,加密和一些其他信息。
所有细节必须绝对准确,否则您将无法在服务器和客户端应用程序之间建立连接。
Shadowsocks支持代理模式
Shadowsocks主要支持两种代理模式。我将在下面简要讨论它们。如果您有兴趣了解每个shadowsocks代理模式提供的内容,请查看官方shadowsocks网站。
全局模式
顾名思义,这种代理模式允许通过Shadowsocks访问所有网站。如果您通常访问区域阻止的网站,则全局代理模式可以授予您不受限制的访问权限。
PAC模式
此模式决定流量通过Shadowsocks流量和流量。它遵循PAC文件中提到的规则。由于操作系统已使用代理规则,因此不建议在Windows计算机上使用PAC代理模式。