Windows Server 服务器搭建 v2ray

Windows Server 服务器搭建 v2ray

S. 场景

需要在一台 Windows Server 服务器上搭建 V2Ray 服务端,还要启用 TLS + WebSocket + Web + CDN 四重伪装。

C. 冲突

网上绝大多数搭建 v2ray 服务端的教程是关于 Linux 系统的。尽管有少数教程是 Windows 系统的,但是已经过时了[1] [2]。只要一篇教程让你在远程服务器上运行 wv2ray.exe,它就是过时的教程,因为最新的 V2Ray for Windows 已经废除了只能在后台运行的 wv2ray.exe。

Q. 问题

怎样才能在 Windows Server 服务器搭建 v2ray,并且启用 TLS + WebSocket + Web + CDN 四重伪装呢?

A. 答案

其实方法很简单,与 Linux 基本相同,不同之处在于需要在 Windows 中安装并配置 Windows 版的 Nginx 和 V2Ray。V2Ray 负责数据的传输,Nginx 负责数据的伪装和加密,此外还需要一个 CDN。

数据包从本机的 V2Ray 通过 VMess 协议(外边包装一层 WebSocket 协议)经过 CDN 发送到服务器,在服务器上,经过 Nginx 的分流,将 WebSocket 数据包转发到服务器的 V2Ray,然后再由服务器的 V2Ray 发送到目标网站。目标网站返回的数据,逆着上述数据通道传输到本机。

笔者参考了这两篇教程[3] [4]

M. 方法简述

1. 服务器安装 V2Ray、Nginx 和第三方文本编辑器

1.1 V2Ray 和 Nginx

V2Ray 和 Nginx 都是绿色软件,直接从官网下载、解压然后运行就可以了。

V2Ray 下载(GitHub): https://github.com/v2fly/v2ray-core/releases

Nginx 下载(官网): https://nginx.org/en/download.html

此处笔者把 V2Ray 解压到 C:\Users\Lily\Program Files\v2ray 文件夹,把 Nginx 解压到 C:\Users\Lily\Program Files\nginx 文件夹。

注意:

  1. 运行 V2Ray 的方式:在命令提示符中执行 v2ray run
  2. 退出 V2Ray 的方式:在运行 V2Ray 的窗口中按 Ctrl + C 快捷键。
  3. 运行 Nginx 的方式:在命令提示符中执行 start nginx
  4. 修改配置文件后重启 Nginx 的方式:在命令提示符中执行 nginx -s reload
  5. 退出 Nginx 的方式:在命令提示符中执行 nginx -s quit

Nginx for Windows 的其他操作方法,详见这两篇教程[5] [6]

1.2 第三方文本编辑器

第三方文本编辑器支持语法高亮,以免在修改配置文件时出错。例如 Notepad3、VSCode、Notepad++。

Notepad3 下载(官网): https://www.rizonesoft.com/downloads/notepad3/

2. 注册一个域名

这是开启 TLS 所必需。此处不赘述。假设此处的域名为 lily.online (此域名纯属虚构,如有雷同,是你抄我)

3. 从 Cloudflare 申请有效期 15 年的证书

参照这篇教程[7]。在 Cloudflare 中新建站点,添加域名 lily.online;然后将 SSL/TLS 设为“完全(严格)”(英文版为 Full (Strict))模式;最后申请有效期为 15 年的证书,把私钥另存为 lily.key 文件,把证书文件另存为 lily.pem 文件。也可以用你自定义的文件名。

在 Cloudflare 中为域名 lily.online 设置 DNS 解析。

4. 服务器配置 Nginx

在服务器上,把 C:\Users\Lily\Program Files\nginx 文件夹中的 html 子文件夹复制一份,改名为 mysite (也可以用你自定义的名字),作为网站的根目录,这个网站是用来伪装 V2Ray 数据的,你也可以在 mysite 子文件夹里面放一些网页。

将密钥文件 lily.key 和证书文件 lily.pem 上传到服务器的 C:\Users\Lily\Program Files\nginx\mysite 文件夹。

将下列代码另存为 nginx.conf 文件,并覆盖服务器的 C:\Users\Lily\Program Files\nginx\conf\nginx.conf 文件。

注意:要把里面的 lily.online 改成你的域名,mysite 改成你自定义的文件夹名字,lily.key 改成你自定义的私钥文件名字,lily.pem 改成你自定义的证书文件名字。

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

