如何在Amazon EC2上设置Shadowsocks服务器

在本教程中,我将向您展示如何在Amazon EC2上设置Shadowsocks服务器。如果您有兴趣,我们还有一个关于在DigitalOcean上设置Shadowsocks服务器的教程

请注意:对于那些对使用Linux命令,设置Linux服务器,使用SSH和使用vi编辑器等事情感到满意的技术人员(或女士)来说,这是一个非常高级的教程。还要求您已经拥有亚马逊网络服务(AWS)帐户。

就成本而言,由于AWS为新的EC2微实例提供1年免费等级,如果您的AWS账户符合免费等级,您可以在AWS上免费托管您的Shadowsocks服务器一整年。否则,每月的常规费用约为16美元。如果您认为成本太高,您还可以尝试在DigitalOcean上托管Shadowsocks服务器,每月5美元。

如果您不是一个技术娴熟的人,并且您只是想找到一种方法来访问来自中国的被阻止的网站

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

第1部分。创建AWS EC2实例。

在此步骤中,我们将创建一个运行Ubuntu的AWS EC2微实例。对于启动新实例,AWS允许您从多个服务器位置中进行选择。由于我认为你最感兴趣的是在中国使用Shadowsocks,我建议选择亚太地区(东京),因为它可能是中国最好的国际EC2服务器位置。

首先,让我们转到AWS管理控制台并使用您的AWS账户登录。之后,您需要从顶部导航栏的下拉菜单中选择东京地区。然后单击“EC2”链接(在该页面的左上角位置)。

进入EC2管理控制台后,单击蓝色按钮“启动实例”。

launch_instance

然后,您将看到可供选择的亚马逊机器映像(AMI)列表。找到一个名为“Ubuntu Server 14.04 LTS(HVM)”并单击“选择”。(如果您正在阅读本文时已经有更新版本的Ubuntu服务器可用,请选择较新版本)。

SELECT_TYPE

然后,系统会要求您选择实例类型。选择第一个,t2.micro,因为它是最便宜的,它足够好或Shadowsocks服务器。此外,它可能是免费级别的合格,这意味着您可以免费使用长达1年!

instance_size

然后单击下面标有“Review and Launch”的蓝色按钮。在下一个屏幕上,您将看到一条警告,指出您的安全组对全世界开放。让我们为我们的实例创建一个新的安全组。找到“编辑安全组”链接(见下图)并单击它:

edit_security_group

让我们创建一个名为“shadowsocks”的新安全组。您可以单击“添加规则”按钮添加新规则。只需使该组具有以下配置即可。然后单击标有“Review and Launch”下方的蓝色按钮。

new_security_group

然后,您可以单击标有“启动”的蓝色按钮。然后,您将看到一个类似下面的弹出窗口,询问您密钥对。如果您之前已经创建了一个密钥对,并且该密钥对仍可在您的计算机上使用,则可以选择“使用现有密钥对”。否则,您可以创建新密钥对。我将跳过密钥对创建步骤。确保将新密钥对保存在安全的地方。

create_key

完成密钥对后,单击蓝色按钮“Launch Instance”。如果一切正常,您将看到一条消息“您的实例正在启动”。单击下面的“查看实例”按钮以查看新创建的实例。

您将在该页面上看到新实例。如果单击该实例左侧的复选框,您将在实例列表下方看到详细信息,例如实例ID,私有DNS,私有IP等。其中,我们需要两条信息:Public IPPrivate IP。复制并粘贴这两个IP以供以后使用。

虽然公共IP可以工作,但我建议你获得一个新的弹性IP并使用该IP而不是新服务器的默认公共IP。这是因为将来如果您停止实例然后再次启动它,您可能会发现公共IP地址已更改,然后您必须相应地更改Shadowsocks客户端的配置。因此,静态IP会更好。因为它很稳定 要设置弹性IP,请单击AWS EC2控制台左侧导航栏中“网络和安全性”下的“弹性IP”链接。然后单击“分配新地址”,然后您可以将新IP与新实例相关联。从那时起,使用此新IP作为服务器的公共IP,不要使用新实例附带的公共IP。

第2部分。连接到新的EC2实例以设置Shadowsocks

选中新实例的复选框后,单击标有“连接”的页面顶部的按钮。您将看到一个弹出窗口,显示有关如何使用SSH连接到您的实例的详细信息。

现在,让我们在该窗口中使用SSH命令提供SSH到新创建的Ubuntu实例。让我跳过如何从您的计算机等SSH到服务器的说明,因为这将是另一个长篇教程。基本上,您可以在Windows机器上使用Mac或Putty上的终端应用程序。SSH推荐看起来像这样:

ssh -i“my_key_pair.pem” ubuntu @ {your_public_IP}

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

第一:

$ sudo su

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

$ apt-get update

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

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

现在安装了Shadowsocks,让我们安装M2Crypto以加快加密速度,并使用以下命令安装一个名为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创建一个配置文件。让我们使用vi编辑器创建一个新文件:

$ vi /etc/shadowsocks.json

该文件应包含以下内容:

{
    “服务器”:“your_private_ip”
     “SERVER_PORT”:8000,
     “LOCAL_PORT”:1080,
     “密码”:“your_passwd”
     “超时”:600,
     “方法”: “chacha20”
}

您需要将“your_private_ip”替换为EC2实例的私有IP地址(而不是公共IP!),并将“your_passwd”替换为真实且更好的密码。

