一台IPCamera的复活之路...

IPCamera

IP + Camera 即网际协议+摄像机,是一种由传统摄像机与网络技术结合所产生的新一代摄像机,一般摄像机包含内置 Web 服务,可以通过HTTP/HTTPS协议将内容传输给观测主机。IP Camera 至今已有十多年的历史。

百度百科(https://baike.baidu.com/item/IP-CAMERA)

前言

前段时间搞来两个监控摄像头,没有商标和其他任何说明,并且是已经用过的设备,因此 IP 地址和访问端口肯定也被更改了,于是陷入了无尽的思考… 经过近两天的资料查找和设备配置,目前已经可以投入使用,用途就是照看家里的三个娃 (doge。

下面分享一下心得,其他网络设备的配置流程也与此大同小异(公网IP、端口映射、DDNS)。

一、设备外观介绍

拿到的相机是这样的 ↓


拿到的相机是这样的↑

已经是裸的不能再裸的机器了,电源线也是在某宝上购买的,价格大概在 10 元左右,接下来就是连接网线进行配置了。

二、设备信息获取

一般来说,IPCamera 都有一个默认的 IP 地址,且默认前缀长度为 24,尝试过很多可能的IP并设置为同一网段,比如 192.168.1.100、192.168.1.2 等都无法访问。这是一个旧设备,因此设备的配置基本上已经被修改了,所以需要找到与该设备对应的IP网络摄像机扫描软件,但这个过程并不是一帆风顺的,主要的原因还是设备的历史过于悠久,很难找到匹配的文档或软件。期间尝试过很多扫描工具都没有结果,最后在“一乐电子”论坛上找到了 2013 年的一个帖子,在这里拿到了专用于 Q 系列网络摄像机的扫描工具 Q_Search_cn.exe(感谢前辈!)。

很是幸运,这个工具是可以使用的,不过期间也遇到了一些问题。

  • 扫描主机和 IPCamera 必须同时以有线的方式连接同一路由器(或交换机)

  • 由于固件与软件版本不兼容的问题,其中一台设备固件版本较高,只能获取到设备信息,而无法修改配置进行烧录,另一台则可以对配置进行修改。

第一个问题很好解决,但是第二个问题的出现导致即使获取到 IPCamera 的 IP 地址,也不能直接访问,必须保证访问的主机与 IPCamera 在同一网段。为了解决这个问题,可以手动更改访问主机的 IP 地址和子网掩码,与摄像机的网络配置一致即可。但这种方式自然难以实现局域网中任意主机对摄像机的访问,因此只有通过修改路由器的 LAN 口地址和网关,保证接入路由器的所有设备都能够与 IPCamera 通信,IPCamera 的设备信息以及修改后的路由器配置如下图所示。

从图中可以看出,子网掩码也被更改了,一般来说应该是255.255.255.0,可分配256-2=254台主机(除去全0的网络地址和全1的广播地址),现在的255.255.255.128只能分配126台主机,不过对于家庭网络也完全足够了,毕竟家里也不会同时来一百多位客人蹭网 [/手动狗头]。

三、设备网络配置修改

类似于“木桶效应”,如果要保证两台摄像机都可以使用,那么另一台固件版本较低的设备也需要与修改后的路由器配置一致,修改后的网络配置如下图所示。

主要修改的地方在IP地址、子网掩码以及网关,Web端口不变,仍使用HTTP协议默认的80端口

四、远程监控画像查看

经过上面一波操作后,局域网中的设备已经能够访问到摄像机的监控画面了。

接下来要做的事情就是实现从外网访问内网的摄像机,为了做到这一点,还需要完成以下配置工作。

4.1 申请公网 IP

从用户拨号的角度来看,一条宽带对应一个用户,因此在任意正常联网的时刻下,用户获得的是一个能够访问外网的 IP。但一般来说,宽带运营商给用户分配的都是内网 IP,即不能被公网的设备访问到,目前的需求是从外网访问内网设备,因此首先需要向运营商申请公网IP,理由可以是安装网络摄像头,NAS 等需要端口映射的设备,报备一下就行。

虽说截至 2019 年 11 月 26 日 下午,欧洲IP资源协调中心(RIPE NCC)宣布其IPv4可用池已经分配了最后的 /22 IPv4 网址,全球大约 43 亿个IPv4网址正式用完了。但这个公网 IP 的需求运营商还是会满足的,一般十几分钟搞定。

附:检查家庭宽带分配的 IP 是否为公网 IP 的方法

① 进入 www.ip138.com 网站,查看本机 IP

② 进入路由器管理页面,查看运营商自动分配的 IP(注意光猫要选择桥接模式,而非路由模式,否则分配的IP在光猫上,路由器获得只是局域网内的一个 IP 地址)。

③ 对比两个 IP 是否相同,如果相同,则是公网 IP;否则需要申请。从上图可以看出,两个 IP 是相同的,这是已经申请公网的 IP ,可以直接使用。

4.2 配置端口映射

端口映射在一些路由器上也称为“虚拟服务器”,本质上都是 NAT 地址转换的一种,可以通过它把在公网的地址转翻译成私有地址。简单来说,设定端口映射后,外网设备在访问路由器被分配的公网IP地址并指定协议和端口号后,可以被转发至局域网中的主机和对应的端口,具体主机和端口根据映射列表确定。

以上是路由器内自定义的端口映射列表,假设我家路由器被分配的公网IP为 IP_ extranet ,那么外网的设备访问 http://IP_ extranet:234 即可访问到室内监控画面;访问 http://IP_extranet:233 即可访问到室外监控画面;访问 ftp://IP_ extranet 即可访问到家庭的 FTP 服务器。如此一来,我在外面玩的时候也可以看到家里的狗狗有没有拆家了 [/手动狗头]。

4.3 配置动态域名 (DDNS)

经过以上设置,如果知道了路由器被分配的 IP 地址,则可以通过 protocol://IP_address:<port> 访问内网服务。但需要注意的是,路由器每次重新拨号或之前分配的IP地址到期后,运营商会为路由器重新分配IP地址(Reassign),也就是说路由器的IP地址不是固定的(应该也可以申请静态IP,不过没有操作过,怕被打)。所以仍然无法做到对内网监控的实时访问,因为无法实时获得路由器的IP地址。为了解决这个问题,DDNS动态域名服务派上用场了。

“DDNS 是 Dynamic Domain Name Server 的缩写,是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供 DNS 服务并实现动态域名解析”。

百度百科(https://baike.baidu.com/item/ddns)

简单来说,具有 DDNS 域名解析的域名能够动态地将该域名映射到主机的 IP 地址上。借助 DDNS 服务,用户在访问内网服务时,无需实时获取路由器的公网 IP,直接使用动态域名即可,因为该域名始终指向该路由器的IP地址。一般的路由器都提供 DDNS 服务,例如Mercury 路由器可以使用 Oray 动态域名服务,用户需要提前申请域名并使用花生壳 DDNS 解析,即可完成动态域名的配置。

经过以上三个步骤的配置,即可实现在外网网络环境下,直接访问家庭监控。

五、录像功能的实现(PC/NVR/Server)

如今市面上的摄像头都提供了存储功能,支持安装存储卡记录录像,但这里的 IPCamera 只有实时显示的功能,如果用户有录像的需求,还需要单独配备一台主机(或 NVR 设备),并安装监控软件(如 IPCMonitor)实时或定时录像。当然也可以自己动手编写监控画面的实时记录和检索脚本,存储在云端服务器上。

2021年9月更新:目前已完成家庭监控平台的开发,项目地址为:https://leohao.cn/ip_camera_web

至此,摄像机已经安装调试完毕,整个过程时间耗费如下图,其中对应文档和扫描工具的查找占用了主要时间。

P.S.如果摄像机的像素更清晰一些,能够借助 OpenCV 在此基础上做形态识别、目标跟踪等其他计算机视觉项目。

总结

网络摄像机与其他网络设备的配置流程大同小异,都不可避免地使用到端口映射、DDNS 服务。之前在公司实习的时候,也接触过端口映射下的内外网 FTP 网关的同步服务,刚好最近又动手熟悉了一遍流程。

IPCamera扫描工具和集中监控控制台 (提取码: l1et)