家庭视频监控。 无需家庭录像机即可维护视频档案的方案

我一直想写一篇关于通过 DVRIP 协议使用摄像机的脚本的文章,但讨论与最近的新闻有关 小米 促使我先讲一下我是如何在家里设置视频监控的,然后再讲剧本之类的。

我们有 2 个包裹...所以,等等,这不是同一个故事。
我们有 2 个来自 TP-LINK 的路由器、提供商 NAT 后面的互联网接入、一个我不记得是什么型号的 Partizan 监控摄像头(任何支持 TCP 或 DVRIP 上的 RSTP 的 IP 摄像头都可以)以及一个 4 欧元的廉价 VPS特性:2 核 CPU 2.4GHz、4GB RAM、300 GB HDD、100 Mbit/s 端口。 除此之外,人们也不愿意购买任何比跳线更贵的东西。

前言

出于显而易见的原因,我们不能仅仅转发路由器上的摄像头端口并享受生活,而且,即使我们可以,我们也不应该这样做。

我突然听说 IPv6 隧道有一些选项,似乎一切都可以完成,以便网络上的所有设备都接收外部 IPv6 地址,这会稍微简化事情,尽管它仍然存在安全问题这个事件的问题,以及标准 TP-LINK 固件中对这个奇迹的支持有点奇怪。 虽然上一句有可能我完全是在胡说八道,所以你根本不用理会。

但是,对我们来说幸运的是,几乎所有路由器的固件(实际上是毫无根据的说法)都包含 PPTP/L2TP 客户端或使用它安装自定义固件的能力。 由此我们已经可以构建某种行为策略。

拓扑结构

在一阵发烧中,我的大脑诞生了这样的接线图:

在另一次攻击中,我将其绘制到 Habr 上家庭视频监控。 无需家庭录像机即可维护视频档案的方案

地址 169.178.59.82 是随机生成的,仅供参考

好吧,或者如果用语言来说,那么:

  • 路由器 TP-LINK 1 (192.168.1.1),其中插入一根从墙壁伸出的电缆。 好奇的读者会猜测这是我访问互联网的提供商电缆。 各种家庭设备通过跳线或 Wi-Fi 连接到该路由器。 这是网络 192.168.1.0
  • 路由器 TP-LINK 2(192.168.0.1、192.168.1.200),其中插入一根从 TP-LINK 1 路由器伸出的电缆。借助该电缆,TP-LINK 2 路由器以及与其连接的设备也可以访问互联网。 此路由器配置有到服务器 10.0.5.100 的 PPTP 连接 (169.178.59.82)。 IP 摄像机 192.168.0.200 也连接到该路由器,并且转发以下端口
    • 192.168.0.200:80 -> 49151(网络莫德)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • 服务器(169.178.59.82、10.0.5.1),连接TP-LINK 2路由器,服务器运行pptpd、shadowsocks和3proxy,通过它们可以访问10.0.5.0网络上的设备,从而访问TP-LINK 2路由器。

因此,192.168.1.0 网络上的所有家庭设备都可以通过 TP-LINK 2 在 192.168.1.200 访问摄像机,所有其他设备可以通过 pptp、shadowsocks 或ocks5 连接并访问 10.0.5.100。

调整

