- PVSM.RU - https://www.pvsm.ru -
Я уже довольно давно хотел написать статью о скрипте для работы с камерой через DVRIP протокол, но обсуждение к недавней новости о Xiaomi [1] побудило меня сначала рассказать о том, как я устроил видеонаблюдение у себя, а потом уже перейти к скриптам и прочему.
У нас было 2 пакета... Так, стоп, это не та история.
У нас было 2 роутера фирмы TP-LINK, выход в интернет за провайдерским NAT, камера наблюдения Partizan уже не помню какой модели (сойдет любая IP-камера, поддерживающая RSTP over TCP или DVRIP) и дешевый за 4 евро с характеристиками: 2 core CPU 2.4GHz, 4GB RAM, 300 GB HDD, 100 Mbit/s port. А еще нежелание докупать к этому ничего, что стоило бы дороже патчкорда.
По очевидным причинам мы не можем просто пробросить порты камеры на роутере и наслаждаться жизнью, кроме того, даже если бы и могли, то так делать не стоит.
Краем уха я слышал, что есть какие-то варианты с IPv6 tunneling, где вроде бы можно сделать все так, что все устройства в сети получат внешний IPv6 адрес, и это немного упростило бы дело, правда, по прежнему оставив безопасность данного мероприятия под вопросом, а еще поддержка в стандартной прошивке TP-LINK этого чуда какая-то странная. Хотя есть вероятность, что в предыдущем предложении я несу полную чушь, так что вовсе не обращайте на него свое внимание.
Но, к нашему счастью, практически любая прошивка под любой роутер (довольно голословное утверждение на самом деле) содержит PPTP/L2TP клиент или возможность установить кастомную прошивку с его наличием. И от этого мы уже можем строить какую-то стратегию поведения.
В приступе горячки мой
Адрес 169.178.59.82 сгенерирован случайно и служит только для примера
Ну или если на словах, то:
Таким образом все домашние устройства в сети 192.168.1.0 имеют доступ к камере через TP-LINK 2 по адресу 192.168.1.200, а все остальные могут подключиться через pptp, shadowsocks или socks5 и обратиться к 10.0.5.100.
Первым делом стоит подключить все устройства согласно схеме на рисунке выше.
sudo apt install pptpd iptables-persistent
option /etc/ppp/pptpd-options
bcrelay eth0 # Интерфейс, через который ваш сервер ходит в интернеты
logwtmp
localip 10.0.5.1
remoteip 10.0.5.100-200
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
# Secrets for authentication using CHAP
# client server secret IP addresses
username pptpd password *net.ipv4.ip_forward=1и релоадим sysctl
sudo sysctl -p
sudo service pptpd restart
sudo systemctl enable pptpd
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
Вместо PPTP можно использовать L2TP или, если у вас кастомная прошивка, то все что вашей душе угодно. Я выбрал PPTP, так как эта схема строилась не из соображения секьюрности, а pptpd по моему опыту самый быстрый VPN сервер. Тем более что очень не хотелось ставить кастомные прошивки, а значит и выбирать приходилось между PPTP и L2TP.
Если я нигде не ошибся в руководстве, а вы все сделали правильно и вам сопутствовала удача, то после всех этих манипуляций
ifconfig
покажет интерфейс ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 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 раз, разбивать на куски по часу, заливать это все на гуглдиск или в социальные сети и еще много-много чего.
Мне RTSP over TCP не понравился, потому что работал как-то не очень стабильно, а over UDP, по причинам того, что мы не можем (или можем, но я не хочу этим заниматься) пробросить диапазон портов, по которым RTSP будет пихать видеопоток, использовать не получится, я написал скриптик, который тащит поток over TCP по DVRIP. Получилось вроде стабильней.
Из плюсов подхода — мы можем взять на место роутера TP-LINK 2 что-нибудь, поддерживающее 4G свисток, запитать это все вместе с камерой от ИБП (который потребуется несомненно гораздо менее емкий, нежели при использовании регистратора), кроме того запись практически мгновенно передается на сервер, так что даже если к вам проникнут злоумышленники, то изъять видео у них не получится. В общем пространство для маневров есть и все зависит только от вашей фантазии.
P.S.: Я знаю, что многие производители предлагают готовые облачные решения, но по цене они превосходят стоимость моего впс практически вдвое (которых у меня и так 3, так что нужно куда-то девать ресурсы), предоставляют гораздо меньше контроля, а так же не очень удовлетворительное качество.
Автор: NiceDay
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vpn/342065
Ссылки в тексте:
[1] Xiaomi: https://habr.com/ru/news/t/482770
[2] VPS: https://www.reg.ru/?rlink=reflink-717
[3] мозг: http://www.braintools.ru
[4] blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck: https://blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck
[5] Источник: https://habr.com/ru/post/482864/?utm_source=habrahabr&utm_medium=rss&utm_campaign=482864
Нажмите здесь для печати.