节点搭建教程,Vmess + WebSocket + TLS + 网站伪装
编辑真的好久没更新了博客了。本篇文章教给读者搭建一个稳定防封、高速、并且使用 Vmess 协议,适用于各种客户端的节点。并且,只要按照教程中的步骤操作,就一定能够搭建成功。
为了实现目标,你需要准备:
- 一台 VPS(云服务器)。内存建议至少 1GB,地区香港新加坡最佳, 日本韩国次之,如果线路好的话欧美地区也不是不可以
- 一个域名,如果想要和教程完全一致,可以修改域名的 Nameserver 为 Cloudflare,不修改也没关系
- 一些基础的 Linux 服务器知识,你至少需要懂得如何使用 SSH 工具连接服务器(SSH 工具可以使用简单易用的 FinalShell)
本教程中的云服务器为使用 「阿里云高校学生 300 元无门槛优惠券」 购得的香港轻量应用服务器。虽然速率只有 30M,勉勉强强达到翻墙的标准,但胜在线路和延迟优秀(ITDOG 测速全绿)、价格低廉(24 元/月,300 块刚好能用一年)。
使用的域名为 6 位数字 xyz,在 Spaceship 上注册只需要 0.6 刀一年。
服务器开机后的基本优化,安装必要的软件
- 主要需要完成的操作:
- 安装 1Panel (必须完成)
- 开启 BBR
- 添加 Swap(也可以在 1Panel 内完成)
- 自动同步服务器时间,由于 Vmess 协议的特性,若服务器和客户端时间不同步,节点会连接失败(也可以在 1Panel 内完成)
- 可选的额外操作:
- 如果使用国内大厂如阿里云或腾讯云的服务器,建议 DD 纯净系统,或使用一键脚本删除云服务器监控
- 修改默认 SSH 端口并关闭密码登录,开启密钥登录(也可以在 1Panel 内完成)
放行防火墙所有端口
如果使用的是大厂云服务器(如阿里云、腾讯云、Azure、DigitalOcean 等等),你需要完成此操作来避免后续不必要的麻烦。
以阿里云为例,可以在轻量应用服务器的管理后台放行端口,如果不确定要放行哪些端口的话,可以放行 TCP 协议的所有端口。
如果没有在服务器管理面板中找到防火墙,那么你的服务器可能是默认放行所有端口的。
安装 3x-ui 控制面板
Xray-core
是 v2ray-core
的超集,可以用于搭建包括 ss
、vmess
、vless
、trojan
等一系列主流协议翻墙节点。
而 x-ui
是 Xray-core
的可视化在线面板,无需编辑繁琐的 JSON 配置文件即可搭建节点。然而,由于原版 x-ui
项目长时间未更新,这里使用一位伊朗开发者开发的 x-ui
衍生项目 3x-ui
。(原来「墙国」不止强国有)。
使用一键脚本进行安装:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
安装时输入 y
并回车,选择手动配置面板登录信息。用户名和密码设置地越复杂越好,尽量不使用常用密码。面板的端口号建议设置为 10000
,后面会用到。
使用 3x-ui 搭建节点
在浏览器地址栏中输入 服务器IP:10000
进入 3x-ui
面板。页面底部将语言切换为中文,登入 3x-ui
面板。面板界面如下:
左侧选择 入站列表
,选择 添加入站
(其实就是新建节点的意思)。各设置项按如下设置:
- 备注即为节点名。我的习惯是按照
地域 + 云服务厂商 + 速率或流量
的格式进行修改 - 协议改为
vmess
- 监听修改为
127.0.0.1
- 端口号建议设置为
10001
,后面会用到 - 传输设置为
WS
- 复制「客户」中随机生成的「电子邮件」,并复制到「小路」中,前面不要忘了加上斜杠。记住这个生成的路径,后面会用到
- 其余项均设置为默认即可
各设置项如下图所示:
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;
}
对以上配置文件的解释:
- 分流路径需要修改为刚刚创建节点时填写的
小路
,也就是说只有该路径下的请求会被分流到我们搭建的节点上 - 平时在浏览器中输入
free.你购买的域名.域名后缀
,会跳转到一个伪装站点上。这个伪装站点是 Maven 的中央仓库,满足大流量的特征。你也可以填写其他的网站,只要满足大流量的特征即可。
每次保存完配置文件后,需要重启或重载 Nginx,否则配置不会生效:
保存 root.conf
配置文件后,我们再来申请 SSL 证书。
1Panel 中选择左侧侧边栏中的 网站 - 证书
,点击 ACME 账户
并选择创建 ACME 账户,输入你常用的邮箱,其余默认,点击确认。
点击蓝色的 申请证书
按钮,按照下图填写:
点击确认按钮,回到列表中,发现证书的状态为 等待申请
,点击申请按钮,此时会要求到 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
,其余默认。
点击确认后,右键节点,选择测试节点延迟和速度,如果上述所有内容都操作无误,那么节点能够正常测试出延迟和速度。
右键节点,选择 分享服务器
,此时会生成节点的二维码和链接,方便其他设备使用。
补充说明
- 节点搭建完成后,如果有防火墙的话建议关闭 3x-ui 面板的端口,避免被爆破攻击,可以只保留
80
443
和服务器的 SSH 登录端口 - 可以使用订阅转换工具,生成适用于包括 Clash、Shadowrocket 在内的,各种客户端的订阅链接
- 如果机器的内存太小(例如低于 512M),由于 1Panel 会占用大概两三百 MB 的内存,所以此时我不建议安装 1Panel 面板,建议按照不良林的视频,只安装 Nginx 和 x-ui 面板,并用 acme.sh 申请证书
- 相比同样使用伪装站点的 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,却遇到了节点连接不上的问题,浏览器访问我设置的伪装域名也一直出现「页面重定向次数过多」的报错。今天结合评论区的提示终于找出了原因,如下图:
解决方案:
- 将 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」的教程,我这里实在是懒得折腾了,就不展开了。
- 16
- 10
-
分享