跨网段环境下,小米摄像机配置NAS存储

2022-08-06 21:53:02 343点赞 2294收藏 183评论

背景

我的网络结构是这样的:

跨网段环境下,小米摄像机配置NAS存储

我家,父母家,丈母娘家,三地通过 wg 异地组网,设置好路由表后,内网192.168.x.x之间可以互通。

不幸的是,小米摄像机默认只支持保存到本地局域网的NAS中,访问不到远程的群晖

关注
品牌
粉丝:

  • 商品百科

  • 好价

  • 社区文章

跨网段环境下,小米摄像机配置NAS存储 。

分析

跨网段环境下,小米摄像机配置NAS存储

结合抓包分析了一下,米家App在设置NAS存储的流程是这样的:

  1. 用户第一次打开NAS存储的设置页,触发摄像机搜索局域网的NAS设备(局域网广播,NBNS协议)。

  2. NAS设备在收到广播后,进行响应。

  3. App出现NAS的设备列表,选择一个输入账号密码,选择存储路径,开始文件同步。

第一第二步是为了提升用户体验,避免手工输入ip地址进行的“用户体验优化”,实际上是非必要的。我印象中去年还是前年的时候,这个地方就是手工输入IP地址的,现在变了。

准备工作

经过一系列摸索,由于小米摄像头只支持SMB1,并且不支持传输加密(这个是网上很多文章没有提及的,坑了我很久),因此在配置前请先完成以下工作(下面以群晖为例):

打开「控制面板」->「文件服务」->「SMB」->「高级设置」的常规选项卡,「最小 SMB 协议」选择 SMB1,传输加密模式选择「由客户端定义」,保存,如下图。

跨网段环境下,小米摄像机配置NAS存储

解决方案

方案一:局域网广播转发

优点:是个普适性的解决方案,不仅仅是为了米家摄像头。利用此工具顺便可以把 mDNS、Bonjour、SSDP 转发一起给做了;这样 HomeKit、Airplay、打印机共享、局域网联机游戏等许多应用场景都可以一并解决。

缺点:对于 layer 3 vxn 例如 wg,配置略微复杂;并且需要对路由器有操作权限,如果其中一端是你的公司网络,而你又不是网管的话,建议方案二。

这里只对局域网广播进行转发。我用的是 udp-broadcast-relay-redux 这个工具,openwrt 下可以直接opkg安装现成的,也可以下载源码编译,或者构建docker容器,请在github自行搜索工具名称,这里不让发。

例子在README里也已经给出了,针对基于tun设备的vxn(wg),需要在两边路由开启两个进程,结合我的网络环境例子如下:

发起方:

udp-broadcast-relay-redux --id 1 --port 137 --dev br-lan --dev wg0 -t 192.168.253.3

(137为 NBNS 广播端口,192.168.253.2为接收方的wg节点IP)

接收方:

udp-broadcast-relay-redux --id 2 --port 137 --dev br-lan --dev wg0 -t 255.255.255.255

这只是单向的广播转发,如果想要双向广播的话,A、B网络还需要互换位置,再开两个进程。。跨网段环境下,小米摄像机配置NAS存储 

如果只是为了米家摄像头的NAS设置的话,只要单向转发就可以啦,并且在设置完毕之后就可以结束进程了。

方案二:通过 miiocli 直接写入配置

优点:视频储存时长相比App来说多了半年和一年两个选项(可能和摄像头型号有关)。另外还有其他功能可以探索。

缺点:需要在命令行工具里输入米家账号和密码,在意隐私的同学可以去检查下源代码,应该问题不大;另外因为设备原因,偶尔会出现无法连接的现象,并且出现之后必须重启设备才能恢复正常。

(写入SMB配置的功能刚提交PR,还未合入和发布,请耐心等待跨网段环境下,小米摄像机配置NAS存储 )

需要有python3和pip,安装命令:pip3 install python-miio

初次使用时,先执行 miiocli cloud list 命令获取设备token,按照提示输入账号/密码/国家

查看NAS配置:

miiocli chuangmicamera --ip [摄像头IP地址] --token [摄像头Token] get_nas_config

写入NAS配置:

miiocli chuangmicamera --ip [摄像头IP地址] --token [摄像头Token] set_nas_config on "smb://user:pass@192.168.40.2/camera" realtime quarter

set_nas_config后面共4个参数,第一个on/off代表开关,第二个是smb的路径,按照标准的url格式填,第三个上传间隔realtime/hour/day,第四个储存时长week/month/quarter/halfyear/year。

方案三:SMB套娃(不推荐)

把远端的群晖文件夹挂载到本地路由器上,本地路由器再开启SMB服务共享此文件夹。

一开始我就是这么操作的,实测传输性能比较慢,十分不建议,陆陆续续同步了一个礼拜。跨网段环境下,小米摄像机配置NAS存储

其他

设置永久储存

储存时长三个月也好,一年也好,都不是永久的。每次同步前摄像头都会把NAS里过期的录像给删了。如果你想存一辈子怎么办?跨网段环境下,小米摄像机配置NAS存储 

