Published on

V2Ray (WebSocket + TLS + Web + Cloudflare) 手动配置详细说明

Authors

V2Ray (WebSocket + TLS + Web + Cloudflare) 手动配置详细说明

先决条件

开始操作之前,建议你先了解以下基础知识:

  • 使用 ssh 命令或 ssh 客户端登录远程服务器
  • 使用 vim 或其他编辑器的最基本的操作

购买 VPS

购买 VPS 的说明

Hmmm… 本人学生党(穷 ➕ 没有办理国际信用卡),买境外的 VPS 不太方便。我找了相对便宜的(没有活动时的价格最低为 $3.71 / 月)且支持使用支付宝的 VPS 提供商 —— CloudCone

注册登录没太多好说的,唯一的建议就是注册的时候填写国外的邮箱(Cloudcone 将会通过这个邮箱告知你 VPS 的 IP 地址root 用户的初始密码)。

这里简单说下如何通过支付宝进行充值:

CloudCone充值
CloudCone充值步骤

填写完支付宝关联的邮箱地址(如支付宝未与任何邮箱关联,请自行搜索相关内容),会跳转至支付宝扫码付款的页面,付款成功就可新建 VPS 实例了。

新建实例部分,本文以 Debian 10 为例,您也可以使用其他 Linux 发行版本。如您使用其他 Linux 发行版本,本教程后续的部分命令或许会有些许差异(如软件包的安装等),当然本文对您仍具有参考意义。

CloudCone新建实例

主机名按照框内灰色字体的格式填写即可。

新建实例成功后,请注意查看你注册账号时的邮箱,是否收到包含服务器公网 IPv4 地址root 用户初始密码的电子邮件。

邮件提醒
邮件内容

初始化 VPS

具体步骤

ssh 登录到远程服务器的 root 用户后再完成以下操作:

  1. 更新系统已知的软件包列表、升级系统上的所有软件包、移除不再需要的依赖软件包:
apt update && apt upgrade && apt autoremove

正经的 Linux 用户不会用 root 干所有的事情,如果这么做的话将会很危险。创建一个普通的用户,并让它可以通过 sudo 指令用 root 权限执行命令是一般的解决方案。

  1. 在用 sudo 之前,我们需要先安装 sudo 这个软件包:
apt install sudo
  1. 新建一个普通用户,本文新建名为 eric 的用户( -m 为用户创建相应的 home 目录,-s 选项使用 /bin/bash 作为用户的 shell,-G 并将其添加到 sudo 用户组中),创建好后第2行命令给 eric 用户设置一个密码:
useradd -m -s /bin/bash -G sudo eric
passwd eric
  1. 相关建议(可选操作)

为了安全起见,建议你完成下列操作:

  • 禁止通过 SSH 登录到 root 用户
  • 限制 SSH 通过用户密码来登录,并实现 SSH 仅能通过密钥登录服务器

在操作之前,你需要先将本机公钥添加到远程服务器

  • 首先确认下本机是否生成过 SSH 密钥。Git Bash 上执行命令 ls ~/.ssh 查看是否有 id_*id_*.pub 这两个文件(其中 * 是生成密钥的签名类型),如果没有则需要通过 ssh-keygen 生成,在 Git Bash 中执行命令:
ssh-keygen -t ecdsa
  • 如果已生成过 SSH 密钥,你现在就可以通过命令将本机的公钥信息添加到远程服务器中,执行命令后会让你确认信息,输入 yes,然后输入服务器用户的登录密码:
ssh-copy-id eric@服务器IP地址

完成该操作之后就可以免密登录服务器了,如果要禁用远程登录 root 用户和使用密码登录的方式,点击下面的『操作要点』展开

操作要点

  • 禁止通过 SSH 登录到 root 用户
    • 编辑 /etc/ssh/sshd_config
PermitRootLogin no
  • 限制 SSH 通过用户密码来登录
    • 编辑 /etc/ssh/sshd_config
PasswordAuthentication no
  • 编辑完配置文件后,sudo systemctl restart sshd 重启下服务器的 sshd 服务

安装 V2Ray 前的准备

正经的 Linux 用户不会用 root 干所有的事情,如果这么做的话将会很危险。所以使用普通用户,再通过 sudo 指令用 root 权限执行命令是坠吼的。

使用普通用户通过 ssh 登录到你的远程服务器后再完成以下操作:

时间校准

对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在 90 秒 之内就没问题。

sudo timedatectl set-ntp true # 启用 NTP 服务
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 将时区设为"亚洲/上海"
sudo hwclock --systohc # 将硬件时钟调整到与当前系统时间一致
date -R # 以 RFC 5322 格式输出日期和时间

