Хабрахабр

Домашнее видеонаблюдение. Схема ведения видеоархива без домашнего регистратора

Я уже довольно давно хотел написать статью о скрипте для работы с камерой через DVRIP протокол, но обсуждение к недавней новости о Xiaomi побудило меня сначала рассказать о том, как я устроил видеонаблюдение у себя, а потом уже перейти к скриптам и прочему.

Так, стоп, это не та история.
У нас было 2 роутера фирмы TP-LINK, выход в интернет за провайдерским NAT, камера наблюдения Partizan уже не помню какой модели (сойдет любая IP-камера, поддерживающая RSTP over TCP или DVRIP) и дешевый VPS за 4 евро с характеристиками: 2 core CPU 2. У нас было 2 пакета... А еще нежелание докупать к этому ничего, что стоило бы дороже патчкорда.
4GHz, 4GB RAM, 300 GB HDD, 100 Mbit/s port.

Предисловие

По очевидным причинам мы не можем просто пробросить порты камеры на роутере и наслаждаться жизнью, кроме того, даже если бы и могли, то так делать не стоит.
Краем уха я слышал, что есть какие-то варианты с IPv6 tunneling, где вроде бы можно сделать все так, что все устройства в сети получат внешний IPv6 адрес, и это немного упростило бы дело, правда, по прежнему оставив безопасность данного мероприятия под вопросом, а еще поддержка в стандартной прошивке TP-LINK этого чуда какая-то странная. Хотя есть вероятность, что в предыдущем предложении я несу полную чушь, так что вовсе не обращайте на него свое внимание.

И от этого мы уже можем строить какую-то стратегию поведения. Но, к нашему счастью, практически любая прошивка под любой роутер (довольно голословное утверждение на самом деле) содержит PPTP/L2TP клиент или возможность установить кастомную прошивку с его наличием.

Топология

В приступе горячки мой мозг родил примерно такую схему подключения,

а во время другого приступа нарисовал, чтоб выложить на хабр

Адрес 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, а так же подключенный к нему устройства, тоже имеют доступ к интернету. На этом роутере настроено PPTP подключение (10.0.5.100) к серверу 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 или socks5 и обратиться к 10.0.5.100.

Настройка

Первым делом стоит подключить все устройства согласно схеме на рисунке выше.

  • Настройка роутера TP-LINK 1 сводится к резервированию адреса 192.168.1.200 для TP-LINK 2. Опционально, если нужен фиксированный адрес для доступа из сети 192.168.1.0. Опционально можно зарезервировать для него 10-20Мбит (10 хватит на один видеопоток в 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

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

    • Правим

      /etc/ppp/pptpd-options

      novj
      novjccomp
      nologfd

      name pptpd
      refuse-pap
      refuse-chap
      refuse-mschap
      require-mschap-v2
      #require-mppe-128 # Можно раскомментировать, но мой TP-LINK c ним не дружит

      8. ms-dns 8. 8
      ms-dns 1. 8. 1. 1. 88. 1
      ms-dns 77. 8
      ms-dns 8. 8. 4. 8. 0. 4
      ms-dns 1. 1
      ms-dns 77. 0. 8. 88. 1

      proxyarp
      nodefaultroute
      lock
      nobsdcomp

    • Добавляем учетные данные в

      /etc/ppp/chap-secrets

      # 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 -> Резервирование адресов

      168. — MAC-адрес — MAC камеры, можно посмотреть в DHCP -> Список клиентов DHCP
      — Зарезервированный IP-адрес — 192. 200 0.

    • Пробрасываем порты:

      Переадресация -> Виртуальные серверы

      168. — Порт сервиса: 49151, Внутренний порт: 80, IP-адрес: 192. 200, Протокол: TCP
      — Порт сервиса: 49152, Внутренний порт: 34567, IP-адрес: 192. 0. 0. 168. 168. 200, Протокол: TCP
      — Порт сервиса: 49153, Внутренний порт: 554, IP-адрес: 192. 200, Протокол: TCP
      0.

    • Настраиваем подключение к VPN:

      Сеть -> WAN

      178. — Тип подключения WAN: PPTP
      — Имя пользователя: username (смотри /etc/ppp/chap-secrets)
      — Пароль: password (смотри /etc/ppp/chap-secrets)
      — Подтвердить пароль: password (смотри /etc/ppp/chap-secrets)
      — Динамический IP
      — IP-адрес/Имя сервера: 169. 82 (очевидно, внешний IP вашего сервера)
      — Режим соединения: Подключить автоматически
      59.

    • Опционально разрешаем удаленный доступ к вебморде роутера

      Безопасность -> Удаленное управление

      255. — Порт веб-управления: 80
      — IP-адрес удаленного управления: 255. 255 255.

    • Перезагружаем роутер TP-LINK 2

Я выбрал PPTP, так как эта схема строилась не из соображения секьюрности, а pptpd по моему опыту самый быстрый VPN сервер. Вместо PPTP можно использовать L2TP или, если у вас кастомная прошивка, то все что вашей душе угодно. Тем более что очень не хотелось ставить кастомные прошивки, а значит и выбирать приходилось между PPTP и L2TP.

Если я нигде не ошибся в руководстве, а вы все сделали правильно и вам сопутствовала удача, то после всех этих манипуляций

Заключение

В принципе уже неплохо, есть доступ к RTSP, если фирменный софт работает через DVRIP, то можно воспользоваться и им. Можно сохранять стрим с помощью ffmpeg, ускорять видео в 2-3-5 раз, разбивать на куски по часу, заливать это все на гуглдиск или в социальные сети и еще много-много чего.

Получилось вроде стабильней. Мне RTSP over TCP не понравился, потому что работал как-то не очень стабильно, а over UDP, по причинам того, что мы не можем (или можем, но я не хочу этим заниматься) пробросить диапазон портов, по которым RTSP будет пихать видеопоток, использовать не получится, я написал скриптик, который тащит поток over TCP по DVRIP.

В общем пространство для маневров есть и все зависит только от вашей фантазии. Из плюсов подхода — мы можем взять на место роутера TP-LINK 2 что-нибудь, поддерживающее 4G свисток, запитать это все вместе с камерой от ИБП (который потребуется несомненно гораздо менее емкий, нежели при использовании регистратора), кроме того запись практически мгновенно передается на сервер, так что даже если к вам проникнут злоумышленники, то изъять видео у них не получится.

S.: Я знаю, что многие производители предлагают готовые облачные решения, но по цене они превосходят стоимость моего впс практически вдвое (которых у меня и так 3, так что нужно куда-то девать ресурсы), предоставляют гораздо меньше контроля, а так же не очень удовлетворительное качество. P.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»