方案信息

方案环境

1
2
3
4
5
# 服务端采用了阿里云的轻量应用服务器(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文件如下:

1
vim ~/docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
# 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
1
docker-compose up -d

Xui服务的端口为54321,可以通过浏览器访问 http://ip:54321 来访问x-ui的管理面板,然后通过x-ui来管理v2ray的配置。
其中初始用户名和密码均为admin,可以通过x-ui的设置来修改用户名和密码。

配置

进入x-ui的管理面板,然后点击左侧的入站列表,然后点击右侧的 “+” 按钮添加配置,具体的配置如下:

1
2
3
4
5
6
7
备注 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,具体的配置如下:

1
sudo lnmp vhost add

按照下面的提示输入域名和目录,然后按照提示进行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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的配置,具体的配置如下:

1
sudo vim /usr/local/nginx/conf/vhost/proxy.example.com.conf
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
43
44
45
46
47
48
49
50
51
52
53
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的配置文件中添加一些配置,具体的配置如下:

1
sudo vim /usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
7
8
9
http {
# 此处省略
keepalive_timeout 1d;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# 此处省略
}

重载LNMP

1
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字段添加相关信息

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
{
`````` 省略了其它配置
"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的配置信息填入即可
不过要注意地址和端口的填写

1
2
3
4
5
6
7
8
地址: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无压力,下载速度也很快,只能说阿里云轻量应用服务器的线路还是很可以的