Domowy monitoring wideo. Schemat prowadzenia archiwum wideo bez domowego rejestratora

Już od dłuższego czasu noszę się z zamiarem napisania artykułu na temat skryptu do pracy z kamerą poprzez protokół DVRIP, ale dyskusja wokół ostatnich doniesień o Xiaomi skłoniło mnie, aby najpierw porozmawiać o tym, jak konfiguruję monitoring wideo w domu, a następnie przejść do scenariuszy i innych rzeczy.

Mieliśmy 2 paczki... Więc czekaj, to nie ta sama historia.
Mieliśmy 2 routery TP-LINK, dostęp do Internetu za NAT dostawcy, kamerę monitoringu Partizan, nie pamiętam jaki model (nada się dowolna kamera IP obsługująca RSTP przez TCP lub DVRIP) i tani VPS za 4 euro z charakterystyka: 2-rdzeniowy procesor 2.4 GHz, 4 GB RAM, 300 GB HDD, port 100 Mbit/s. A także niechęć do zakupu czegokolwiek dodatkowego, co kosztowałoby więcej niż patchcord.

Przedmowa

Z oczywistych względów nie możemy po prostu przekierować portów kamer na routerze i cieszyć się życiem, poza tym nawet gdybyśmy mogli, nie powinniśmy tego robić.

Niespodziewanie usłyszałem, że są pewne opcje z tunelowaniem IPv6, gdzie wydaje się, że można zrobić wszystko, aby wszystkie urządzenia w sieci otrzymały zewnętrzny adres IPv6, a to by trochę uprościło sprawę, choć nadal pozostawia bezpieczeństwo tego wydarzenia, o którym mowa, a obsługa tego cudu w standardowym oprogramowaniu TP-LINK jest w jakiś sposób dziwna. Chociaż istnieje możliwość, że w poprzednim zdaniu mówię kompletną bzdurę, więc nie zwracaj na to w ogóle uwagi.

Ale na szczęście dla nas prawie każde oprogramowanie sprzętowe dla dowolnego routera (w rzeczywistości raczej bezpodstawne stwierdzenie) zawiera klienta PPTP/L2TP lub możliwość zainstalowania z nim niestandardowego oprogramowania sprzętowego. I na tej podstawie możemy już zbudować jakąś strategię zachowania.

Topologia

W przypływie gorączki mój mózg stworzył coś takiego jak ten schemat połączeń:

i podczas kolejnego ataku narysowałem go, aby wysłać go do HabrDomowy monitoring wideo. Schemat prowadzenia archiwum wideo bez domowego rejestratora

Adres 169.178.59.82 został wygenerowany losowo i służy jedynie jako przykład

Cóż, lub jeśli słowami, to:

  • Routera TP-LINK 1 (192.168.1.1), do którego włożony jest kabel wystający ze ściany. Dociekliwy czytelnik zgadnie, że jest to kabel dostawcy, przez który mam dostęp do Internetu. Różne urządzenia domowe są podłączone do tego routera za pomocą kabla krosowego lub Wi-Fi. To jest sieć 192.168.1.0
  • Routera TP-LINK 2 (192.168.0.1, 192.168.1.200), do którego włożony jest kabel wystający z routera TP-LINK 1. Dzięki temu kablowi router TP-LINK 2, a także podłączone do niego urządzenia, również mają dostęp do Internetu. Ten router jest skonfigurowany z połączeniem PPTP (10.0.5.100) z serwerem 169.178.59.82. Kamera IP 192.168.0.200 jest również podłączona do tego routera i przekazywane są następujące porty
    • 192.168.0.200:80 -> 49151 (webmord)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • Serwer (169.178.59.82, 10.0.5.1), do którego podłączony jest router TP-LINK 2. Na serwerze działają pptpd, Shadowsocks oraz 3proxy, za pośrednictwem których można uzyskać dostęp do urządzeń w sieci 10.0.5.0 i tym samym uzyskać dostęp do routera TP-LINK 2.

Dzięki temu wszystkie urządzenia domowe w sieci 192.168.1.0 mają dostęp do kamery poprzez TP-LINK 2 pod adresem 192.168.1.200, a wszystkie inne mogą łączyć się poprzez pptp, Shadowsocks lub skarpetki5 i uzyskać dostęp do 10.0.5.100.

regulacja