很简单,首先单独给小米摄像头创建一个群晖账户(具体不讲了),然后修改他的权限,让他只能读写,不能删除跨网段环境下,小米摄像机配置NAS存储 。

在「控制面板」->「用户与群组」->「用户账号」页面选中这个账户,点击「编辑」->「权限」修改账户权限,对需要设置权限的文件夹勾选「自定义」,如图:

跨网段环境下,小米摄像机配置NAS存储

在接下来弹出的「权限编辑器」窗口,取消选中「删除子文件夹和文件」和「删除」这两项,保存,大功告成。

跨网段环境下,小米摄像机配置NAS存储

解决无法定期同步的Bug

不知道各位有没有遇到同样的问题,我的摄像头开启NAS存储后,只会把当前SD卡的视频进行同步,同步完毕后任务就结束了,上传时间间隔不管是实时、一小时、还是一天,都不生效,这还玩个啥呀跨网段环境下,小米摄像机配置NAS存储 。好在有miiocli工具,我们可以设置一个定时任务,每天重新开启一下。周期建议不要太短,每次开启后摄像头会做许多前置工作(登录SMB,获取目录和文件信息,滚动删除过期的视频,然后才上传最新的视频),略耗时。

核心命令就是下面这句,至于定时任务怎么配置就不说啦,以及运行环境是在群晖里还是docker容器里各位自行决定:

miiocli chuangmicamera --ip [摄像头IP地址] --token [摄像头Token] set_nas_config on "" realtime quarter

参数介绍请回顾上文方案二,这里第二个参数可以留空,也就是""(两个双引号或者两个单引号),不能删掉,删掉就少了一个参数。留空表示不对NAS存储位置进行修改。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

文章很值,打赏犒劳作者一下

