我是使用一套更简单的办法:
一、硬件资源
1 、J4125*1 装 PVE
2 、tplink 摄像头*2
3 、routeros 主路由*1
3 、阿里云清凉 VPS*1
二、软件部分
1 、虚拟黑群 surveillance station (负责录像),frpc 对接阿里,将 5001 端口映射,视频加密,并启用 https,安装 lucky 自动续期的
a.com 证书
2 、阿里清凉,frps 对接群晖,dns 解析
a.com 到阿里
2 、容器 lucky (负责证书续期更新)
三、具体使用部分
1 、手机无论何时何地何网,surveillance app 访问
https://a.com:5001 (阿里)->群晖 surveillance station:5001 读取录像,使用只读账号观看视频,实测手机观看单摄像头 h264 码流,家宽 5mbps 上传足以
2 、routeros 封禁摄像头的 mac 地址访问任何外网,只允许群晖访问,防止被黑或网络暴露
该方案虽然无法做到外网直连家里,但是我测试后最理性性价比较低的方案了。因为实测过使用 stun 打洞后动态重定向的方式不适合 surveillance app ,网页使用没问题,具体实测结果流程如下:
1 、在 ros 上跑 containet 的 lucky:实现了通过 upnp 动态映射端口、并将端口通过 stun 成功在 NAT1 上打洞;
2 、cloudflare 上添加 A 记录 IP 随便填给主域名(开启 CDN )
3 、在 lucky 上跑 webhook 将最新的打洞地址
https://xxx.xxx.xxx.xxx:xxxx 通过 API PATCH 到 cloudflare 的动态重定向规则,访问主域名自动 307 重定向到该打洞地址,以实现访问主域名可以得到最新的打洞地址;
4 、经过上述一番骚操作,浏览器访问主域名可以直接跳转到群晖的地址:5001 这个没有任何问题,但 surveillance station 无法直接通过该主域名访问,ios 的 ds cam 能够登入但会卡很久很久,登入后无法查看录像及实时视频流,经多次抓包调试及询问 GROK/GPT 最后基本确定是 APP 无法使用重定向的方式,固此这个方法以失败告终,无法满足手机访问家中群晖录像的需求