服务端搭建Shadowsocks和V2Ray详解

今天是柏林墙倒塌三十周年,为了纪念这个伟大的日子,分享一下shadowsocks-libev和v2ray的搭建教程,谁叫俺们的墙越来越高了呢?shadowsocks用的是最新源码编译和官方脚本安装两种方法,至于v2ray就直接用官方脚本部署了。

服务端系统为Ubuntu18.04

登陆vps:ssh root@vps ip

更改一下时区: timedatectl set-timezone Asia/Shanghai

部署Shadowsocks-libev服务端

为什么要部署libev版本的服务端呢?因为就这个版本还在更新,而且占用小,下面给出两种安装部署方法,一是官方脚本直接安装,二是最新源码进行编译安装,二选一。

官方脚本安装

1
2
3
4
5
6
7
8
9
10
11
12
mkdir ./build-area

cd build-area

#下载脚本
wget https://github.com/shadowsocks/shadowsocks-libev/raw/master/scripts/build_deb.sh

#给运行权限
chmod +x build_deb.sh

#部署
./build_deb.sh all

官方这个脚本带obfs也一起安装了,由于obfs已经停更,装不装是无所谓的,填上config.json配置文件也就可以运行了。

运行命令:ss-server -c /etc/shadowsocks-libev/config.json
或者:systemctl start shadowsocks

上面是第一种方法,俺用这种方法倒没感觉什么缺陷,就是shadowsocks-libev版本号好像不是最新的,下面的方法就是用最新源码进行编译。

官方源码编译,安装

编译前先更新一下系统,避免不必要的麻烦

apt update && apt upgrade

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#下载源码
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev

#更新子模块
git submodule update --init --recursive

#安装依赖
apt-get install --no-install-recommends autoconf automake \
debhelper pkg-config asciidoc xmlto libpcre3-dev apg pwgen rng-tools \
libev-dev libc-ares-dev dh-autoreconf libsodium-dev libmbedtls-dev

#编译,安装
./autogen.sh && ./configure --prefix=/usr && make

make install

配置文件

mkdir -p /etc/shadowsocks-libev

vi /etc/shadowsocks-libev/config.json

新建,修改配置如下:

1
2
3
4
5
6
7
8
9
10
# vi /etc/shadowsocks-libev/config.json

{
"server":["[::0]","0.0.0.0"],
"server_port":1024,
"password":"password",
"timeout":600,
"method":"aes-256-gcm",
"fast_open":true
}

多用户配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 多用户manager.json文件
# vi /etc/shadowsocks-libev/manager.json

{
"server":["[::0]","0.0.0.0"],
"port_password":{
"8388":"password", # 端口号与密码
"8389":"password"
},
"timeout":600,
"method":"chacha20-ietf-poly1305",
"fast_open":true
}

启动:ss-server -c /etc/shadowsocks-libev/config.json

多用户启动:ss-manager -c /etc/shadowsocks-libev/manager.json

上面是前台运行,要转到后台运行,新建一个守护进程就好了,如下:

使用systemd守护进程

新建shadowsocks.service文件

vi /etc/systemd/system/shadowsocks.service添加内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Shadowsocks Server
After=network.target

[Service]
ExecStart=/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json
#下面是多用户的启动项
#ExecStart=/usr/bin/ss-manager -c /etc/shadowsocks-libev/manager.json
Restart=on-abort

[Install]
WantedBy=multi-user.target

完成后,就可以启动Shadowsocks了。

Systemctl重载命令: systemctl daemon-reload

启动命令: systemctl start shadowsocks

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
systemctl start shadowsocks   //启动

systemctl stop shadowsocks //停止

systemctl restart shadowsocks //重新启动

systemctl status shadowsocks //查看状态

systemctl enable shadowsocks //添加开机自启动

cd shadowsocks-libev && make uninstall //卸载然后删除配置文件

ss-server -c /etc/shadowsocks-libev/config.json //前台启动

更新shadowsocks

1
2
3
4
5
6
7
8
9
systemctl stop shadowsocks

cd shadowsocks-libev
git pull
./configure
make
make install

systemctl start shadowsocks

开启TCP Fast Open

vi /etc/sysctl.conf,加入如下一行

net.ipv4.tcp_fastopen = 3

执行如下命令使其生效,

sysctl -p

当然最后别忘了,在ss配置文件cofing.json里面添加:

"fast_open":true

注:目前Linux内核都是默认开启了TCP BBR,所以大家也不必多费手脚了!

搭建v2ray服务端

v2ray安装

利用官方脚本搭建v2ray服务端,记下常用命令和自己的服务端配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#下载脚本
wget https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh

#安装v2ray
bash install-release.sh

#启动v2ray
systemctl start v2ray

#更新服务端
bash install-release.sh

#移除v2ray
bash install-release.sh --remove

在首次安装完成之后,V2Ray 不会自动启动,需要手动运行下面启动命令。而在已经运行 V2Ray 的 VPS 上再次执行安装脚本,安装脚本会自动停止 V2Ray 进程,升级 V2Ray 程序,然后自动运行 V2Ray。在升级过程中,配置文件不会被修改。

启动命令: systemctl start v2ray

v2ray配置文件

配置文件路径 /etc/v2ray/config.json,建议就用默认生成的配置,需要的话,可以修改一下uuid或者端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
"inbounds": [{
"port": 30032,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "241b8c56-1707-4b62-958c-ae8b4c0d90af",
"level": 1,
"alterId": 64
}
]
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}

常用命令

1
2
3
4
5
6
7
8
9
10
11
systemctl start v2ray  //启动

systemctl stop v2ray //停止

systemctl status v2ray //查看状态,runing表示成功运行

systemctl reload v2ray //重新载入

systemctl restart v2ray //重新启动

systemctl enable v2ray //添加开机自启动

彻底删除v2ray

停用并卸载服务

1
2
systemctl stop v2ray
systemctl disable v2ray

删除配置残留

1
2
3
4
5
rm -rf /etc/v2ray/*  //配置文件
rm -rf /usr/bin/v2ray/* //程序
rm -rf /var/log/v2ray/* //日志
rm -rf /lib/systemd/system/v2ray.service //systemd 启动项
rm -rf /etc/init.d/v2ray //sysv 启动项

关于本地端的应用,俺主要讲一下iOS端,因为其他Windows,Android ,Linux端官方GitHub都能找到。iOS国内只有Outline,找个美区账号可以下载 Shadowrocket ,Quantumult X,Kitsunebi ,91VPN,ConnectSPro .

参考: