Хатняе відэаназіранне. Схема вядзення відэаархіва без хатняга рэгістратара

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

У нас было 2 пакеты… Так, стоп, гэта не тая гісторыя.
У нас было 2 роўтара фірмы TP-LINK, выхад у інтэрнэт за правайдэрскім NAT, камера назірання Partizan ужо не памятаю якой мадэлі (сыдзе любая IP-камера, якая падтрымлівае RSTP over TCP ці DVRIP) і танны VPS за 4 еўра з характарыстыкамі: 2 core CPU 2.4GHz, 4GB RAM, 300GB 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

      option /etc/ppp/pptpd-options
      bcrelay eth0 # Интерфейс, через который ваш сервер ходит в интернеты
      logwtmp
      localip 10.0.5.1
      remoteip 10.0.5.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 ним не дружит
      
      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

      # 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 - Тып падлучэння WAN: PPTP
      - Імя карыстальніка: username (глядзі /etc/ppp/chap-secrets)
      - Пароль: password (глядзі /etc/ppp/chap-secrets)
      - Пацвердзіць пароль: password (глядзі /etc/ppp/chap-secrets)
      - Дынамічны IP
      - IP-адрас/Імя сервера: 169.178.59.82 (відавочна, знешні IP вашага сервера)
      - Рэжым злучэння: Падлучыць аўтаматычна

    • Апцыянальна дазваляем выдалены доступ да вэбмордзе роўтара
      Бяспека -> Выдаленае кіраванне - Порт вэб-кіравання: 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,

  • па-другое 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 свісток, паспытаць гэта ўсё разам з камерай ад КБС (які спатрэбіцца несумненна значна менш ёмісты, чым пры выкарыстанні рэгістратара), акрамя таго запіс практычна імгненна перадаецца на сервер, так што нават калі да вас пракрануцца зламыснікі, тое выключыць відэа ў іх не атрымаецца. Увогуле прастора для манеўраў ёсць і ўсё залежыць толькі ад вашай фантазіі.

PS: Я ведаю, што шматлікія вытворцы прапануюць гатовыя хмарныя рашэнні, але па кошце яны пераўзыходзяць кошт майго впс практычна ўдвая (якіх у мяне і так 3, так што трэба кудысьці падзець рэсурсы), падаюць значна менш кантролю, а гэтак жа не вельмі здавальняючую якасць.

Крыніца: habr.com

Дадаць каментар