手动安装 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