域名购买与设置

要使用 V2Ray + WebSocket + TLS + Web 方案,需要一个域名。这里推荐使用 NameSilo 注册域名。

在 NameSilo 注册域名

选择一个便宜的域名,最低只需 $0.99 一年:

NameSilo域名选择

域名购买页面设置,记得关闭自动续费,开启WHOIS隐私保护:

NameSilo域名设置

支付页面同样支持支付宝付款:

NameSilo支付宝付款

购买域名后,可以在账户中查看并管理:

域名管理

V2Ray 客户端配置

V2Ray客户端界面

客户端设置

v2rayN 主界面鼠标右键点击,选择「添加 Vmess 服务器」,按照服务器配置填写:

添加服务器1
添加服务器2

配置说明:

  • 地址(address:可以填写您注册的域名(也可以是 Cloudflare 的 CDN IP)
  • 端口(port:HTTPS 端口号,即填写 443
  • 用户 ID(id:与 V2Ray 服务端的配置一致
  • 额外 ID(alterId:与 V2Ray 服务端的配置一致,即 0
  • 加密方式(security:自动
  • 传输协议(network:WebSocket

设置完成后,右键点击托盘图标启用 HTTP 代理:

启用代理

如需生成配置分享给其他设备,可右键点击服务器选择「分享」生成链接:

生成分享链接

然后使用订阅转换工具转换为其他客户端格式:

订阅转换

优选 Cloudflare CDN 节点 IP

直接通过本地的 DNS 解析您注册域名得到的 Cloudflare CDN 的 IP,有时可能速度很不理想,尤其是我使用的中国电信宽带到了晚上高峰期(20:00 ~ 24:00)的时候特别差劲。通过一个测试工具 CloudflareSpeedTest 优选出几个 Cloudflare 的 CDN 节点 IP,可以相对缓解这种情况。由于不同的运营商、不同的地域或不同的时间段,相同的 CDN 节点 IP 表现具有差异,所以建议就是各自在自己的网络环境下进行测试

Cloudflare CDN测速

优选 Cloudflare CDN 节点 IP 的说明

  • CloudflareSpeedTest 项目 latest release 下载页
  1. 根据您的操作系统处理器架构进行选择下载,以我这边 Windows x64 为例子,我下载的是 CloudflareST_windows_amd64.zip,下载后进行解压。

  2. 首先 cmd 切换到 CloudflareST.exe 所在的目录,如 F:\Downloads\CloudflareST_windows_amd64

cd /d F:\Downloads\CloudflareST_windows_amd64
  1. 此处我以我平常使用的命令加几个选项为例子:

如需要找到 20 个平均延迟低于 300 ms 且下载速度高于 5 MB/s 的 IP 才会停止测速。

CloudflareST.exe -tl 300 -sl 5 -dn 20
  • -tl: 平均延迟上限,只输出低于指定平均延迟的 IP
  • -sl: 下载速度下限,输出高于指定下载速度的 IP
  • -dn: 符合条件的 IP 数量,即指定输出符合延迟下载速度要求的 IP 数量
  • 完整的使用方法请参考项目 README。

当我们得到了一组优选 IP 后,如何使用这些 CDN 节点呢?我们只需要在 v2rayN 填写的地址(address处,分别填写排名靠前的几个 IP 就行。具体操作:

V2Ray UI界面
  • v2rayN 主界面鼠标右键选中原有的节点 node,选择「克隆所选服务器」,然后双击克隆得到的节点,将**地址(address)**修改为优选得到的 IP,如 104.31.79.91,**别名(remarks)**取自己喜欢的就好,如 node1
客户端配置

如想添加多几个节点,就多克隆几个。

至于其他客户端的配置转换依然可以使用 Subscription Converter,将生成得到的数个 vmess:// 链接分行粘贴到 Subscription Converter 中,最后再生成订阅链接就完事了。

订阅转换器

P.S. 一条一条的生成 vmess:// 链接还是挺麻烦的,所以建议各位学会自己编写你所使用的客户端的配置文件 🤣

参考资料

  • 新 V2Ray 白话文指南 -- WebSocket + TLS + Web
  • How to Install Nginx on Debian 10
  • How To Host a Website Using Cloudflare and Nginx on Ubuntu 20.04
  • NGINX Reverse Proxy
  • Increase Linux Internet speed with TCP BBR congestion control
  • HTTPS certificate not trusted with Cloudflare Origin Certificate
  • XIU2/CloudflareSpeedTest

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本文永久链接是:https://ericclose.github.io/V2Ray-TLS-WebSocket-Nginx-with-Cloudflare.html