第一步,按照上图所示连接所有设备。

  • 设置 TP-LINK 1 路由器归结为为 TP-LINK 192.168.1.200 保留地址 2。如果您需要固定地址从 192.168.1.0 网络进行访问,则可选。 如果需要,您可以为其预留 10-20 Mbit(10 Mbit 足以容纳一个 1080 视频流)。
  • 您需要在服务器上安装并配置pptpd。 我有 Ubuntu 18.04,步骤大致如下(捐赠者是一个例子 blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • 安装必要的软件包:
      sudo apt install pptpd iptables-persistent
    • 我们把它变成下面的形式

      /etc/pptpd.conf

      option /etc/ppp/pptpd-options
      bcrelay eth0 # Интерфейс, через который ваш сервер ходит в интернеты
      logwtmp
      localip 10.0.5.1
      remoteip 10.0.5.100-200

    • 我们编辑

      /etc/ppp/pptpd-选项

      novj
      novjccomp
      nologfd
      
      name pptpd
      refuse-pap
      refuse-chap
      refuse-mschap
      require-mschap-v2
      #require-mppe-128 # Можно раскомментировать, но мой TP-LINK c ним не дружит
      
      ms-dns 8.8.8.8
      ms-dns 1.1.1.1
      ms-dns  77.88.8.8
      ms-dns 8.8.4.4
      ms-dns 1.0.0.1
      ms-dns  77.88.8.1
      
      proxyarp
      nodefaultroute
      lock
      nobsdcomp
      
    • 将凭据添加到

      /etc/ppp/chap 秘密

      # Secrets for authentication using CHAP
      # client	server	secret			IP addresses
      username pptpd password *
    • 添加

      /etc/sysctl.conf中

      net.ipv4.ip_forward=1

      并重新加载 sysctl

      sudo sysctl -p
    • 重新启动 pptpd 并将其添加到启动中
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • 我们编辑

      iptables的

      sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
      sudo iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
      sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
      sudo iptables --table nat --append POSTROUTING --out-interface ppp+ -j MASQUERADE
      sudo iptables -I INPUT -s 10.0.5.0/24 -i ppp+ -j ACCEPT
      sudo iptables --append FORWARD --in-interface eth0 -j ACCEPT

      并保存

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • 设置 TP-LINK 2
    • 我们为相机保留地址 192.168.0.200:

      DHCP -> 地址保留 — MAC 地址 — 摄像机 MAC,可在 DHCP -> DHCP 客户端列表中查看
      — 保留 IP 地址 — 192.168.0.200

    • 转发端口:
      重定向 -> 虚拟服务器 — 服务端口:49151,内部端口:80,IP 地址:192.168.0.200,协议:TCP
      — 服务端口:49152,内部端口:34567,IP 地址:192.168.0.200,协议:TCP
      — 服务端口:49153,内部端口:554,IP 地址:192.168.0.200,协议:TCP
    • 设置 VPN 连接:

      网络 -> 广域网 — WAN 连接类型:PPTP
      — 用户名:用户名(参见 /etc/ppp/chap-secrets)
      — 密码:密码(参见 /etc/ppp/chap-secrets)
      — 确认密码:password(参见 /etc/ppp/chap-secrets)
      - 动态IP
      — IP地址/服务器名称:169.178.59.82(显然是你服务器的外部IP)
      — 连接方式:自动连接

    • (可选)我们允许远程访问路由器的网络界面
      安全->远程管理 - Web管理端口:80
      — 远程管理IP地址:255.255.255.255
    • 重新启动 TP-LINK 2 路由器

除了 PPTP,您还可以使用 L2TP,或者,如果您有自定义固件,则可以使用您想要的任何方式。 我选择了 PPTP,因为该方案不是出于安全原因而构建的,而根据我的经验,pptpd 是最快的 VPN 服务器。 而且,我真的不想安装自定义固件,这意味着我必须在 PPTP 和 L2TP 之间进行选择。

如果我在手册中没有犯任何错误,并且您正确地完成了所有操作并且很幸运,那么在完成所有这些操作之后

  • 首先
    ifconfig

    将显示界面 ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • 其次,必须 ping 通 10.0.5.100,
  • 第三
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    应该检测流。
    您可以在相机的文档中找到 rtsp 端口、登录名和密码

结论

原则上,这还不错,可以访问 RTSP,如果专有软件通过 DVRIP 工作,那么您可以使用它。 您可以使用 ffmpeg 保存流,将视频加速 2-3-5 倍,将其分成长达一小时的片段,将其全部上传到 Google Drive 或社交网络等等。

我不喜欢 TCP 上的 RTSP,因为它工作得不太稳定,但我不喜欢 UDP 上的 RTSP,因为我们不能(或者我们可以,但我不想这样做)转发端口范围通过 RTSP 来推送视频流,这是行不通的,我写了一个脚本,通过 DVRIP 通过 TCP 拖动流。 事实证明更加稳定。

该方法的优点之一是,我们可以采用支持 2G 口哨的设备来代替 TP-LINK 4 路由器,并通过 UPS 为它和摄像头供电(这无疑需要比以前更小的容量)使用录音机),此外,录音几乎立即传输到服务器,因此即使入侵者侵入您的站点,他们也无法捕获视频。 总的来说,还有回旋余地,一切只取决于你的想象力。

PS:我知道很多厂商都提供现成的云解决方案,但价格上几乎是我的VPS的两倍(我已经有3个了,所以我需要在某个地方分配资源),提供的控制要少得多,而且质量不是很满意。

来源: habr.com

添加评论