如何在DigitalOcean上设置Shadowsocks服务器

这是关于如何在DigitalOcean上设置Shadowsocks服务器的教程。如果您有兴趣,我们还有另一个关于在Amazon AWS EC2上设置Shadowsocks服务器的教程。

虽然在DigitalOcean上设置Shadowsocks可能非常简单并且可能只需要20分钟,但这个过程确实需要您具备一些技术技能,例如使用Linux命令,SSH到远程Linux服务器,使用命令行文本编辑器(例如vi)编辑文件等

如果这些听起来太难了,您可以考虑使用Shadowsocks替代方案,例如VPN。

如果您正在寻找付费的Shadowsocks服务,您可以尝试12VPN,它提供Shadowsocks作为其VPN计划的一部分。

为什么选择DigitalOcean来托管您的Shadowsocks服务器

DigitalOcean是一家云托管服务提供商,近年来变得非常受欢迎。它提供价格低廉的SSD服务器,起价为每月5美元。与Amazon AWS EC2相比,在Digital Ocean上设置Shadowsocks服务器更容易,因为您可以跳过诸如设置安全组,配置弹性IP地址等内容。

根据我们的经验,您可以选择最便宜的DigitalOcean主机方案(每月5美元)来托管您的Shadowsocks服务器,它运行良好。对于此计划,您将获得512 MB RAM,20 GB SSD磁盘空间和1TB每月传输。

对于OS,我们将在本教程中使用Ubuntu。

对于服务器位置,如果您将使用来自中国的Shadowsocks,我们建议您选择DigitalOcean的旧金山数据中心,因为它似乎提供了最佳速度。

使用Digital Ocean注册帐户

如果您还没有DigitalOcean帐户,首先您应该注册以获得一个帐户。对于新用户,DigitalOcean提供免费的10美元信用额度。

在DigitalOcean创建Droplet

登录DigitalOcean帐户后,单击顶部导航栏上的“Droplet”链接,然后单击顶部的“Create Droplet”按钮。然后,系统会要求您为新液滴选择选项。我们建议您使用以下选项:

  • 选择图像:选择Ubuntu。
  • 选择尺寸:选择5美元/月(如果您决定这样做,则选择较大的尺寸)
  • 选择数据中心区域:选择旧金山(最适合从中国连接)
  • 选择其他选项:none(除非你想添加一些)
  • 添加SSH密钥:添加新SSH密钥或选择现有密钥

在DigitalOcean上设置Shadowsocks:数字海洋液滴选项。

然后单击“创建”按钮以创建您的液滴。

完成后,您将能够在DigitalOcean控制面板的Droplets部分下看到新创建的Droplet。除了Droplet的名称,您还将看到此Droplet的IP地址。您可以使用此IP地址通过SSH连接到DigitalOcean服务器。稍后您还将使用此IP地址配置Shadowsocks客户端。

连接到DigitalOcean服务器以设置Shadowsocks

现在我们已经运行了Digital Ocean服务器,我们需要连接它并设置Shadowsocks。您可以通过两种方式连接到服务器:使用DigitalOcean提供的基于Web的访问控制台,或使用本地计算机上的终端通过SSH连接到服务器。我们建议使用SSH,因为使用访问控制台很难复制和粘贴等。

现在,让我们使用以下命令SSH到您的DigitalOcean服务器:

