手动安装 v2ray server

但是实践中创建一个专有用户来运行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

配置 vmess 服务器

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

以下配置中, clients.id 需要替换为不同的uuid, 其他可以通用。

// 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客户端。

检验 v2ray server 配置

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

$ 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.

开启并立即启动 v2ray 服务

# 设置开机启动,并立即启动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