打赏
6人已打赏
183评论

  • 精彩
  • 最新
  • 这是我不花钱就能看的吗? [邪恶]

    校验提示文案

    提交
    在张大妈潜水好像也有四五年了,今天突然有兴致了来水一贴 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 期待wg 异地组网教程

    校验提示文案

    提交
    这个应该还好,就是繁琐点 [高兴]

    校验提示文案

    提交
    用docker做服务端基本就是复制粘贴几行命令,dockerHub上都写好了,各个平台也都有官方现成的软件可以直接下载导入配置就能用

    校验提示文案

    提交
    还有11条回复
    收起所有回复
  • 买支持onvif的摄像头吧。这个是实在没办法的办法,占用摄像头性能。有些情况会卡死。一直显示传输中 , 传输出来的视频文件也不方便查看, onvif 的可以随意拖动时间条同时查看多个摄像头!

    校验提示文案

    提交
    下次一定,先把手上几年前买的给折腾一下 [脸红]

    校验提示文案

    提交
    有推荐的型号吗

    校验提示文案

    提交
    还有8条回复
    收起所有回复
  • 局域网跨网段把两个设备的子网掩码设置成255.255.252.0试试
    我们两个网段这样可以互通

    校验提示文案

    提交
    那就要手动设置各个设备了,我有空试试

    校验提示文案

    提交
    通过L3隧道是不行的。广播过不去。

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 小米摄像头不支持onvif 或者rtsp嘛?

    校验提示文案

    提交
    我这个是小白智能摄像机青春版,应该是不支持,没法用群晖的监控那套了

    校验提示文案

    提交
    TP-LINK摄像头支持onvif ,视频可直接存群辉,不过onvif只支持h264格式。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 我就是用了套娃的这种方式 虽然慢了点 可是摄像头数据也不大 足够了

    校验提示文案

    提交
    嗯嗯,也能用,不寒碜,就是心里觉得有点难受。。。于是有了这篇文章

    校验提示文案

    提交
    我是偶尔有重要的,开启群晖同步一下。然后把不需要的按日期删除。唯一不好处就是不能选择时间段备份。估计也没人和官方提意见

    校验提示文案

    提交
    收起所有回复
  • 转发广播emmm似乎会带来不必要的网络开销,而且一但转发了DHCP之类的可能会产生其他问题。
    话说我的网络环境中也有类似需求,目前是在三层vxn链路上做eoip桥,使特定的一个网口与对端二层相通,dhcp之类的也由对端提供。实测100M移动和100M联通,可以稳定的跑IPTV(消耗约20M带宽)。其实我也试过直接打eoipv6桥,由于不限速,效果可以更好

    校验提示文案

    提交

    0x5e

    作者

    piku

    这个工具可以只转特定端口的广播,应该对dhcp就没啥影响了吧?eoip第一次听到,我去学习学习

    校验提示文案

    提交
    收起所有回复
  • 小米哪几款摄像头支持转群晖啊?

    校验提示文案

    提交

    0x5e

    作者

    xuanqc

    具体不清楚诶,我的是小白智能摄像机青春版,好多年前的了,你已经买了的话app的设置里找找看吧

    校验提示文案

    提交
    我的云台pro。小白摄像机都支持。不过小米用的smb1协议,别的摄像头用通用协议的多。群晖也支持别的协议摄像头,就是他自己带一个摄像头。还是通用协议好啊

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 小米智能门锁的视频可以自动保存到NAS吗?

    校验提示文案

    提交
    你找找app设置里有这功能不?有应该就可以

    校验提示文案

    提交
    没有啊!只有让我花钱保存在小米云端的选项

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 最近才把小米路由器2 1T卖了。小米的摄像头要怎么保存到WinServer上的硬盘上?SMB共享的。不会抓包 [邪恶]

    校验提示文案

    提交
    不用抓包,只要你的SMB服务器最低支持SMB1,并且不强制要求通道加密就可以了。不知道也没关系,按方案一或者方案二试下看看。

    校验提示文案

    提交
    就是你写得那么简单明了。看不懂啊。需要详细的 [尴尬]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 我不会用这些需要经过第三方服务器的监控,不知道会不会被直播成网红

    校验提示文案

    提交
    照照室外还行吧,室内尤其我是我是肯定不能接受的

    校验提示文案

    提交
    问题是你自己组网的技术能力不一定会比小米的安全,如果可以外网查看的话,被攻击一般的都会暴露。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 居然有跟我相同问题的,你解决了,我换地址了

    校验提示文案

    提交
    说明这个app产品经理的设计真的有问题 [皱眉]

    校验提示文案

    提交
    收起所有回复
  • 我把阿里云盘映射到了本地,摄像头直接写入云盘。。。。。

    校验提示文案

    提交
    我不敢存公有云,要存也是私有云加密同步上去了

    校验提示文案

    提交
    店铺门口的监控,无所谓了

    校验提示文案

    提交
    收起所有回复
  • wg是啥?

    校验提示文案

    提交

    0x5e

    作者

    bjalex

    自己联想,这里不让说 [皱眉]

    校验提示文案

    提交
    同问

    校验提示文案

    提交
    收起所有回复
  • 我的云台Pro版实时同步到群晖一点问题都没有啊

    校验提示文案

    提交
    我的死活不同步,有bug可能是

    校验提示文案

    提交

    sky300

    0x5e

    作者
    我的大方也死活无法同步

    校验提示文案

    提交
    收起所有回复
  • 异地组网?没研究过,有啥好处没

    校验提示文案

    提交
    看你有没有需求啦,没需求就用不到了。如果需要访问异地的服务,相比于每个端口都映射到公网,这个安全性肯定是会好一点的,公网暴露的东西越少越好

    校验提示文案

    提交
    收起所有回复
  • 大方不支持吗?我用楼主讲的方案2 报错。
    miio.device:Found an unsupported model 'isa.camera.df3' for class 'ChuangmiCamera'. If this is working for you, please open an issue at 去看看

    校验提示文案

    提交

    0x5e

    作者

    sky300

    这个只是warning,不一定不支持。不过方案二的代码我提交了原作者还没有合入,现在还不支持写入smb配置 [高兴] ,你可以先试试其他功能是否正常?get_nas_config之类的

    校验提示文案

    提交

    sky300

    0x5e

    作者
    getconfig可以用。我得等原作者合并代码了~

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 我可怜的小米摄像头折腾下就进不去nas设置页面了Setting NAS config to 'On'
    WARNING:miio.device:Found an unsupported model 'mijia.camera.v1' for class 'ChuangmiCamera'. 给了这个警告,然后nas设置页面就进不去了,恢复出厂升级固件版本都没用,查询nas配置
    {'share': None, 'state': 4, 'error_code': 22, 'sync_interval': 300, 'video_retention_time': 7776000, 'last_sync_time': 0},不支持能否不改写啊,这样直接把我摄像头整废了啊

    校验提示文案

    提交
    不要慌,整废是不大可能的,我也经常进不去页面,已经习惯了 [喜极而泣] [喜极而泣] ,多试试,先打开一下sd卡页面再去nas页面感觉成功率高一点。。。还是不行重启下设备 [皱眉]

    校验提示文案

    提交
    警告只是你的型号没有加到支持列表里,不代表一定不支持,可以忽略

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 这个小白摄像头有个BUG,不知道你们有没有遇到?我是家里一台miniPC装win7 24小时开机硬盘samba共享作为存储使用的,这个小白摄像头设置nas网络存储后,会显示传输准备中,但是实际上已经在正常传输了,即使过几个小时再看,也还是传输准备中。有时候摄像头自己手动断电重启,nas设置会丢失。需要重新配置。

    校验提示文案

    提交
    是的。可能你sd卡里视频太多了,或者卡有点问题,我在格式化一遍之后就正常了,也不需要定期重新开启开关了 [高兴]

    校验提示文案

    提交
    收起所有回复
  • NAS存储的IP怎么看呀,getconfig返回的数据是这样的(addr=18852032),addr字段看着不是IP,我的设备信息是:小米摄像机云台2K版;Model: chuangmi.camera.029a02;Hardware version: Linux;Firmware version: 4.1.6_0329

    校验提示文案

    提交
    路由器里找找就有啦,一般家用路由器里都有个设备列表的

    校验提示文案

    提交
    作者你好,我看github里你那笔提交是不是没被合进去

    校验提示文案

    提交
    还有8条回复
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

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

举报成功

该举报信息「小小值」会优先核实并处理哦!