如何在Debian 9 Stretch上设置Shadowsocks

Shadowsocks是一个socks5代理,主要目的是绕过互联网审查。Shadowsocks最初是用python编写的,但是自从最初版本发布以来,已经有很多不同的Shadowsocks实现。我将向您展示如何安装和设置Shadowsocks-libev,这是一个用C编写的实现。它非常轻松,可以在非常低端的硬件上运行。

您可以在几乎任何您喜欢的地方安装shadowsocks,但是,如果您正在寻找使用的VPS,我可以推荐Vultr,我自己使用它。

Vultr的上述链接是推荐链接。如果你想注册Vultr我会很感激,如果你使用它,但是,我希望你喜欢这个教程。

安装

要获得最新版本的Shadowsocks-libev,我们首先需要为Debian Stretch启用backports存储库

echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/backports.list

其次是

sudo apt update

现在我们需要从backports存储库而不是默认存储库安装shadowsocks-libev包。

sudo apt -t stretch-backports install shadowsocks-libev

shadowsocks-libev中包含一个systemd服务文件,因此可以由systemd完全管理。

现在你应该启动并运行一个相当新版本的shadowsocks-libev,让我们来看看一些配置。

组态

让我们首先打开shadowsocks配置文件。你会发现它位于/etc/shadowsocks-libev/config.json中

sudo nano /etc/shadowsocks-libev/config.json

它应该看看像这样的东西

插入图片

现在让我们来看看你拥有的一些配置选项。

选项 描述
“服务器”:“” shadowsocks服务器的IP地址或URL
“服务器端口”: ”” 要使用的服务器端口
“local_address”:“” 本地收听地址
“local_port”:“” 要使用的本地端口
“密码”:“” shadowsocks服务器的密码
“方法”: ”” 要使用的加密方法
“超时”: ”” 超时秒数
“fast_open”:true / false
“nameserver”:“” 选择与服务器默认名称不同的名称服务器
“模式”:“” 选择是否要使用TDP(“tcp_only”),UDP(“udp_only”)或两者(tcp_and_udp)。默认值仅为TCP。

本地地址和端口仅与客户端计算机上的shadowsocks配置相关。

对于加密方法,我建议使用默认值,因为它非常安全且速度非常快。

为了获得最佳性能,将TCP快速打开设置为true通常是一个好主意,但要使用它,您还需要在系统上启用它,我将在本指南的下一部分中介绍。

以下是Shadowsocks服务器配置示例:

{
    "server": "0.0.0.0",
    "server_port": 8388,
    "password": "thisisapassword",
    "timeout": 60,
    "method": "chacha20-ietf-poly1305"
}

根据自己的喜好设置shadowsocks之后,请记住重新启动它

sudo systemctl restart shadowsocks-libev

性能调整

您可以对系统进行一些更改以优化shadowsocks。如果您对这些优化有更多信息感兴趣,请查看shadowsocks.org

增加打开文件描述符的最大数量

首先打开以下文件

sudo nano /etc/security/limits.conf

并添加以下2行

* soft nofile 51200
* hard nofile 51200

然后在启动shadowsocks运行之前

ulimit -n 51200

调整内核参数

打开以下内容

sudo 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
net.ipv4.tcp_congestion_control = hybla

如果可以,请执行以下操作以应用更改

sudo sysctl -p

其中的变化是TCP快速开放,我之前谈到过。因此,您现在可以通过在配置文件中添加以下内容来继续在shadowsocks配置中启用TCP快速打开

"fast_open": true

TCP BBR

如果你有4.9或更新的内核,你可以使用TCP BBR进行拥塞控制。它应该对性能有显着的改善。Debian 9默认提供内核4.9。如果您不确定自己拥有哪个内核版本,可以uname -r在终端中运行以进行检查。

要启用TCP BBR,请打开sysctl.conf

sudo nano /etc/sysctl.conf

并添加以下2行

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

然后运行以下命令以应用更改

sudo sysctl -p

客户端

Android的

要在Android上使用shadowsocks,您可以从Play商店或直接从github下载官方应用程序

设置应该非常简单,只需将您在服务器配置文件中设置的信息输入到应用程序中即可。shadowsocks应用程序的工作方式类似于Android上的VPN,所以一切都通过它进行路由,因此不需要特殊配置。

Linux的

要在linux上使用shadowsocks,您可以遵循与服务器相同的安装说明,因为shadowsocks-libev包中包含服务器和客户端组件。现在要运行shadowsocks,您可以创建配置文件或只使用命令行选项。我建议在主目录的某个位置创建配置文件。下面你可以看到一个示例配置文件,它与我之前显示的服务器配置一起使用。此配置假设您已启用TCP快速打开,如果不是,请删除最后一行。

{
    "server": "0.0.0.0,
    "server_port": 8388,
    "method": "chacha20-ietf-poly1305",
    "password": "thisisapassword",
    "local_address": "127.0.0.1",
    "local_port": "1080",
    "timeout": 60,
    "fast_open": true
}

我们假设您将文件命名为config.json。要启动shadowsocks,只需在终端窗口中键入以下内容即可。

ss-local -c /path/to/file/config.json

现在要实际使用shadowsocks,您需要告诉您用于通过代理连接的程序。例如,使用Firefox,您需要进入网络设置并告诉它使用代理。

火狐的设置

根据您使用shadowsocks的原因,也可以让DNS查询通过它。如果您不太确定,我会建议启用它,如上所示。

插件 – 简单的obfs

根据您的使用场景,使用模糊处理可能是个好主意。幸运的是,为shadowocks制作了一个很好的插件,名为simple-obfs。

对于Debian 9,有两种方法可以安装simple-obfs。第一种是从stretch-backports存储库安装它,就像我们安装shadowsocks-libev一样。

sudo apt -t stretch-backports install simple-obfs

第二种方法是从源代码编译它。此方法适用于任何发行版,但是您需要事先在系统上安装哪些软件包及其名称略有不同。下面我将向您展示如何在debian 9上执行此操作,如果您正在使用任何其他发行版,我建议您查看simple-obfs github

首先,我们需要安装以下软件包

sudo apt install --no-install-recommends build-essential autoconf libtool libssl-dev libpcre3-dev libev-dev asciidoc xmlto automake git

接下来,我们需要克隆github存储库并使用以下命令编译simple-obfs。

git clone https://github.com/shadowsocks/simple-obfs.git
cd simple-obfs
git submodule update --init --recursive
./autogen.sh
./configure && make
sudo make install

接下来我们需要配置shadowsocks来实际使用simple-obfs。为此,请将以下内容添加到shadowsocks配置文件的底部。

"plugin": "obfs-server",
"plugin_opts": "obfs=tls;fast-open"

下一步是在您的客户端启用它。

Android的

在Android上,你需要下载simple-obfs应用程序。您可以从Play商店或直接从github获取应用程序

安装应用程序后,然后继续使用shadowsocks应用程序。在查找插件选项的单个服务器的设置的底部,您可以在其中启用simple-obfs

使-简单obfs

然后,您可以更改simple-obfs插件的设置。如果您正在阅读本指南,我建议使用tls与http相比较。用于伪装流量的域名可以是您真正喜欢的任何域名,但bing.com是一个很好的默认值。

简单obfs的设置

Linux的

Linux上客户端的安装过程与在服务器上安装客户端的过程相同,因为它包括服务器和客户端组件。要启用simple-obfs,请将以下行添加到shadowsocks配置中。

"plugin": "obfs-local",
"plugin_opts": "obfs=tls;obfs-host=www.bing.com"