Vultr 搭建 Shadowsocks

在 Vultr 上搭建 Shadowsocks 服务,并使用 V2Ray 进行混淆

注册 Vultr 账号

Vultr

购买 VPS

根据自己的需要选择

安装 Shadowsocks-libev

1.连接服务器

1
ssh root@服务器IP地址

2.安装 shadowsocks-libev:

1
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh

3.更改权限

1
chmod +x shadowsocks-libev.sh

4.运行安装

1
./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log

注意

虽然此时 Shadowsocks-libev 已经安装就绪,但请先不要使用。
在使用 V2Ray 进行混淆之前使用 Shadowsocks-libev 会有极大可能被屏蔽端口。
可以使用命令行工具测试端口的可访问性,如果无法访问请修改 Shadowsocks-libev 配置文件中的端口

从 Freenom 获取免费域名

Freenom

使用 CloudFlare 的 CDN 服务

CloudFlare

1.注册账号之后将从 Freenom 获取的域名添加到 CloudFlare 管理
2.查看 CloudFlare 要求设置的 NS 地址
3.在 Freenom 的管理面板中将 NameServers 设置为 CloudFlare 要求设置的 NS 地址
4.在 CloudFlareDNS 中添加一条 A 记录
5.将刚添加的解析记录的 Proxy status 设置为 DNS only
6.在 CloudFlareSSL/TLS 中将 SSL/TLS 设置为 Full (strict)
7.在 CloudFlare 的个人中心查看 Email AddressGlobal API Key 信息,并记录备用

安装 Golang

1.下载

1
cd ~ && curl -O https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz

2.解压

1
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz

3.添加环境变量

1
vim ~/.bash_profile

将以下两行内容添加到末尾

1
2
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

4.刷新环境变量

1
source ~/.bash_profile

安装 Git

1
yum install git wget vim -y

安装 v2ray-plugin

1.下载源码

1
git clone https://github.com/shadowsocks/v2ray-plugin.git

2.编译

1
2
cd v2ray-plugin
go build

3.移动文件

1
cp v2ray-plugin /usr/bin/v2ray-plugin

申请免费证书

自动续期

1
2
3
4
curl https://get.acme.sh | sh
export CF_Email="CloundFlare Email Address"
export CF_Key="CloundFlare Global API KEY"
~/.acme.sh/acme.sh --issue --dns dns_cf -d 域名

手动续期

1
2
3
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --issue --dns -d 域名 \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

这里需要将控制台输出的 TXT 记录手动添加到 NDS 之后再继续执行后续脚本

1
2
~/.acme.sh/acme.sh --renew -d 域名 \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

使用证书

把证书链接放到 /etc/shadowsocks-libev/ 目录

1
ln -s ~/.acme.sh/域名 /etc/shadowsocks-libev/域名

配置 Shadowsocks-libev

1.修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"server":"0.0.0.0",
"nameserver": "8.8.8.8",
"server_port":端口号,
"password":"密码",
"timeout":300,
"user":"nobody",
"method": "xchacha20-ietf-poly1305",
"reuse_port": true,
"no_delay": true,
"fast_open":false,
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp"
}

2.设置开机自启

创建一个 Service 服务文件

1
vim /etc/systemd/system/ss.service

添加内容

1
2
3
4
5
6
7
8
[Unit]
Description=Shadowsocks Server
After=network.target
[Service]
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/config.json -p 443 --plugin /usr/bin/v2ray-plugin --plugin-opts "server;tls;fast-open;host=域名;cert=/etc/shadowsocks-libev/域名/fullchain.cer;key=/etc/shadowsocks-libev/域名/域名.key;loglevel=none"
Restart=on-abort
[Install]
WantedBy=multi-user.target

运行服务

1
2
systemctl daemon-reload
systemctl restart ss

查看服务状态

1
systemctl status ss

配置客户端

PC

1.从 v2ray-plugin 下载 v2ray-plugin-win 文件并解压到 Shadowsocks 目录
2.设置服务器地址为服务器设置的 域名
3.设置端口为 443
4.密码和加密方式与服务器保持一致
5.插件程序填写 v2ray-plugin 文件的名字: v2ray-plugin-win
6.插件选项 host=域名;tls

Android

和 PC 设置类似

1.从 github 或 谷歌应用市场下载安装 v2ray-plugin-android
2.插件的 Trasport mode 设置为 websocket-tls
3.插件的 Hostname 设置为 域名

使用 Google BBR

参见 How to Deploy Google BBR on CentOS 7

常用命令

卸载 shadowsocks-libev

1
./shadowsocks-libev.sh uninstall

打开配置文件

1
vi /etc/shadowsocks-libev/config.json

修改文件

1
i

结束修改

1
esc

保存并退出

1
:wq

不保存退出

1
:q

启动

1
/etc/init.d/shadowsocks start

停止

1
/etc/init.d/shadowsocks stop

重启

1
/etc/init.d/shadowsocks restart

运行状态

1
/etc/init.d/shadowsocks status

检查端口是否开放

1
2
firewall-cmd --query-port=2000/tcp
firewall-cmd --query-port=2000/udp

开放端口

1
2
firewall-cmd --add-port=2000/tcp --permanent
firewall-cmd --add-port=2000/udp --permanent

重载防火墙

1
firewall-cmd --reload

关闭开放的端口

1
2
firewall-cmd --permanent --remove-port=2000/tcp
firewall-cmd --permanent --remove-port=2000/udp

测试端口

1
telnet 服务器IP地址 2000

删除申请证书时产生的配置文件

1
rm -rf ~/.acme.sh