Rennen

Rennen

节点搭建教程,Vmess + WebSocket + TLS + 网站伪装

20209
2024-01-10

真的好久没更新了博客了。本篇文章教给读者搭建一个稳定防封、高速、并且使用 Vmess 协议,适用于各种客户端的节点。并且,只要按照教程中的步骤操作,就一定能够搭建成功。

本文绝大部分内容参考自 YouTube 上博主「不良林」的视频,但是作者对一些步骤做了改进,对小白读者更友好。例如申请证书和配置 Nginx 的操作,我们交由运维面板 1Panel 来完成。

为了实现目标,你需要准备:

  • 一台 VPS(云服务器)。内存建议至少 1GB,地区香港新加坡最佳, 日本韩国次之,如果线路好的话欧美地区也不是不可以
  • 一个域名,如果想要和教程完全一致,可以修改域名的 Nameserver 为 Cloudflare,不修改也没关系
  • 一些基础的 Linux 服务器知识,你至少需要懂得如何使用 SSH 工具连接服务器(SSH 工具可以使用简单易用的 FinalShell

本教程中的云服务器为使用 「阿里云高校学生 300 元无门槛优惠券」 购得的香港轻量应用服务器。虽然速率只有 30M,勉勉强强达到翻墙的标准,但胜在线路和延迟优秀(ITDOG 测速全绿)、价格低廉(24 元/月,300 块刚好能用一年)。

使用的域名为 6 位数字 xyz,在 Spaceship 上注册只需要 0.6 刀一年。

服务器开机后的基本优化,安装必要的软件

请点击 Bulleted List 中的超链接,查看每项操作对应的教程

放行防火墙所有端口

如果使用的是大厂云服务器(如阿里云、腾讯云、Azure、DigitalOcean 等等),你需要完成此操作来避免后续不必要的麻烦。

以阿里云为例,可以在轻量应用服务器的管理后台放行端口,如果不确定要放行哪些端口的话,可以放行 TCP 协议的所有端口。

阿里云放行防火墙端口

阿里云放行防火墙端口

如果没有在服务器管理面板中找到防火墙,那么你的服务器可能是默认放行所有端口的。

安装 3x-ui 控制面板

Xray-corev2ray-core 的超集,可以用于搭建包括 ssvmessvlesstrojan 等一系列主流协议翻墙节点。

x-uiXray-core 的可视化在线面板,无需编辑繁琐的 JSON 配置文件即可搭建节点。然而,由于原版 x-ui 项目长时间未更新,这里使用一位伊朗开发者开发的 x-ui 衍生项目 3x-ui(原来「墙国」不止强国有)

项目地址:MHSanaei/3x-ui

使用一键脚本进行安装:

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

安装时输入 y 并回车,选择手动配置面板登录信息。用户名和密码设置地越复杂越好,尽量不使用常用密码。面板的端口号建议设置为 10000,后面会用到。

安装 3x-ui

使用 3x-ui 搭建节点

在浏览器地址栏中输入 服务器IP:10000 进入 3x-ui 面板。页面底部将语言切换为中文,登入 3x-ui 面板。面板界面如下:

3x-ui 面板界面

左侧选择 入站列表,选择 添加入站(其实就是新建节点的意思)。各设置项按如下设置:

  1. 备注即为节点名。我的习惯是按照 地域 + 云服务厂商 + 速率或流量 的格式进行修改
  2. 协议改为 vmess
  3. 监听修改为 127.0.0.1
  4. 端口号建议设置为 10001,后面会用到
  5. 传输设置为 WS
  6. 复制「客户」中随机生成的「电子邮件」,并复制到「小路」中,前面不要忘了加上斜杠。记住这个生成的路径,后面会用到
  7. 其余项均设置为默认即可

各设置项如下图所示:

3x-ui 添加入站

1Panel 内安装 OpenResty(Nginx)、创建网站、申请证书

登录 1Panel 面板,找到网站一栏,点击一键安装 OpenResty。

Nginx 是一个集成了静态网站和反向代理等功能的 WEB 服务器,而 OpenResty 可以简单地看做是 Nginx 的增强版。

新建一个网站,类型选择反向代理。主域名填写 free.你购买的域名.域名后缀,代理地址先填写一个 baidu.com。点击确认添加网站。

添加网站

网站添加成功后出现在网站列表中,点击列表中的文件夹小图标打开网站目录,选择 proxy 文件夹,打开 root.conf 文件,全选删除所有已有的内容并填入以下内容:

location / {
    proxy_pass https://repo1.maven.org/; #伪装网址
    proxy_redirect off;
    proxy_ssl_server_name on;
    sub_filter_once off;
    sub_filter "repo1.maven.org" $server_name;
    proxy_set_header Host "repo1.maven.org";
    proxy_set_header Referer $http_referer;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Accept-Encoding "";
    proxy_set_header Accept-Language "zh-CN";
}


location /um1mo9a {   #分流路径
    proxy_redirect off;
    proxy_pass http://127.0.0.1:10001; #入站端口
    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;
}

对以上配置文件的解释:

  1. 分流路径需要修改为刚刚创建节点时填写的 小路,也就是说只有该路径下的请求会被分流到我们搭建的节点上
  2. 平时在浏览器中输入 free.你购买的域名.域名后缀,会跳转到一个伪装站点上。这个伪装站点是 Maven 的中央仓库,满足大流量的特征。你也可以填写其他的网站,只要满足大流量的特征即可。

每次保存完配置文件后,需要重启或重载 Nginx,否则配置不会生效:

重载 Nginx

保存 root.conf 配置文件后,我们再来申请 SSL 证书。

1Panel 中选择左侧侧边栏中的 网站 - 证书,点击 ACME 账户 并选择创建 ACME 账户,输入你常用的邮箱,其余默认,点击确认。

点击蓝色的 申请证书 按钮,按照下图填写:

申请证书

点击确认按钮,回到列表中,发现证书的状态为 等待申请,点击申请按钮,此时会要求到 DNS 解析服务商处添加以下解析记录:

要求添加 DNS 记录

添加 DNS 解析域名

如果没有修改域名的 Nameserver 的话,在哪里购买的域名,就要在哪里添加域名的解析记录。一共要添加两条 DNS 解析记录,以下以 Cloudflare 为例。

首先添加节点的 DNS 解析。名称填写 free,IP 地址填写服务器的 IP 地址,类型 A如果使用 Cloudflare 的话,需要关闭代理状态(仅 DNS),文末有说明

添加记录

另外,你还需要添加 SSL 证书的 DNS 解析,只有添加该记录,你才能向 SSL 证书提供商证明该域名是你的,从而继续申请 SSL 证书。注意该 DNS 记录的类型为 TXT

为网站绑定证书

回到 1Panel 中,添加好 DNS 记录后点击 确认 按钮申请证书。如果配置无误的话,SSL 证书就能够正常申请成功了。

下面开始为网站配置证书。再次打开 1Panel 的网站列表,点击配置,在侧边栏中选择 HTTPS,选择 启用 HTTPS,然后选择刚刚申请的证书:

配置证书

到了这一步,节点就基本搭建完成了,下面来连接节点。

连接节点

下载最新版本的 v2rayN-With-Core.zip,解压并运行。

打开 3x-ui 的面板,导出创建好的节点的链接,如下图:

导出节点链接

在 v2rayN 中,快捷键 Ctrl + V 导入刚刚复制的节点。但此时节点还不能正常使用,需要我们修改部分信息。

右键编辑服务器,地址填写 free.你购买的域名.域名后缀,端口号填写 443,加密方式建议选择 zero,效率更高(因为加密的工作已经在传输层由 TLS 帮我们完成了,就不需要二次加密了),传输层安全选择 TLS,其余默认。

节点设置

点击确认后,右键节点,选择测试节点延迟和速度,如果上述所有内容都操作无误,那么节点能够正常测试出延迟和速度。

节点测试

右键节点,选择 分享服务器,此时会生成节点的二维码和链接,方便其他设备使用。

节点分享

补充说明

  1. 节点搭建完成后,如果有防火墙的话建议关闭 3x-ui 面板的端口,避免被爆破攻击,可以只保留 80 443 和服务器的 SSH 登录端口
  2. 可以使用订阅转换工具,生成适用于包括 Clash、Shadowrocket 在内的,各种客户端的订阅链接
  3. 如果机器的内存太小(例如低于 512M),由于 1Panel 会占用大概两三百 MB 的内存,所以此时我不建议安装 1Panel 面板,建议按照不良林的视频,只安装 Nginx 和 x-ui 面板,并用 acme.sh 申请证书
  4. 相比同样使用伪装站点的 Trojan 协议,为什么这种搭建方式还要更稳定一些?因为我们选择的 WebServer 是 Nginx,而不是 Trojan 的内置 WebServer。Nginx 是市场份额第一的 WebServer,因此我们搭建的节点对于墙来说特征更小,更像一个正常的资源网站。

Update: 如何为节点套上 CDN?

CDN 全称为 Content Delivery Network,也就是「内容分发网络」的意思。简单地讲,其原理相当于在本地网络和服务器之间架设一些中转服务器,静态资源可以缓存在中转服务器上减少源站压力,动态资源也可以经由中转服务器起到加速的作用,我们为节点套 CDN 主要是利用了后者的特性。

由于我们底层使用了 WebSocket 传输协议,所以理论上是可以套 CDN 的。

当然,前提是 CDN 厂商支持 WebSocket 协议,常见的支持 WebSocket 的 CDN 厂商有 Cloudflare(完全免费但是基础订阅线路一般),Amazon Cloudfront(收费,但是每个月好像有 1TB 的免费额度)。

以下以 Cloudflare 为例,Cloudflare 启用 CDN 非常简单且优雅,直接打开 DNS 解析设置页,为解析记录启用「小黄云」就可以了。

启用小黄云

然而,之前我也这样尝试过套 CDN,却遇到了节点连接不上的问题,浏览器访问我设置的伪装域名也一直出现「页面重定向次数过多」的报错。今天结合评论区的提示终于找出了原因,如下图:

原因1

原因2

解决方案

  • 将 1Panel 中的 HTTP 选项从「HTTP 跳转到 HTTPS」改为「禁止 HTTP」
  • 或者,将 Cloudflare 中的 SSL/TLS encryption mode 改为更高级的 Full 或者 Full(strict)

另外,由于国内的网络环境特殊,Cloudflare 的免费套餐的路由往往不直接走中国境内的服务器,所以套用 CDN 之后会有可能导致延迟增加,我分别测试了手上两台服务器套 CF 前后的测速对比,如下图:

测速对比

可以看到我这里在套用 CDN 后在速度没有显著提升甚至下降的情况下,延迟却增加了很多。当然, CF 的 CDN 也不是一无是处,当服务器的 IP 被墙,可以套用 CDN 拯救被墙的 IP。由于每个人的网络环境不一样,你也可以自己对比套 CDN 前后的速度看是否有提升。 另外,网上还有一些「Cloudflare 优选 IP」的教程,我这里实在是懒得折腾了,就不展开了。