server {
# 设置监听端口为80和443
listen 80;
listen 443 ssl http2;
# 设置用来伪装网站的域名
server_name lily.online;
# 设置首页文件
index index.html index.htm default.htm default.html;
# 设置网站的根目录
root mysite;

# 重定向对网站根目录的访问
location / {
# 与上面的root相同
root mysite;
index index.html index.htm default.htm default.html;
}

# SSL-START SSL开始

# HTTP_TO_HTTPS_START(http重定向到https,开始)
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
# HTTP_TO_HTTPS_END(http重定向到https,结束)

# 设置SSL加密参数,开始

# 设置证书
ssl_certificate ../mysite/lily.pem;
# 设置密钥

ssl_certificate_key ../mysite/lily.key;

# 设置其他SSL参数
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
# 设置SSL加密参数,结束

# SSL结束

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root mysite;
}

# Forbidden files or directories
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}

# v2ray伪装,要与 V2Ray 配置中的 path 保持一致
location /login {
# WebSocket协商失败时返回404
if ($http_upgrade != "websocket") {
return 404;
}
proxy_redirect off;
# 假设V2Ray的Inbound监听在环回地址的19890端口上
# 将WebSocket数据包分流并转发到19890端口
proxy_pass http://127.0.0.1:19890;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# Show real IP in v2ray access.log
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}

5. 服务器配置 V2Ray

将下列代码另存为 config.json 文件,并覆盖服务器的 C:\Users\Lily\Program Files\v2ray\config.json 文件。

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
54
55
{
"inbounds": [
{
"port": 19890, // 服务器监听端口
"listen": "127.0.0.1",
"protocol": "vmess", // 主传入协议
"settings": {
"clients": [
{
"id": "f11d0f64-2441-2a16-5671-a5e0576f6004", // 用户 ID,客户端与服务器必须相同
"alterId": 0
}
]
},
"streamSettings": {
"network":"ws",
"wsSettings": {
"path": "/login"
}
}
}
],
"outbounds": [
{
"protocol": "freedom", // 主传出协议
"settings": {},
"tag": "direct"
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"routing": {
"domainStrategy": "IPOnDemand",
"rules":[
{
// Blocks major ads.
"type": "field",
"domain": ["geosite:category-ads"],
"outboundTag": "blocked"
}
]
},
"dns": {
"servers": [
"https+local://1.1.1.1/dns-query",
"1.1.1.1",
"4.2.2.2",
"8.8.8.8",
"localhost"
]
}
}

6. 本地配置 V2Ray

6.1 V2RayN

V2RayN 下载地址: https://github.com/2dust/v2rayN/releases

使用 V2RayN,添加一个新的 VMess 服务器,填写数据如图所示,最后点击确定。注意,用户 ID 必须与服务器 V2Ray 配置文件中的 id 相同。可以在命令行中执行 v2ray uuid 生成一个。

本地配置 V2RayN

6.2 Clash for Windows

Clash for Windows (以下简称 Clash)下载地址: https://github.com/Fndroid/clash_for_windows_pkg/releases

Clash 更加普及,不过配置单个服务器节点比 V2RayN 要稍微麻烦一些。

在 Clash 中,切换到 Profiles 界面,右击 config.yaml,点击菜单中的 Proxies,然后点击 Proxies 右侧的 Add,填写数据如图所示,最后点击 OK。注意,用户 ID 必须与服务器 V2Ray 配置文件中的 id 相同。可以在命令行中执行 v2ray uuid 生成一个。

本地配置 Clash for Windows

7. 连接与调试

在服务器上启动 Nginx。方法:打开一个命令提示符窗口,执行以下命令:

1
2
cd /d "C:\Users\Lily\Program Files\nginx"
start nginx

在服务器上启动 V2Ray。方法:打开一个命令提示符窗口,执行以下命令:

1
2
cd /d "C:\Users\Lily\Program Files\v2ray"
v2ray run

在本地启动 V2RayN 或 Clash for Windows,连接服务器。开全局代理,或者配置浏览器代理,用浏览器访问网页就可以啦。

图片版权

题图:Server Room Fashion" by cogdogblog is marked with CC0 1.0

头图:该图片由 David MarkPixabay 上发布。

参考文献


求扫码打赏
“我这么可爱,请给我钱 o(*^ω^*)o”

Windows Server 服务器搭建 v2ray
https://blog.kukmoon.com/08413c56e3db/
作者
Kukmoon谷月
发布于
2023年8月7日
许可协议