Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

2026-08-01 23:39:21 0点赞 4收藏 0评论

前一篇文章我们讨论了 Hermes 的桌面版与 NAS Docker 部署版的协作和通信思路。

当时说其中 Cloudflare Tunnel 这个方法的配置比较复杂,单独写篇文章说。 那我们这就开始。


托管域名、创建隧道

首先我们需要一个托管在 Cloudflare 上的域名。

在 Cloudflare 后台添加站点、修改 DNS 解析到 Cloudflare 就行了。这里不展开说了。

打开 Zero Trust 控制台,在左侧菜单选择 NetworksTunnels,在右侧页面点击 创建隧道

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

给隧道起个名字,比如 home-nas

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

选择 Cloudflared 类型,我们是在 NAS 通过 Docker 部署,所以选择 Docker

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

保存后,页面会显示一个命令,我们把这行命令中的 token 复制下来。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

这个 token 是隧道连接的凭证,后面部署容器要用。


NAS部署cloudflared容器

在NAS的Docker里,用项目(Compose)方式新建一个项目,填入以下内容:

services: cloudflared: image: cloudflare/cloudflared:latest container_name: cloudflared restart: unless-stopped network_mode: host environment: - TUNNEL_TOKEN=刚才的Token粘贴到这里 command: tunnel --no-autoupdate run

这个配置有几个要点:

(1)TUNNEL_TOKEN 填刚才复制的那个Token。

(2)network_mode: host 让容器直接用宿主机网络,访问NAS上的服务用 localhost:端口 就行,不用额外配置。

部署完启动容器,回到 Zero Trust 控制台,Tunnels 页面能看到连接器状态变成绿色隧道连接成功

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

配置域名路由

隧道连上了,接下来要告诉Cloudflare:访问哪个域名,流量转发到 NAS 的哪个服务。

在隧道详情页,点击 添加域名

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

因为我们要把 NAS 上的服务暴露出去,所以

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

填上需要暴露的服务。

填写子域服务 URL 填写服务在 NAS 的地址和端口。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

这样,这条路由就添加成功了。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

把所有需要暴露的服务都添加好路由。

刚才我演示了 Hindsight 的默认 API 调用端口是 8888

顺便提一下:Hermes 的默认 API 调用端口是 8642

以上如果部署时你没有改,直接抄就行。如果改了,就按你改过的端口。端口可以在 NAS 上 部署 Hermes 的 Compose 文件中看。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

我这里只需要 hermes 和 hindsight,所以只添加了这两条路由。大家如果有其他服务需要暴露,可以举一反三。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

注意: 如果 NAS 没有 ipv 6 地址,记得把 DNS 中 AAAA 记录删掉,把 Pseudo IPv 4 改成 ""。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

这个功能就是解决 "客户端只有 IPv 4 但 Cloudflare 只返回 IPv 6 地址" 的问题。

这时,直接在浏览器访问 https://hindsight.你的根域名,应该能看到 Hindsight 的响应了。

但现在就是裸奔状态,任何人知道域名都能直接调用你的 API,非常危险。

所以,到这步别放松,我们还要给他们上把锁。


配置锁-零信任认证,别裸奔

这是大多数教程不讲的,但我觉得是最重要的部分。

Cloudflare Access 是 Zero Trust 的免费功能,作用是在域名前面加一层身份验证。 没通过验证的请求,任何访问都到不了我们 NAS 上的服务。

我们就利用这个工具来加把锁。

左侧栏进入Zero Trust控制台,选择 访问控制-应用程序,点击 添加应用程序

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

选择 自托管和私有,点击 继续使用 自托管和私有。和刚才一样,填入子域

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

Access 策略这里 创建新策略

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

策略规则选 任何 Access Service Token,右边策略详细信息中,策略名称填 service-auth,操作选 服务身份认证,策略会话持续时间选 与应用程序会话持续时间相同

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

往下拉,点击 保存策略

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

这样策略就生效了。同样地,我们举一反三,把所有暴露在外的服务都设置好策略。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

配置钥匙-创建服务令牌

然后我们去配置 “钥匙”。在左边栏 访问控制 下点击 服务凭据,在右侧点击 添加服务令牌

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

服务令牌名称随便写。

服务令牌持续时间大家根据自己喜好设置,在安全和省事之间做选择。我懒,选的无期限。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

⚠️ 要保存好 标头和客户端ID标头和客户端密码 这两个信息,这个是通信的关键。只显示一次。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

这样,桌面版 Hermes 在外面访问 NAS 的服务时,必须带上这两个认证信息,才能通过认证,连接到我们 NAS 上的服务。

建议为每个服务设置单独的凭据,这样他们各有独立的Access策略,互不影响。哪怕其中一个Token泄漏了,另一个子域名的服务还是安全的。

当然,嫌麻烦的话,用同一个也行。


桌面端Hermes配置

这一步让桌面版 Hermes 能自动访问 NAS 的 Hindsight 和 NAS 上的 Hermes 。

对接 NAS 上的 Hermes 需要开启它的 API 访问,并设置一个强密码。在 NAS 端 Hermes 的 Compose 中,environment 下加上:

    environment:       - API_SERVER_ENABLED=true       - API_SERVER_HOST=0.0.0.0       - API_SERVER_PORT=8642       - API_SERVER_KEY=16位以上的长密码

密码记得替换。

然后,告诉桌面端的 Hermes,让他通过刚才在 Cloudflare 设置的 Hermes 服务的 域名CF-Access-Client-IdCF-Access-Client-SecretHermes API key 访问 NAS 端的 Hermes。

不设 API Server Key 也行,但会提示安全问题。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

Hindsight 也一样设置,但是要把 CF-Access-Client-IdCF-Access-Client-Secret 直接改到桌面版的 Hindsight 插件里。

同样把 Hindsight 的域名、Access 认证信息告诉桌面版 Hermes,让他自己改就行。

Hermes双端通信进阶方案:CF Tunnel+零信任认证全流程

双端实际协作思路和感受

实际的桌面版、NAS 端两个 Hermes 协作的思路、案例详见我以前的文章。

关于速度

国内访问 Cloudflare 偶尔有波动,这是事实。 但实测下来,纯API调用的体感就是"稍微慢一点"。

因为 Hindsight 的 retain 操作本地调用也要几秒时间,所以隧道多出来的100-200ms基本无感。

如果遇到国内访问Cloudflare域名变慢,可以配优选IP解决,网上方案很多,按需加。

或者把包括内网穿透在内的几种通讯方式都配好,按次序 fallback 使用,这样保证指令的传递不出问题。

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
4
扫一下,分享更方便,购买更轻松