Vultr 上安装并配置一台VMESS/v2ray 服务器

VMess 协议是由 V2Ray (科学上网软件)创立并使用于 V2Ray 的加密传输协议,如同 Shadowsocks 一样为了对抗审查的深度包检测而研发的。在 V2Ray 上客户端与服务器的通信主要是通过 VMess 协议通信。

本文中采用Vultr VPS,一款性能优越、配置的VPS, 其拥有广泛的数据中心分布、丰富的功能和便捷的支付方式,成为众多用户的首选。无论是个人学习、小型项目还是大型企业应用,Vultr VPS 都能提供稳定可靠的服务支持。

拥有一台Vultr VPS可以做很多事情,例如:

更多玩法等待您来解锁。

本文主要讲解在 Vultr VPS上,如何使用自动化脚本和手动两种方式,安装并配置一台 v2ray 服务器(也称为 vmess server)。以及如何通过v2rayA, v2rayN, v2RayNG连接 v2ray 服务器并访问google和chatGPT。

1. 注册 Vultr 账号

访问https://www.vultr.com进入注册页面,输入邮箱、密码,点击“Create account”按钮。(密码需要至少一个大写字母一个小写字母,长度 10 位数以上。)

Vultr 注册

Vultr 会给注册邮箱发一封验证邮件,进入邮箱,拷贝验证码,再回到 Vultr 注册页面进行验证。

注册完成后进入账号设置页面,设置账号,主要分三个步骤,如下图所示,首先绑定信用卡,然后完善用户信息,最后就可以开始创建实例了。

Vultr 设置账号

进入设置界面,完成第一步“Add a Payment Method & Pre-Fund Your Account”也就是绑定信用卡之后就可以看到赠送的 300 美金试用金到账。

访问 account => make a payment 就可以看到 300 美金 到账

Vultr 试用金

从上图可以看到,Vultr 不仅支持信用卡付款,还支持 Paypal, 加密货币,Alipay, Wire Transfer, 礼品代码等。

2. 更新 Profile

更新 profile, 填写个人信息,地址,公司信息

更新 Vultr Profile

3. 创建 VPS

完成以上注册流程,我们就可以开始创建 VPS 了。

点击左边”Products”,再点击右侧”Deploy +” 进入创建实例界面。

选择“Cloud Compute - Shared CPU”。

创建 Vultr Cloud Compute - Shared CPU

选择 location,总共有 30 多个 location 可供选择。亚洲区域选择新加坡,首尔,东京,连接延迟都比较低。

创建 Vultr Cloud Compute - Select Location

选择操作系统的版本,操作系统版本可以选择 debian 系列的 linux, 或者 Redhat 系列的 linux 都可以,本教程都支持。

但是本教程实际使用的是 Almalinux 9.x 版本。

创建 Vultr Cloud Compute - Select OS

选择套餐,根据自己的喜好,本教程使用的是最低规格的服务器,1U1G, 价格是 6 美金/月。

可以看到,服务器配置是 1U1G, 存储是 25GB, 免费的网络流量是 2TB, 另外它会绑定两个公网 IP 地址,这些都是免费的。

创建 Vultr Cloud Compute - select plan

选择 Additional features

  1. 自动备份功能每月会收费 1.2 刀,建议取消,我们只是部署一个 v2ray 代理服务器,存储的数据没有那么重要,出现问题,按照教程重新安装一遍即可,备份的钱没有必要花;

  2. 选择”Enable IPV6”,这样就拥有双 IP。

  3. Limit user login 建议选上,这样比较安全,VPS 暴露在网上,经常会被黑客扫描,如果使用默认 root 用户,很容易受到攻击,成为肉鸡。
    默认的用户 root 权限太大,而且很容易被黑客知道,最好使用 Limit user login。

    创建 Vultr Cloud Compute - additional feature

  4. 出于安全性考虑,SSH Key 如果会配置一定要配置上,篇幅有限,这里不做展开讲解了。

  5. 给 VPS 取一个容易区分的名字。

  6. 然后点击“Deploy Now”按钮。

创建 Vultr Cloud Compute - other features etc

4. 登陆 VPS

Vultr Cloud Compute - find public IP

单击节点进入,进入 vps 详情界面,可以找到登陆 VPS 所需详细信息
Vultr Cloud Compute - find public IP

