加载失败
该讨论围绕一篇关于逆向 UniFi inform 协议的文章展开,核心问题是如何在托管/多租户环境下完成设备的初始採用(adopt)并保持后续管理可路由。评论补充了 UniFi 摄像头与 AP 在採用和流媒体上的差异:摄像头通过 UDP TLV 广播被 Protect(Ubiquiti 的 NVR)採用并以 FLV 推送视频,而不是直接提供 RTSP/ONVIF。另有关于把 UniFi 的 MongoDB 后端迁移到 FerretDB、用 DNS 或 DHCP Option 43 实现採用、以及用 OpenWrt/hostapd 实现多厂商互通和漫游的运维与工程折衷讨论。整体讨论混合了协议细节、实现技巧与运维权衡,适合有网络设备和自托管经验的读者。
文章与评论聚焦在托管/多租户场景下的初始採用问题:设备在发现阶段通常只有 IP/MAC、还未设置 hostname,因而无法靠普通 HTTP 虚拟主机(Host header)完成路由。为了解决这一点,作者和回帖者提出用 MAC‑based proxy(根据设备 MAC 路由请求)在单一公网 IP 下把初始採用请求分发到对应租户。评论里补充了常见实现手段:用 DNS 指向租户子域(Host header 生效后可切换回常规代理)、或者在 DHCP 场景下通过 DHCP Option 43 生成器帮助採用流程,以及通过预登记 MAC 或源 IP 做租户映射。相关回复还指出应把这些细节(如 set-inform 后的切换流程和 tamarack 的 migration 文档)写入文章以便运维参考。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]
有人建议直接为每个租户跑独立 VM 或给每个 VM 分配公网 IP、也有人提议让客户端登记其 IP 或按登录来源/目标做路由。反对意见认为这些方案在现实场景中有硬缺陷:公网 IP 成本与可得性受限,客户端 IP 不稳定(门店或家庭场景会变动),登录来源并不一定等于设备所处的 UniFi 网络,因此无法可靠映射。还有人说流量检测(inspection)在某些情形可用,但相比 MAC 路由不够稳健;评论普遍把作者的 MAC 代理方案描述为更通用且“bulletproof”。综上,工程折衷下 MAC‑based routing 被视为比每租户 VM 或按源 IP 路由更实际的托管方案。
UniFi 摄像头的採用流程与 AP 不同:Protect(Ubiquiti 的 NVR 设备)通过 UDP 广播(端口 10001)用 TLV(Type‑Length‑Value)发现摄像头,随后通过 SSH 连接并下发 set-inform 来完成注册。被採用后摄像头并不直接给出 RTSP/ONVIF,而是把视频以 FLV v1(FlashVideo)在 TCP 7550 上推送到被採用的 NVR,这让第三方 NVR(如 Frigate)接入变得复杂。评论中有人贴出 set-inform 发起 websocket 到 /camera/1.0/ws 的请求头(包含 Camera‑MAC、Camera‑IP、Device‑ID、Firmware 等),并引用了 unifi‑cam‑proxy 等开源实现来模拟 Protect,证明可通过逆向工程改变密码并截取 FLV 流;但也有人指出新机型(如 G4 系列)兼容性可能更差。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
有用户尝试把 UniFi 的 MongoDB 后端迁移到 FerretDB(一个以 PostgreSQL 为后端的 MongoDB 兼容层),并报告日常运行大体可行,但备份恢复会失败。具体问题在于 FerretDB 目前不完全支持某些 MongoDB 语义或操作(例如涉及重命名集合的恢复流程),因此 restore 会报错。评论里有人进一步询问对 FerretDB 的备份策略:是否继续用 MongoDB 工具或改用 PostgreSQL 的备份工具,说明迁移在运维层面还有实际障碍需要解决。
多位回帖者表达了对一个开源、跨厂商 AP 控制守护进程的需求,期望单一服务能配置 Ubiquiti、MikroTik、TP‑Link 等设备并管理客户端。一个常见建议是把 AP 刷成 OpenWrt(一个开源路由固件),在设备端统一运行 hostapd(hostapd 是常用的 Wi‑Fi AP 管理守护进程),从而只需维护一种下发/配置协议。关于无缝漫游,有人提到 802.11r Fast Transition 并指出 hostapd 本身就支持核心漫游机制,理论上可在 UniFi 与 OpenWrt 之间实现互通,但要做到跨厂商、稳定的漫游仍需细致配置和测试。总体上,多厂商控制器是可行方向但目前尚未成为通用、开箱即用的解决方案。
作者提到其域名被 NextDNS(一个 DNS 过滤/隐私服务)因“新域名”策略阻挡,引发关于是否把新注册域名默认列入阻断名单的争论。支持者认为域名生成算法(DGA)使新域在恶意流量中占比较高,把新域列为高风险具有现实依据;反对者则指出这会给管理员带来永无止境的白名单请求,破坏终端用户体验并增加误判成本。评论呈现了安全与可用性的典型权衡:对企业环境可能可接受但对普通用户或产品发布者会造成麻烦。讨论强调这是一个策略选择而非技术绝对优劣。
有回帖指出 UniFi Controller 相较某些轻量替代(如 OpenWISP)更耗内存,长期运维成本偏高。另一条担忧是大量廉价设备(例如 USG‑3P)面临 EOL(生命周期终止)风险,若厂商停止支持会影响长期可用性。作为缓解,评论提到 OpenWrt 对一些旧设备仍提供支持,能把设备从厂商控制器上“解放”出来,延长使用寿命。总体讨论将资源消耗与设备可持续性作为评估控制方案的重要维度。
set-inform: UniFi 设备(AP/摄像头)用于告知控制器地址的命令/流程名称,採用后会把设备设置为向指定控制器注册并通常会触发用 websocket(如 /camera/1.0/ws)进行进一步通信。
DHCP Option 43: DHCP 的厂商特定选项,用来在设备通过 DHCP 获取 IP 时附带控制器地址等定制信息,常用于没有 DNS 的现场场景自动告知设备管理服务器。
FLV (Flash Video) v1: UniFi 摄像头在被 Protect 採用后常用的流媒体格式,摄像头将 FLV 流通过 TCP(默认端口 7550)推送给 NVR,而不是直接暴露 RTSP/ONVIF。
TLV (Type‑Length‑Value): 一种常见的二进制编码格式,UniFi 摄像头发现时以 TLV 形式在 UDP 10001 上广播设备信息(MAC、固件、序列号等)。
FerretDB: 一个开源的 MongoDB 兼容层/代理,通常把 Mongo 查询语义映射到 PostgreSQL,目标是替代 MongoDB 做后端,但与原生 Mongo 在某些语义或备份恢复场景上存在兼容差异。
hostapd: hostapd 是 Linux 下常用的 Wi‑Fi AP 管理守护进程,用于配置和运行接入点功能,许多 OpenWrt/自定义固件基于它来实现 AP 与认证功能。
MAC‑based proxy / MAC 路由: 一种根据设备 MAC 地址在网络层或应用层把初始採用请求转发到正确租户控制器的做法,适用于设备尚未有 hostname 的初次发现阶段。