ssh root @ {your_droplet's_IP_address}

连接到服务器后,运行以下命令:

首先,如果您的登录帐户不是root:

$ sudo su

然后让我们更新我们的机器:

$ apt-get update

然后让我们使用以下两个命令安装shadowsocks:

$ apt-get install python-pip
$ pip安装shadowsocks

Shadowsocks支持许多加密方法。为了优化性能,我们建议使用chacha20加密方法。但是,我们需要先安装它。以下是设置chacha20加密的命令:

$ apt-get install python-m2crypto
$ apt-get install build-essential
$ wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
$ tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
$ ./configure && make && make install
$ ldconfig

现在让我们为Shadowsocks创建一个配置文件,它应该被创建为“/etc/shadowsocks.json”。让我们使用vi编辑器来执行此操作:

$ vi /etc/shadowsocks.json

将以下内容添加到shadowsocks配置文件中:

{
    “服务器”:“your_droplet's_IP_address”
    “SERVER_PORT”:8000,
    “LOCAL_PORT”:1080,
    “密码”:“your_password”
    “超时”:600,
    “方法”: “chacha20”
}

请注意,上面的配置只为Shadowsocks服务器打开一个端口(8000),它只支持一次登录。如果要设置多个使用不同密码的用户,可以通过设置多个端口(每个端口使用不同的密码)来实现。下面是一个配置文件示例:

{
    “服务器”:“your_droplet's_IP_address”
    “port_password”:{
        “443”:“password1”,
        “8000”:“password2”,
        “8383”:“password3”,
        “8384”:“password4”
    },
    “LOCAL_PORT”:1080,
    “超时”:600,
    “方法”: “chacha20”
}

现在我们已经准备好了。我们可以使用以下命令启动新的Shadowsocks服务器:

$ ssserver -c /etc/shadowsocks.json -d start

如果你想仔细检查一切是否正常,你可以查看Shadowsocks的日志文件:

$ less /var/log/shadowsocks.log

如果您在Shadowsocks日志文件中没有看到任何错误消息,那么您没问题。

将来,如果要停止Shadowsocks服务器,请使用以下命令:“ssserver -c /etc/shadowsocks.json -d stop”。如果要重新启动Shadowsocks服务器,请使用以下命令:“ssserver -c /etc/shadowsocks.json -d restart”。

我们还需要设置一件事。我们需要确保每次服务器重新启动时,我们的Shadowsocks服务器都会自动启动。为此,让我们使用vi编辑以下文件:

$ vi /etc/rc.local

在打开的文件中,在“退出0”之前将以下行添加到底部:

/ usr / bin / python / usr / local / bin / ssserver -c /etc/shadowsocks.json -d start

凉。现在我们在DigitalOcean上运行了一个Shadowsocks服务器!

如果你想在这里停下来,那就完全没了问题。您现在可以在DigitalOcean上享受新创建的Shadowsocks服务器并根据需要使用它。

但是,让我们继续介绍Shadowsocks服务器优化的一些技巧。

Shadowsocks服务器优化

默认情况下,我们的Shadowsocks服务器可能无法处理大量流量。如果您希望它能够处理大量并发连接,则需要增加打开文件描述符的最大数量。现在让我们这样做:

$ vi /etc/security/limits.conf

将以下两行添加到该文件:

* soft nofile 51200
* hard nofile 51200

注意:不要跳过“*”符号,因为它们是行的一部分。之后,让我们暂时停止Shadowsocks服务器:

$ ssserver -c /etc/shadowsocks.json -d stop

然后设置ulimit:

$ ulimit -n 51200

然后让我们通过编辑/etc/sysctl.conf文件来调整内核参数:

$ 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 = 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 =立方体

要使我们的更改生效,请运行以下命令:

$ sysctl -p

现在是时候重新启动Shadowsocks服务器了:

$ ssserver -c /etc/shadowsocks.json -d start

连接到Shadowsocks服务器

现在您已经在DigitalOcean上成功设置了Shadowsocks服务器,您可以使用Shadowsocks客户端连接到它。请参考Shadowsocks.org关于客户端设置等的官方文档。我们在这里包含详细信息对我们来说太过分了。配置客户端时,只需确保使用正确的IP地址,端口号,密码以及在Shadowsocks配置文件中设置的加密方法。

一些附加说明

对于Shadowsocks服务器优化,曾经有另一个技巧,即使用名为ServerSpeeder的第三方软件来加速服务器。在我们的Shadowsocks服务器上启用ServerSpeeder后,我们看到了大幅提升。但是,遗憾的是,ServerSpeeder在2016年初停止接受新的注册和安装。如果您有一个旧的ServerSpeeder帐户仍允许您在新服务器上安装,那么您一定要将它安装在托管Shadowsocks服务器的DigitalOcean Droplet上。使用ServerSpeeder的另一个技巧是它只支持有限数量的Linux内核。服务器的内核可能太新,无法支持ServerSpeeder。要解决此问题(假设您确实可以在服务器上安装ServerSpeeder),可以将内核更改为旧内核。为此,