VPS配置记录

本文中内容皆为转载,原文链接如下

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

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

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

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

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

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

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

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

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

开启BBR

修改 TCP 拥塞控制算法为 BBR

以下内容摘自 亚马逊 AWS 官方博客——从流量控制算法谈网络优化 – 从 CUBIC 到 BBRv2 算法

TCP 的 BBR(Bottleneck Bandwidth and Round-trip propagation time,BBR)是谷歌在2016年开发的一种新型的 TCP 拥塞控制算法。在此以前,互联网主要使用基于丢包的拥塞控制策略,只依靠丢失数据包的迹象作为减缓发送速率的信号。这样做的的效果还是不错的,但随着全球化互联网的迅速普及,我们所使用的网络已经发生了巨大的变化。我们拥有了越来越大的带宽,而现在的互联网质量也越来越好。于是我们观察到了一些新的问题,比如影响延迟的缓冲区膨胀的问题。BBR 尝试通过使用全新的拥塞控制来解决这个问题,它使用基于延迟而不是丢包作为决定发送速率的主要因素。

下图是一个原理的演示:

talking-about-network-optimization-from-the-flow1-1

其实 BBR 算法具体的原理我也不是很懂,我们只需要知道 BBR 是一种新型拥塞控制算法,可以使 Linux 服务器 「显著地提高吞吐量和减少 TCP 连接的延迟」 即可。

网上有不少「一键开启 BBR」的脚本,但是有些脚本可能会涉及到修改内核。这里提供一种无需修改内核开启 BBR 的方法 (要求 KVM 虚拟化且 Linux 内核高于 4.9)

1
2
3
4
5
6
7
#内核版本高于 4.9 就行。
uname -r  
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
#执行下面命令,如果结果中带有bbr,则证明你的内核已开启bbr。
sysctl net.ipv4.tcp_available_congestion_control

在1panel面板添加Swap

PixPin_2025-06-12_16-30-12

我这里在面板添加后出了点问题,所以改为手动添加

手动添加Swap(可选)

查看 SWAP 空间

在开始创建之前,请先使用以下命令检查您的 Ubuntu 系统是否已启用 SWAP 空间:

1
sudo swapon --show

该列表会包含所有的 SWAP 空间,包括 SWAP 分区SWAP 文件。如果输出为空,则表示当前系统尚未启用 SWAP 空间。

虽然可能,但同一台 Linux 计算机上有多个 SWAP 空间的情况并不常见。

创建 SWAP 文件

与 SWAP 分区相比,SWAP 文件具有一个重要的优势,即文件大小可以轻松调整,而无需触及磁盘分区来更改交换空间的大小。

在本节中,我们将创建一个新的 SWAP 文件,并将其添加到当前的交换池中。

  1. 在「终端」中使用以下命令创建一个空白文件:

    1
    
    sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
    • 文件大小计算为 1M × 4096 = 4G,要创建不同大小的文件,请更改相应的count参数值。
    • /dev/zero是 Linux 系统中的一个特殊块设备,在每次读取时输出零字节。
  2. 使用以下命令设置正确的文件权限:

    1
    
    sudo chmod 600 /swapfile
  3. 使用使用mkswap实用程序将文件格式化为 SWAP 空间:

    1
    
    sudo mkswap /swapfile
  4. 使用以下命令激活 swap 文件并将其添加到交换池中:

    1
    
    sudo swapon /swapfile
  5. 要让创建好的 SWAP 空间永久生效,需要将 swapfile 路径内容写入到/etc/fstab文件当中:

    1
    2
    
    # 将以下内容写入/etc/fstab文件中
    /swapfile swap swap defaults 0 0

    PixPin_2025-06-12_16-53-12

  6. 使用swaponfree命令验证 SWAP 文件是否处于活动状态,如下所示:

    1
    2
    3
    
    sudo swapon --show
    ##或者
    sudo free -h

    PixPin_2025-06-12_16-54-06

参考教程:如何在 Ubuntu 中创建、删除和调整 SWAP 空间 - 系统极客

该文档中还有==「调整 Swappiness 值」「删除Swap文件」==的教程,有需要可以参考

自动同步服务器时间

PixPin_2025-06-12_16-59-21

放行防火墙所有端口

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

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

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

安装 3x-ui 控制面板

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

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

项目地址:MHSanaei/3x-ui

使用一键脚本进行安装:

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

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

使用 3x-ui 搭建节点

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

PixPin_2025-06-12_17-09-18

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

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

各设置项如下图所示:

3x-ui-2

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

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

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

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

1panel-new-website

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

 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
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,否则配置不会生效:

image_8

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

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

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

1panel-ssl

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

1panel-dns

添加 DNS 解析域名

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

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

PixPin_2025-06-12_17-29-58

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

为网站绑定证书

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

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

PixPin_2025-06-12_17-35-29

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

连接节点

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

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

PixPin_2025-06-12_20-52-19

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

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

PixPin_2025-06-12_20-52-38

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

PixPin_2025-06-12_20-52-54

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

PixPin_2025-06-12_20-53-08

补充说明

  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 解析设置页,为解析记录启用「小黄云」就可以了。

PixPin_2025-06-12_20-53-50

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

PixPin_2025-06-12_20-54-51

PixPin_2025-06-12_20-55-00

解决方案

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

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

PixPin_2025-06-12_20-55-18

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

0%