Windows 系统上可以使用 X-shell 工具,或任何本机存在的 shell 终端, 或者 putty 连接 VPS。

Linux 系统直接打开命令行终端远程连接 VPS 即可。

登陆 Vultr Cloud Compute

5. VPS 时间校准

对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在 90 秒之内就没问题。

在联网情况下,直接启动 chronyd 系统服务,并设定为开机启动

1
2
3
4
5
$ sudo systemctl enable --now chronyd.service

# 查看当前时间
$ date -R
Thu, 05 Sep 2024 00:07:48 +0800

6. 下载并安装 v2ray server

在 Linux 操作系统, V2Ray 的安装有脚本安装、手动安装、编译安装 3 种方式,选择其中一种即可,本指南提供使用使用脚本安装的方法 以及手动安装方法,推荐使用脚本安装,该脚本由 V2Ray 官方提供。该脚本仅可以在 Debian 系列或者支持 Systemd 的 Linux 操作系统使用。

6.1. 脚本安装 v2ray server (推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

curl --output /tmp/v2ray/ https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
sudo bash /tmp/v2ray/install-release.sh

# 默认使用nobody运行v2ray,最好建一个专门的用户用于运行v2ray
sudo groupadd v2ray
sudo useradd -s /bin/false -g v2ray -d /home/v2ray v2ray
# 将日志目录的owner修改为v2ray
sudo chown -R v2ray:v2ray /var/log/v2ray/

# 将service中的user由nobody修改为v2ray
sudo sed -e "s/^User.*$/User=v2ray/" -i /etc/systemd/system/v2ray.service
sudo sed -e "s/^User.*$/User=v2ray/" -i /etc/systemd/system/v2ray@.service

sudo systemctl daemon-reload


6.2. 手动安装 v2ray server

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
33
34
35
36
37
38
39
40
41
42

# 创建v2ray用户和组,在新版本的v2ray中需要使用nobody用户来运行,
# 但是实践中创建一个专有用户来运行v2ray更加安全
# 以下命令创建一个新的 v2ray 用户,使其成为 v2ray 组的成员,并为其分配/home/v2ray 的主目录,并禁止登录该帐户。

sudo groupadd v2ray
sudo useradd -s /bin/false -g v2ray -d /home/v2ray v2ray


## 下载v2ray-core,并保存到tmp目录
wget -O /tmp/v2ray-linux-64.zip https://github.com/v2fly/v2ray-core/releases/download/v5.16.1/v2ray-linux-64.zip

# 将其解压到/tmp/v2ray-core
unzip /tmp/v2ray-linux-64.zip -d /tmp/v2ray-core

# 将v2ray可执行文件拷贝到/usr/local/bin
sudo cp /tmp/v2ray-core/v2ray /usr/local/bin/v2ray

# 将.dat文件拷贝到/usr/local/share/v2ray/
sudo mkdir -p /usr/local/share/v2ray/
sudo cp /tmp/v2ray-core/*dat /usr/local/share/v2ray/

# 将配置文件拷贝到 /usr/local/etc/v2ray
sudo mkdir -p /usr/local/etc/v2ray
sudo cp /tmp/v2ray-core/config.json /usr/local/etc/v2ray

# 创建日志文件
sudo mkdir -p /var/log/v2ray/
sudo touch /var/log/v2ray/access.log
sudo touch /var/log/v2ray/error.log
# 将日志目录的owner修改为v2ray
sudo chown -R v2ray:v2ray /var/log/v2ray/

# 配置service
# 将service文件拷贝到系统的service目录下
sudo cp /tmp/v2ray-core/systemd/system/v2ray.service /etc/systemd/system/v2ray.service
sudo cp /tmp/v2ray-core/systemd/system/v2ray@.service /etc/systemd/system/v2ray@.service

# 将service中的user由nobody修改为v2ray
sudo sed -e "s/^User.*$/User=v2ray/" -i /etc/systemd/system/v2ray.service
sudo sed -e "s/^User.*$/User=v2ray/" -i /etc/systemd/system/v2ray@.service

7. 配置 vmess 服务器

1
2
3
4

# 修改配置文件
sudo vi /usr/local/etc/v2ray/config.json

以下配置中, clients.id 需要替换为不同的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
// vi /usr/local/etc/v2ray/config.json

{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbound": {
"port": 21212, //指定一个v2ray监听端口 ,防火墙需要放行此端口, 请将端口修改,请不要偷懒,这对安全性非常重要
"listen": "0.0.0.0",
"protocol": "vmess",
"settings": {
"auth": null,
"udp": false,
"ip": null,
"clients": [
{
"id": "7bcae0eb-dd43-4d58-a2c4-65028776c057", // <= 请将uuid替换成新的uuid, 配置客户端也要用到, 请不要偷懒,这对安全性非常重要
"alterId": 0, // 在最新版的vmess协议中,alterId必须设置为0, 否则存在被jing zhuan
"security": null
}
]
}
},
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}

原理简析:

根据上文给出的配置,在这里简单的介绍一下 V2Ray 的工作原理。

配置文件都由两部分内容组成: inbounds 和 outbounds。我们可以认为每一个 V2Ray 都是一个节点,inbound 是关于如何与上一个节点连接的配置,outbound 是关于如何与下一个节点连接的配置。对于V2Ray server节点,inbound 与客户端连接;outbound与目标网站连接。

在上例子中,服务器监听来自客户端访问21212的请求,两者采用vmess协议进行沟通。为了保证隐私安全,VMess 协议客户端使用 client id 进行加密, 所以客户端也需要配置相同的client id(后面客户端配置会讲到)服务器端收到数据包后使用client id 解密。解密后将数据包传递给outbond, outbound使用的是freedom协议,它会打开看用户的真实请求是。比如用户需要访问https://google.com,那么freedom协议就负责以https协议访问google,然后将获取的数据进行封装,交由inbound节点加密再返回给对端,也就是v2ray客户端。

8. 检验 v2ray server 配置

检验 config 是否有任何格式或语法错误

1
2
3
4
$ sudo /usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json
V2Ray 5.16.1 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.22.2 linux/amd64)
A unified platform for anti-censorship.
Configuration OK.

9. 开启并立即启动 v2ray 服务

1
2
3
4
5
6
7
8
9
10
11
12

# 设置开机启动,并立即启动v2ray服务
sudo systemctl enable --now v2ray.service

# 查看服务是否启动成功
systemctl status v2ray.service

# 如果开启, 需放行21212端口,与/usr/local/etc/v2ray/config.json中端口配置一致
sudo firewall-cmd --add-port=21212/tcp --permanent
sudo firewall-cmd --reload


10. 配置 v2ray 客户端

下面讲解如何配置 v2ray 客户端, 连接 v2ray 服务器。

10.1. 客户端安装可以参考

Windows 上安装与配置v2rayA - 鹏叔的技术博客

Android 上安装与配置v2rayNG - 鹏叔的技术博客

2024 科学上网秘籍:v2rayA 安装与配置指南for Windows、Macos、Linux - 鹏叔的技术博客

v2rayN 安装与配置

10.2. v2ray 客户端配置 vmess 节点

客户端以 v2rayA 为例,其他 v2ray 客户端,例如 v2rayN, v2rayNG 可以参考以下配置。

vmess node config

10.3. 连接 vmess 节点

vmess node testing

连接节点

vmess node testing

10.4. 验证设置是否成功?

浏览器访问https://www.google.com, 如果能成功访问则表示连接成功.

10.5. 测试网络速度

浏览器访问https://www.speedtest.net, 点击 go 按钮

vmess node speedtesting

上传速度 11.57Mbps, 下载速度 10.04Mbps, 已经相当可以了。

10.6. 测试能否访问 chatGPT

测试一下,看这个公网 IP 能否访问 ChatGPT。IP 质量挺高,可以正常访问 chatGPT。关于IP质量可以到whoer.com查询。

chatGPT accessing testing

备注: 要正常访问ChatGTP的所有功能,需要将代理模式设置为tproxy(透明代理)。

11. troubleshooting

问题 1: main: failed to create server > v2ray.com/core/app/log: failed to initialize access logger > open /var/log/v2ray/access.log: permission denied

原因分析:

在 service 的定义文件中,运行 v2ray 定义的用户是 nobody,而 nobody 没有权限访问 /var/log/v2ray/access.log
/etc/systemd/system/v2ray.service

1
2
[Service]
User=nobody

解决办法:

  1. 为 v2ray 单独创建一个用户和组,例如 v2ray
  2. 并将 service 中的 user 修改为 v2ray
  3. 将/var/log/v2ray/ 的目录的 owner 修改为 v2ray
评论