早前忘写了,心情大好突然想起,遂补
关于如何在Windows系统搭建V2Ray服务端,以及TLS加密和利用Nginx反代实现WebSocket进行伪装,设置NSSM守护进程,在Clash中使用
0.准备
设备要求 Windows 7 及以上版本
有可用域名并已解析到服务器(用于伪装V2Ray)
V2Ray下载:https://github.com/v2fly/v2ray-core/releases
Certbot下载:Certbot(用于申请证书,也可用用其他工具在线申请)
NSSM下载:NSSM – the Non-Sucking Service Manager
V2Ray解压到任意目录(这里用 C:\v2ray )得到如下文件
- v2ray.exe // 主程序
- v2ctl.exe // 辅助工具
- config.json // 配置文件
- geosite.dat // 站点数据文件
- geoip.dat // IP 数据文件
1.基础搭建V2Ray并运行
打开config.json编写配置文件
{
"inbounds": [
{
"port": 1080, // 端口,可自行更改
"protocol": "vmess", // 使用vmess协议
"settings": {
"clients": [
{
"id": "a9d7ff74-f117-454e-9908-0f616224c470", // uuid,可自行更改
"alterId": 0
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
打开“服务器管理器”,右上角“工具”,选择“本地安全策略”,在“出站规则”内放行端口
在v2ray根目录下按Shift+右键,然后点击”在此处打开PowerShell窗口“,输入
v2ray.exe run -c config.json
若输出 V2Ray started 提示则说明已经正常运行
此时已经可以正常使用了,接下来可以给V2Ray进行伪装
2.使用TLS加密传输数据
可以将V2Ray流量全程加密,特征更接近普通HTTPS流量
我更推荐使用下一种伪装方式,可以直接跳转到下一段
首先你需要申请一个域名证书:
可以安装Certbot,运行以下命令来申请证书
certbot certonly --standalone -d 域名
证书默认存储在 C:\Certbot\live\域名\ 目录下,包含:
- fullchain.pem
- privkey.pem
或者也可以用其他在线生成证书的工具
修改config.json配置文件新增“streamSettings”字段,修改后的文件如下:
{
"inbounds": [
{
"port": 1080, //本地端口,可自行更改
"protocol": "vmess", //使用vmess协议
"settings": {
"clients": [
{
"id": "a9d7ff74-f117-454e-9908-0f616224c470", //uuid,可自行更改
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls", // 启用 TLS
"tlsSettings": {
"certificates": [
{
"certificateFile": "fullchain.pem", // 更改为你的证书路径
"keyFile": "privkey.pem" // 更改为你的私钥路径
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
重启V2Ray以生效
TLS加密就完成了,但推荐使用下面这个更隐蔽的方法
3.利用Nginx反代实现WebSocket流量伪装
这可以将V2Ray流量完全伪装成HTTPS网站流量,且由Nginx提供高性能的 TLS 卸载,是抗封锁的常用方案
可以用宝塔面板给域名建站,方便后续操作
config.json配置文件新增“streamSettings”字段,修改后的文件如下:
{
"inbounds": [
{
"port": 1080, //本地端口,可自行更改
"protocol": "vmess", //使用wmess协议
"settings": {
"clients": [
{
"id": "a9d7ff74-f117-454e-9908-0f616224c470", //uuid,可自行更改
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/ray" //自定义路径
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
重启V2Ray以生效
然后需要在防火墙中放行443端口
接下来在宝塔面板打开对应网站的配置文件
在server中添加下面内容
location /v2 { # 与streamSettings.path一致
proxy_pass http://127.0.0.1:1080; # 转发到V2Ray的本地端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 使其他流量返回404
location / {
return 404;
}
此时,访问 https://域名/ 应返回 404 Not Found ;访问 https://域名/path 应返回 Bad Request
若返回 502 Bad Gateway ,检查V2Ray是否在运行,检查V2Ray配置和Nginx配置的端口和路径是否一致
以上没有问题的话Nginx反代就完成了,下面是其他建议:
- 启用SSL证书
- 打开强制HTTPS
- 给网站添加静态页面,使其看起来像正常网站
- 将path修改为常见路径
4.NSSM守护进程
解压NSSM,进入根目录
按Shift+右键,点击”在此处打开PowerShell窗口“,安装服务
nssm install v2ray
在弹出的窗口中设置:
- Path: C:\v2ray\v2ray.exe
- Startup directory: C:\v2ray
- Arguments: run -c C:\v2ray\config.json
启动服务
nssm start v2ray
查询服务状态
nssm status alist
5.Clash客户端配置
创建一个config.yaml文件
若使用第一步中最基础的配置
proxies:
- name: "代理名"
type: vmess
server: ip # 服务器IP或域名
port: 1080 # v2ray设置的端口
uuid: a9d7ff74-f117-454e-9908-0f616224c470 # v2ray设置的uuid
alterId: 0
cipher: auto # 加密方式(默认 auto)
udp: true # 可选,启用 UDP
proxy-groups:
- name: "PROXY"
type: select
proxies:
- "代理名"
rules:
- MATCH,PROXY
若使用TLS加密
proxies:
- name: "代理名"
type: vmess
server: 域名 # 与所设证书域名一致
port: 1080 # v2ray设置的端口
uuid: a9d7ff74-f117-454e-9908-0f616224c470 # v2ray设置的uuid
alterId: 0
cipher: auto
tls: true # 启用 TLS
skip-cert-verify: false
proxy-groups:
- name: "PROXY"
type: select
proxies:
- "代理名"
rules:
- MATCH,PROXY
若使用Nginx反代
proxies:
- name: "代理名"
type: vmess
server: 域名 # Nginx反代的域名
port: 443 # HTTPS默认端口,不可修改
uuid: a9d7ff74-f117-454e-9908-0f616224c470
alterId: 0
cipher: auto
tls: true
network: ws
ws-opts:
path: "/v2" # 与服务端和Nginx所设一致
headers:
Host: 域名 # 与所设域名一致
proxy-groups:
- name: "PROXY"
type: select
proxies:
- "代理名"
rules:
- MATCH,PROXY
更多规则可自行配置
在订阅选项卡中将config.yaml导入即可,关于Clash的详细教程就请自行寻找了
以上,V2Ray搭建到伪装到使用