通过 Cloudflare Tunnel 实现 EasyTier 无公网自建中转服务器

最近 EasyTier 的公共服务器频繁出现问题,于是在搜索资料以后,找到了使用 Cloudflare Tunnel 转发 websocket 端口实现中转服务器打洞的效果

前提条件

  1. Cloudflare 启用了 WebSockets 功能 (在 Cloudflare 仪表板的“网络”选项里能看到 WebSockets 选项是否打开)
  1. Cloudflare 仪表板中的 SSL/TLS 加密模式选择:完全
  1. 本地安装了 cloudflared 和 easytier

配置方法

Easytier

命令行

只需要确保 EasyTier 正在监听 WebSocket 协议,命令行参数:
当然,如果你希望你的网络更安全一点可以启用私有模式:--private-mode ,开启了私有模式以后不会允许与本网络不同的网络名称和密码的客户点通过本服务器进行握手
或者通过 --relay-network-whitelist 参数限定可被转发的网络名白名单(空格分割的通配符列表,如 "ab* abc"

luci app

notion image
notion image

Cloudflare Tunnel

将 Cloudflare Tunnel 配置好以后,进入 Cloudflare 仪表板 - Zero Trust - 网络 - 连接器
选中刚刚创建的隧道,添加一个已发布应用程序路由
notion image
填写好你想要的子域名,服务选择HTTP 并且指向刚刚配置的 Easytier 监听的端口
notion image

为什么选择 HTTP?

EasyTier 监听的是 WebSocket, 但 Cloudflare Tunnel 的配置里填写 HTTP 即可, Cloudflare 会自动识别并处理协议升级请求

Easytier 客户端连接

由于服务端监听的 11011 端口现在已被 Cloudflare 中转,客户端现在只需填写刚刚创建好的域名即可
注意,现在 ws 被 Cloudflare 中转以后自动进行了加密和套了证书,所以客户端需要使用 wss 进行连接
客户端对等节点 (-p 参数)填写:
notion image
如果你使用的 EasyTier 版本 < 2.5.0,这里需要填写端口号:wss://easytier.example.com:0 或者是ws://easytier.example.com:0 EasyTier 会根据协议类型尝试使用默认端口,在新版本中没这个要求了
 
现在,你的服务器已经可以通过 Cloudflare 全球边缘节点随时随地进行连接,无需任何公共服务器
 
作者:Fanx
声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

Previous

Magisk 搭配 UnblockNeteaseMusic 无感知解锁网易云音乐客户端变灰歌曲

Next

UU 加速器在新版 OpenWrt nftables 环境中的使用技巧 (不全开防火墙的方法)

评论