v2Ray配置VMess + WebSocket + TLS搭建科学上网工具

v2Ray服务端配置VMess + WebSocket + TLS可以实现隐蔽的科学上网,本文将从头到尾一站式介绍搭建上网工具的方法。

你需要:

  • 一台自己的VPS
  • 能够解析到自己VPS的域名
  • VPS部署Nginx服务
  • 域名启用https的SSL安全证书

若满足以上条件,可以直接跳转到步骤:安装和配置V2Ray服务端

注册VPS服务器

考虑到稳定性、价格、支付方式等原因,从几大国外VPS服务商里选择了“搬瓦工”Bandwagon。

购买VPS套餐

国内镜像官网:搬瓦工(BandwagonHost)首页进行注册
BandwagonHost
填写完个人信息之后提交,就可以选择不同的方案了。
order
这里我选择的是49.9刀的低配方案:传送门
进入订单页面后,点击下方”Add to Cart”加入购物车,并进行结算。
checkout
优惠码可以搜索获取,常年有6%以上的折扣。
支付方式可以选择AliPay,确认后使用支付宝进行扫码支付。

查看VPS信息

点击网站上方菜单”Client Area”->”Services”->”My Services”查看自己的服务
service
点击结果右侧的”KiwiVM Control Panel”进入控制面板
record
左侧菜单选择”Main Controls”,可以看到服务器详细信息,如IP地址和SSH端口号。
menu
左侧菜单选择”Install new OS”,重新安装ubuntu20.04(16.04以上即可)。
安装成功后,页面会提示新的root密码,是一串随机字符。如果忘记了也没关系,可以在左侧菜单选择”Root password modification”进行重置。

SSH连接服务器

可以使用上一步获得的ip和端口信息、root密码通过SSH连接VPS

1
ssh root@your.ip -p yourport

购买并解析域名

NameSilo是一家比较低廉的域名商,且具有免费终身的WHOIS隐私保护,支持支付宝微信交易。

注册和购买域名

首页注册账户,搜索自己想要的可用域名。点击域名右侧的”Add”加入购物车,点击”chekout”进行支付。
cart
点击”continue”进行支付,付款可以选择支付宝或微信扫码。

解析域名到VPS

网站首页点击”my account”,”Account Overview”部分点击”Account Domains” 子项。
account
点击需要配置的域名对应的小地球,进行DNS配置。
option
进入后会默认有4-5条配置,可以把CNAME和A记录全部删除。然后新增两条www和不加前缀的A记录,地址填写VPS服务器的ip地址。
配置保存后大概半小时左右生效。

部署Nginx和SSL证书

下载安装nginx

1
sudo apt install -y nginx

安装后,浏览器访问VPS的ip,可以看到nginx的信息,说明安装成功。
如果域名绑定好了,访问域名也可以看到。

安装certbot

1
2
3
4
apt install snapd
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
certbot --nginx

安装和配置V2Ray服务端

执行官方安装脚本

1
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

v2ray命令

1
2
3
systemctl start v2ray
systemctl restart v2ray
systemctl enable v2ray

配置v2ray
编辑 /etc/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
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbounds": [
{
"port": 55555,
"listen": "127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
"level": 1,
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/path"
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
]
}

注意:portidpath要改成自己的配置;level 可以为0或1;alterId可以为大于10的两位数

配置Nginx

编辑文件/etc/nginx/conf.d/v2ray.conf,修改为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server{
listen 80;
server_name youhost.com;
root /your/path;
index index.html;
}
server {
listen 443 ssl http2 default_server;
server_name youhost.com;
ssl_certificate /etc/letsencrypt/live/youhost.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/youhost.com/privkey.pem;
root /your/path;
index index.html;
location /v2ray {
proxy_redirect off;
proxy_pass http://127.0.0.1:55555;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}

注意:server_name,root,需要与实际域名和nginx实际根目录对应;ssl_certificatessl_certificate_key改为实际SSL证书路径;proxy_pass这里的端口号需要跟v2ray配置文件config.json端口对应.

开启服务

执行以下命令重启v2ray、nginx服务

1
2
systemctl restart v2ray
systemctl restart nginx

浏览器正常访问http、https就是自己的主页,浏览器访问https:xxx/pathhui会返回bad request
有的vps端口默认不开放,可能导致连接不成功

1
2
3
4
5
## 查看已开放端口
firewall-cmd --zone=public --list-ports
## 添加开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

有时候服务器时间和当前时间有误差,可能导致连接失败。需要调整服务器时间

1
ntpdate pool.ntp.org

安装和配置V2Ray客户端

MAC客户端配置

MAC客户端使用v2rayx,V2RayX是一个集成V2Ray内核的图形化界面。

下载后解压到应用程序目录,运行后可在桌面上方状态栏看到客户端的V字图标。
icon

点击图标,弹出菜单。点击configure进入设置:
v2rayx
点击左下角+号,添加新的服务器。右侧设置和服务器端保持一致,其他设置和图中保持一致。tag填写服务器设置的标签名称。
configure
由于采用了伪装协议,需要点击”transport settings”进行传输层设置。
ws
websocket标签页需填写伪装路径path和hostname,内容与服务端设置一致。
tls
tls标签页勾选”use tls”,同时勾选”tls allow insecureciphers”和”tls allowinscure”两项,在”tls servername”中填入主机名。

填写后保存。点击菜单栏”load core”开启服务。
注意:主界面一般选择PAC Mode,全局模式所有的访问连接都需要经过代理服务器。PAC模式(Proxy auto-config),只有在PAC列表中的域名才会经过代理连接。

安卓客户端配置

客户端使用v2rayNG
下载后安装apk到安卓设备,点击右上+号添加配置文件。这里选择手动输入【Vmess】。
按照与MAC客户端相同的参数填写配置内容,完成后保存。
点击右下角v字小图标开启服务,点击下方按钮测试连接是否成功。