现在让我们尝试使用以下命令启动shadowsocks服务器:

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

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

$ less /var/log/shadowsocks.log

如果日志文件中没有错误消息,则表示没问题。将来,如果要停止服务器,只需运行“ssserver -c /etc/shadowsocks.json -d stop”。如果要重新启动服务器,请运行“ssserver -c /etc/shadowsocks.json -d restart”。

现在让我们配置服务器,以便在每次服务器重启后,我们的Shadowsocks服务器将自动启动。为此,让我们使用vi编辑以下文件:

$ vi /etc/rc.local

在此文件中,将以下行添加到底部,就在“exit 0”行之前:

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

在这一点上,我们差不多完成了!如果您使用Shadowsocks客户端连接到我们新创建的服务器,请确保使用公共IP(不是您刚刚添加到配置文件中的私有IP)并确保指定正确的端口号(在我们的示例中为8000),以及作为正确的密码。如果一切正确,你会看到Shadowsocks工作!

但是,我们还没有宣布成功。让我们做一些服务器优化来加速我们的Shadowsocks服务器。

第3部分.Shadowsocks服务器优化

首先,让我们增加打开文件描述符的最大数量,以便我们的服务器可以处理数千个并发连接。使用vi执行此操作:

$ 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 = hybla

现在运行以下命令以使我们的更改生效:

$ sysctl -p

现在让我们再次启动Shadowsocks服务器:

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

现在我们有一个更强大的服务器。但是,我们不要止步于此。让我们做一些调整,让我们的Shadowsocks服务器超级快!

第4部分。使用ServerSpeeder加速Shadowsocks服务器

更新:截至2016年初,ServerSpeeder已停止新用户注册以及新安装。因此,这部分不再相关。请跳过它并转到第5部分。

为了加速我们的Shadowsocks服务器,让我们使用名为ServerSpeeder(锐速)的服务。目前它的网站是中文的,所以如果你不懂中文,你可能需要弄清楚。您需要 在该网站上注册一个免费帐户。另一件事是,您需要仔细检查以确保SeverSpeeder支持您的服务器系统。为此,您可以检查ServerSpeeder  支持的系统列表

我们的新服务器最有可能得到支持。所以我们在服务器上设置ServerSpeeder。SSH到我们的服务器并运行以下命令:

$ wget http://my.serverspeeder.com/d/ls/serverSpeederInstaller.tar.gz
$ tar xzvf serverSpeederInstaller.tar.gz
$ bash serverSpeederInstaller.sh

运行安装程序时,系统将询问您的电子邮件地址和密码。只需使用您在注册ServerSpeeder的免费帐户时输入的电子邮件地址和密码即可。在安装过程中,如果结果是不支持您的Ubuntu服务器,您将看到一条错误消息,您可能会考虑将内核版本更改为ServerSpeeder支持的版本,然后再次运行安装程序。

此外,在ServerSpeeder安装过程中,您将被问到几个选项,只需使用默认值,除了这个选项:“在Linux启动时自动加载ServerSpeeder [n]”,您应该键入“y”到回答是的。

现在我们差不多完成了。让我们使用vi更改ServerSpeeder的一些配置值:

$ vi / serverspeeder / etc / config

我们需要更改以下三个值:

RSC = “1”
advinacc = “1”
maxmode = “1”

现在让我们重新启动ServerSpeeder:

service serverSpeeder restart

最后,我们完成了Shadowsocks服务器的安装和优化。

第5部分。连接到Shadowsocks服务器

现在我们已经达到了轻松的部分。我们需要使用客户端连接到我们的新Shadowsocks服务器,以享受更好的互联网体验。这一步没什么好说的。只需访问Shadowsocks.org的客户端下载页面即可下载客户端并将其安装在您的系统上。然后你就可以开始使用Shadowsocks了。

请享用!

技巧1:如何为Shadowsocks配置多个用户

从配置文件中可以看出,我们当前的Shadowsocks服务器只支持一次登录,即一个用户名和一个密码。如果要设置多个使用不同密码的用户,可以通过设置多个端口(每个端口使用不同的密码)来实现。下面是一个配置文件示例:

{
    “服务器”:“your_private_ip”
    “port_password”:{
        “8381”:“password1”,
        “8382”:“password2”,
        “8383”:“password3”,
        “8384”:“password4”
    },
    “LOCAL_PORT”:1080,
    “超时”:600,
    “方法”: “chacha20”
}

技巧2:使用htcp进行拥塞控制

请记住,当我们设置/etc/sysctl.conf文件时,我们添加的最后一行是:

net.ipv4.tcp_congestion_control = hybla

hybla适用于高延迟连接。但由于中国和日本之间的延迟通常较低,我们可以改为使用另一种称为htcp的拥塞控制方法来进一步加速我们的Shadowsocks连接。让我们用这个命令来设置htcp:

$ modprobe tcp_htcp

然后,您可以使用以下命令来验证:

$ sysctl net.ipv4.tcp_available_congestion_control

您应该在该命令的输出中看到htcp。

现在让我们更新/etc/sysctl.conf文件:

$ vi /etc/sysctl.conf

并将“net.ipv4.tcp_congestion_control”更改为:

net.ipv4.tcp_congestion_control = htcp

然后运行以下命令以使更改生效:

$ sysctl -p