我一直想写一篇关于通过 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 路由器
- 我们为相机保留地址 192.168.0.200:
除了 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