Pierwszym krokiem jest podłączenie wszystkich urządzeń według schematu na powyższym rysunku.

  • Konfiguracja routera TP-LINK 1 sprowadza się do zarezerwowania adresu 192.168.1.200 dla TP-LINK 2. Opcjonalnie, jeśli potrzebujesz stałego adresu do dostępu z sieci 192.168.1.0. W razie potrzeby możesz zarezerwować dla niego 10-20 Mbit (10 wystarczy na jeden strumień wideo 1080).
  • Musisz zainstalować i skonfigurować pptpd na serwerze. Mam Ubuntu 18.04 i kroki były w przybliżeniu następujące (dawcą był przykład blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Zainstaluj wymagane pakiety:
      sudo apt install pptpd iptables-persistent
    • Doprowadzamy to do następującej formy

      /etc/pptpd.conf

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

    • Edytujemy

      /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
      
    • Dodawanie poświadczeń do

      /etc/ppp/chap-secrets

      # Secrets for authentication using CHAP
      # client	server	secret			IP addresses
      username pptpd password *
    • Dodać do

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      i załaduj ponownie sysctl

      sudo sysctl -p
    • Zrestartuj pptpd i dodaj go do startu
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • Edytujemy

      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

      I zapisz

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • Konfigurowanie TP-LINK 2
    • Dla naszej kamery rezerwujemy adres 192.168.0.200:

      DHCP -> Rezerwacja adresu — adres MAC — adres MAC kamery, można wyświetlić w DHCP -> Lista klientów DHCP
      — Zarezerwowany adres IP — 192.168.0.200

    • Porty przekierowania:
      Przekierowanie -> Serwery wirtualne — Port serwisowy: 49151, Port wewnętrzny: 80, Adres IP: 192.168.0.200, Protokół: TCP
      — Port serwisowy: 49152, Port wewnętrzny: 34567, Adres IP: 192.168.0.200, Protokół: TCP
      — Port serwisowy: 49153, Port wewnętrzny: 554, Adres IP: 192.168.0.200, Protokół: TCP
    • Konfigurowanie połączenia VPN:

      Sieć -> WAN — Typ połączenia WAN: PPTP
      — Nazwa użytkownika: nazwa użytkownika (patrz /etc/ppp/chap-secrets)
      — Hasło: hasło (patrz /etc/ppp/chap-secrets)
      — Potwierdź hasło: hasło (patrz /etc/ppp/chap-secrets)
      - Dynamiczne IP
      — Adres IP/nazwa serwera: 169.178.59.82 (oczywiście zewnętrzny adres IP Twojego serwera)
      — Tryb połączenia: Połącz automatycznie

    • Opcjonalnie umożliwiamy zdalny dostęp do strony internetowej routera
      Bezpieczeństwo -> Zdalne zarządzanie - Port zarządzania siecią: 80
      — Adres IP zdalnego zarządzania: 255.255.255.255
    • Uruchom ponownie router TP-LINK 2

Zamiast PPTP możesz użyć L2TP lub, jeśli masz niestandardowe oprogramowanie, cokolwiek dusza zapragnie. Wybrałem PPTP, ponieważ ten schemat nie został zbudowany ze względów bezpieczeństwa, a pptpd, z mojego doświadczenia, jest najszybszym serwerem VPN. Co więcej, naprawdę nie chciałem instalować niestandardowego oprogramowania, co oznaczało, że musiałem wybierać pomiędzy PPTP a L2TP.

Jeśli nigdzie w instrukcji nie popełniłem błędu, a ty zrobiłeś wszystko poprawnie i miałeś szczęście, to po tych wszystkich manipulacjach

  • po pierwsze
    ifconfig

    pokaże interfejs ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • po drugie, 10.0.5.100 musi pingować,
  • i po trzecie
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Powinien wykryć strumień.
    Port rtsp, login i hasło znajdziesz w dokumentacji swojej kamery

wniosek

W zasadzie nie jest to złe, jest dostęp do RTSP, jeśli zastrzeżone oprogramowanie działa przez DVRIP, to można z niego korzystać. Możesz zapisać strumień za pomocą ffmpeg, przyspieszyć wideo 2-3-5 razy, podzielić go na godzinne kawałki, przesłać wszystko na Dysk Google lub sieci społecznościowe i wiele, wiele więcej.

Nie podobał mi się RTSP przez TCP, bo nie działał zbyt stabilnie, ale przez UDP, z tego powodu, że nie możemy (lub możemy, ale nie chcę tego robić) przekazywać dalej zakresu portów przez który RTSP będzie przepychał strumień wideo, to nie zadziała, napisałem skrypt, który przeciąga strumień przez TCP przez DVRIP. Okazało się, że jest stabilniej.

Jedną z zalet takiego podejścia jest to, że zamiast routera TP-LINK 2 możemy wziąć coś obsługującego gwizdek 4G, zasilić to wszystko razem z kamerą z UPS-a (który niewątpliwie będzie potrzebował znacznie mniej pojemnego niż przy za pomocą rejestratora), dodatkowo nagranie przesyłane jest niemal natychmiast na serwer, więc nawet jeśli intruzi przedostaną się na Twoją witrynę, nie będą mogli przechwycić wideo. Ogólnie rzecz biorąc, jest pole do manewru i wszystko zależy tylko od Twojej wyobraźni.

PS: Wiem, że wielu producentów oferuje gotowe rozwiązania chmurowe, ale cenowo są one prawie dwukrotnie droższe od mojego VPS (których mam już 3, więc muszę gdzieś przeznaczyć zasoby), zapewniają znacznie mniejszą kontrolę, a także niezbyt zadowalająca jakość.

Źródło: www.habr.com

Dodaj komentarz