V2ray 搭建支持游戏加速的代理服务方案
by CUNOE, March 31, 2023
方案信息
方案环境
# 服务端采用了阿里云的轻量应用服务器(HK)
Server:
- Ubuntu 20.04.3 LTS
- Nginx 1.21.1
- Docker 20.10.17
产生原因
在游玩游戏的时候,由于网络原因,经常会出现卡顿、延迟等问题,这些问题会影响游戏体验,所以需要一个稳定的代理服务来解决这些问题,这里采用了V2ray的Websocket+TLS+Nginx+Cloudflare的方案来搭建代理服务,这样就可以解决游戏加速的问题了,同时可以满足本人的魔法和Newbing的访问需求。
各工具的安装和配置可以参考下面的链接: Nginx:https://lnmp.org/install.html Docker:https://www.runoob.com/docker/ubuntu-docker-install.html
方案的拓补图
服务端
X-ui
安装
通过docker-compose安装x-ui,x-ui是一个v2ray的web管理面板,可以方便的管理v2ray的配置,同时也可以通过x-ui来管理v2ray的配置,这里采用了x-ui的docker镜像来安装x-ui,具体的安装方法如下:
在服务器选择一个位置放置docker-compose.yml
文件,然后执行docker-compose up -d
命令来启动x-ui,具体的docker-compose.yml
文件如下:
vim ~/docker-compose.yml
# docker-compose.yml
version: '3.8'
services:
# x-ui
xui:
image: enwaiax/x-ui:latest
container_name: x-ui
volumes:
- ./x-ui/db/:/etc/x-ui/
- ./x-ui/cert/:/root/cert/
restart: unless-stopped
network_mode: host
docker-compose up -d
Xui服务的端口为54321
,可以通过浏览器访问 http://ip:54321
来访问x-ui的管理面板,然后通过x-ui来管理v2ray的配置。
其中初始用户名和密码均为admin
,可以通过x-ui的设置来修改用户名和密码。
配置
进入x-ui的管理面板,然后点击左侧的入站列表,然后点击右侧的 "+" 按钮添加配置,具体的配置如下:
备注 v2ray
协议 vless
监听IP 0.0.0.0
端口 56789 # 任意端口 不要和其他服务冲突
id 自动生成
传输 ws
路径 /v2ray/ # 任意路径 注意有两个斜杠 不能少
点击保存即可,由于我们会在Nginx上配置TLS,这里仅为内网转发,所以不需要配置TLS。
Nginx
为了方便管理Nginx,这里使用LNMP一键安装包来安装Nginx,具体的安装方法可以参考上面的链接,安装完成后,继续下面的步骤。
创建Vhost
首先请解析一个域名(本文将以proxy.example.com
为例)到服务器的IP地址,然后在Nginx的配置文件中添加一个Vhost,具体的配置如下:
sudo lnmp vhost add
按照下面的提示输入域名和目录,然后按照提示进行:
Please enter domain(example: www.lnmp.org): proxy.example.com
Your domain: proxy.example.com
Enter more domain name(example: lnmp.org *.lnmp.org):
Please enter the directory for the domain: proxy.example.com
Default directory: /home/wwwroot/proxy.example.com:
Virtual Host Directory: /home/wwwroot/proxy.example.com
Allow Rewrite rule? (y/n) n
You choose rewrite: none
Enable PHP Pathinfo? (y/n) n
Disable pathinfo.
Allow access log? (y/n) n
Disable access log.
Add SSL Certificate (y/n) y
1: Use your own SSL Certificate and Key
2: Use Let's Encrypt to create SSL Certificate and Key
3: Use BuyPass to create SSL Certificate and Key
4: Use ZeroSSL to create SSL Certificate and Key
Enter 1, 2, 3 or 4: 2
等待运行完成后,就可以通过域名来访问了
配置转发
LNMP安装的Nginx默认配置文件在/usr/local/nginx/conf/vhost/
下,这里需要修改这个vhost的配置,具体的配置如下:
sudo vim /usr/local/nginx/conf/vhost/proxy.example.com.conf
server
{
listen 80;
#listen [::]:80;
server_name proxy.example.com ;
return 301 https://$server_name$request_uri;
}
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name proxy.example.com ;
`````` ssl配置 此处省略
include enable-php.conf;
# 这里配置代理到x-ui 可以支持通过proxy.example.com来访问x-ui的管理页面
location / {
proxy_pass http://127.0.0.1:54321;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
`````` 此处会有lnmp生成的其它路径匹配 可以删除也可以不管
}
# 为了防止长时间的流量导致443端口被封,这里配置8443端口来接收流量
server
{
listen 8443 ssl http2;
#listen [::]:443 ssl http2;
server_name proxy.example.com ;
`````` ssl配置 此处省略
include enable-php.conf;
location ^~ /v2ray/ { # 注意这里的路径要和x-ui的配置一致
proxy_redirect off;
proxy_pass http://127.0.0.1:56789/v2ray/; # 注意这里的端口和路径要和x-ui的配置一致
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 12000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
}
}
为了让Nginx支持WebSocket,需要在Nginx的配置文件中添加一些配置,具体的配置如下:
sudo vim /usr/local/nginx/conf/nginx.conf
http {
# 此处省略
keepalive_timeout 1d;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# 此处省略
}
重载LNMP
sudo lnmp reload
通过Warp转发通往Newbing的流量
由于Newbing限制了我的访问,导致我无法正常使用,所以这里使用Warp来转发通往Newbing的流量
安装Warp
为了方便管理Warp,这里使用Warp一键安装包来安装Warp,具体安装方法参考甬哥的脚本 https://gitlab.com/rwkgyg/CFwarp
请注意,这里我们选择的是方案二 2. 方案二:安装Socks5-WARP
要记住这里的代理端口,本文将以40000为例
配置X-ui的生成模板
由于新增了一个Warp的出口,我们需要在X-ui的生成模板中添加一个Warp的出口
在X-ui的管理面板中,点击左侧的面板设置,然后点击右侧的xray相关设置,将原有的模板复制出来,并在outbounds字段和rules字段添加相关信息
{
`````` 省略了其它配置
"outbounds": [
``````省略了其它出口
{
"tag": "socks_out",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000,
"users": []
}
]
}
},
],
``````省略了其它配置
"routing": {
"rules": [
{
"outboundTag": "socks_out",
"type": "field",
"domain": [
"domain:bing.com",
"domain:openai.com",
"domain:ai.com"
]
},
``````省略了其它路由规则
},
``````省略了其它配置
}
此时点击左上角的保存配置后重启面板即可正常使用
客户端
V2rayN
下载:https://github.com/2dust/v2rayN/releases
配置V2ray
在V2rayN中,点击右上角的服务器,然后点击右侧的添加Vless服务器,将X-ui的配置信息填入即可 不过要注意地址和端口的填写
地址:proxy.example.com
端口:8443
用户ID:X-ui的UUID
加密方式:none
传输协议:ws
伪装类型:none
路径:/v2ray/ # 注意这里的路径要和x-ui的配置一致
底层传输安全:tls
此时点击的确认并测试,如果测试通过,就可以正常使用了
Netch
下载:https://github.com/netchx/netch/releases
配置Netch
点击左上角的服务器->添加服务器->VLESS,将X-ui的配置信息填入即可 或者点击左上角的服务器->添加服务器->socks,将V2rayN开放的socks端口填入即可
后记
实测这样配置后在保证安全性的同时提供了较好的体验,希望对大家有所帮助 打游戏六个小时极其稳定(未发生游戏断线和跳ping等情况,几乎全程都是35ms),看视频8k无压力,下载速度也很快,只能说阿里云轻量应用服务器的线路还是很可以的