Shadowsocks 搭建教程
目前的 Shadowsocks 教程很多。但都不怎么样。
比如他们喜欢对读者隐藏细节。为什么「对读者隐藏细节」是一件坏事?因为用户对命令行的恐惧恰恰是来自于对命令行交互的不知情,隐藏细节对读者的恐惧没有任何帮助。
所以在此写一篇。
要想搭建 Shadowsocks,首先得知道 Shadowsocks 是什么,Shadowsocks 是一个 socks5 网络代理工具。网络代理工具的定义如下:
代理(英語:Proxy)也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般認為代理服务有利于保障网络終端的私隱或安全,防止攻击。
使用 Shadowsocks 代理工具的原理可以简单解释为「我的设备(手机、电脑)(又称为客户端) ->(通过代理工具)-> 未被墙的服务器(又称为服务端)-> 网络」因此你需要购买一个未被墙的服务器(又称 VPS)来搭建 Shadowsocks 服务端。
购买服务器之后,服务商一般会让你选择服务端所使用的系统,常见的选项有 Debian 系和 RPM 系以及 Windows。可以在这里看到详情。
如果要再次确定您的系统使用什么版本,可以这样查看到您的系统版本:
1 |
|
会有类似这样的输出:
1 |
|
其中,DISTRIB_ID
是服务器目前所使用的发行版代号,在这里是 AOSC OS
,DISTRIB_RELEASE
是发行版的版本号,在这里是 7.0.4
。
在确定了你的发行版的版本代号和版本号之后,就可以开始操作了。
假如我的 DISTRIB_ID
是 Debian
,版本号是 10.3
。您可以这样安装 Shadowsocks,目前比较推荐使用的版本是 shadowsocks-libev
,其他版本因为安全和易用性问题不推荐使用。虽然其他发行版安装 shadowsocks-libev
步骤不同,但大同小异,请使用系统包管理安装软件,并确保软件是最新版本。(可以在这里查看最新版本)。
先执行以下命令:
1 |
|
有几个概念需要解释:
- 这里您做了:把
buster-backports
源加入apt
的软件源更新列表。其中buster-backports
是Debian 10 (Buster)
的backports
源,backports 源是 Debian 在稳定版中保持某些软件为新版本软件的措施,有关 backports 的介绍请移步至这里,在这里使用 backports 安装shadowsocks-libev
的原因是让shadowsocks-libev
保持最新,因为旧版有安全性和可用性的问题,而 Debian 稳定版在不加 backports 源的情况下,为了保持稳定并不会让软件更新到最新。 sudo
的意思是使用管理员权限执行命令,在 Linux 中,有着严格的权限管理。一般用户运行在普通权限上,若需要管理员权限执行命令则一般使用sudo
。在这里需要使用管理员权限的原因是修改了位于/etc
中的系统文件,而修改系统文件需要管理员权限。当然,如果您的命令行的样子像是这样的:root@aosc
,那目前您就在以管理员身份运行,在此加sudo
那就是多余的。printf "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/buster-backports.list
的意思是:把deb http://deb.debian.org/debian buster-backports main
的内容输出到终端中,>
的意思是把输出重定向到文件中,这里的意思是重定向到/etc/apt/sources.list.d/buster-backports.list
文件中。所以总体的意思是,把deb http://deb.debian.org/debian buster-backports main
这一行加入到/etc/apt/sources.list.d/buster-backports.list
文件中。sh
是系统默认使用的shell
解释器,-C
参数的意思是command
, 即执行命令。apt
是 Debian 系的包管理器,包管理器是 Linux 中管理软件的方式。意思是在 Debian 系中升级和安装软件都使用apt
包管理器。有关包管理器的介绍请移步至这里。apt update
的意思是升级软件源列表,而apt install
的意思是安装某个软件,这里需要安装的软件包是shadowsocks-libev
,所以是apt install shadowsocks
。
之后,我们看看 shadowsocks-libev
这个包有哪些文件:
1 |
|
会有像这样的输出:
1 |
|
在这里需要介绍几个概念:
/etc
是 Linux 系统放配置文件的地方。我们放 Shadowsocks 配置文件的地方应该在/etc/shadowsocks
中。/usr/bin
是 Linux 系统中放二进制文件的地方之一。类似于 Windows 中的.exe
后缀的可执行文件。/usr/lib/systemd/system/*.service
是 Systemd 服务文件。使用 Systemd 服务文件运行 Shadowsocks 可使 Shadowsocks 服务始终保持后台中,不会因终端关闭而关闭。这里我们需要使用shadowsocks-libev-server@.service
服务文件。
所以,请先在 /etc/shadowsocks/
中创建 config.json
文件:
1 |
|
在出现的界面中输入以下内容:
1 |
|
按照提示使用 Ctrl + X
保存。
这里需要解释:
server
即服务器地址,您可以直接填写您服务器的域名或 IP 地址。这里的意思服务器 ipv4 地址为0.0.0.0
, ipv6 的地址为::0
。server_port
即服务器端口。你可以理解为,您的设备连接 Shadowsocks 服务器时需要连接 8338 这个端口。local_port
即本地端口。您可以理解为在本地每一个服务传送数据,都需要分配一个端口,local_port
就是 Shadowsocks 需要分配的端口。password
即连接 Shadowsocks 所需要的密码。timeout
是达到一定时间不能连接后,重新连接该 Shadowsocks 服务器。method
为加密方法。请使用AEAD
加密方法,其他方法不推荐使用。有关 AEAD 方法名单请看这里 。chacha20-ietf-poly1305
就是其中一种 AEAD 加密方法。
保存文件之后。运行 sudo systemctl enable shadowsocks-libev-server@config --now
即可启动 Shadowsocks 服务。这里需要解释:
systemctl
是 Systemd 服务管理工具,用于管理系统中的服务。enable
的意思是开机即启动这个服务,这里需要启动shadowsocks-libev-server
服务。@
后面的接着的是shadowsocks-libev-server
这个服务所需要的参数,这里需要的参数是在/etc/shadowsocks
中的配置文件名称,在这里配置文件名叫config.json
,所以就是shadowsocks-libev-server@config
--now
是立即启动此服务。
最后您的 Shadowsocks 服务器就搭建完成了。请尝试在您的设备中连接此服务器。
最后,延伸阅读:为什么我不推荐使用第三方翻墙服务(又叫机场) 。