Videosorveglianza domestica. Schema per mantenere un archivio video senza registratore domestico

Era da molto tempo che volevo scrivere un articolo su uno script per lavorare con una telecamera tramite il protocollo DVRIP, ma la discussione riguardava le recenti notizie su Xiaomi mi ha spinto a parlare prima di come ho impostato la videosorveglianza a casa, per poi passare agli script e ad altre cose.

Avevamo 2 pacchi... Quindi, aspetta, questa non è la stessa storia.
Avevamo 2 router TP-LINK, accesso a Internet dietro il provider NAT, una telecamera di sorveglianza Partizan non ricordo quale modello (va bene qualsiasi telecamera IP che supporti RSTP su TCP o DVRIP) e un VPS economico per 4 euro con il caratteristiche: CPU 2 core 2.4GHz, 4GB RAM, 300 GB HDD, porta 100 Mbit/s. E anche la riluttanza a comprare qualcosa in più che costerebbe più di un cavo di connessione.

prefazione

Per ovvi motivi, non possiamo semplicemente inoltrare le porte della fotocamera al router e goderci la vita, inoltre, anche se potessimo, non dovremmo farlo.

Ho sentito all'improvviso che ci sono alcune opzioni con il tunneling IPv6, dove sembra che tutto possa essere fatto in modo che tutti i dispositivi sulla rete ricevano un indirizzo IPv6 esterno, e questo semplificherebbe un po' le cose, anche se lascia comunque la sicurezza dell'evento in questione e il supporto per questo miracolo nel firmware TP-LINK standard è in qualche modo strano. Anche se c'è la possibilità che nella frase precedente io stia dicendo delle sciocchezze, quindi non prestarci affatto attenzione.

Ma, fortunatamente per noi, quasi tutti i firmware per qualsiasi router (un'affermazione piuttosto infondata in effetti) contengono un client PPTP/L2TP o la possibilità di installare firmware personalizzato con esso. E da questo possiamo già costruire una sorta di strategia comportamentale.

Topologia

In un attacco di febbre, il mio cervello ha partorito qualcosa come questo schema elettrico:

e durante un altro attacco l'ho disegnato per postarlo su HabrVideosorveglianza domestica. Schema per mantenere un archivio video senza registratore domestico

L'indirizzo 169.178.59.82 è stato generato in modo casuale e serve solo come esempio

Bene, o se in parole, allora:

  • Router TP-LINK 1 (192.168.1.1), nel quale è inserito un cavo che sporge dal muro. Un lettore curioso immaginerà che questo è il cavo del provider tramite il quale accedo a Internet. Vari dispositivi domestici sono collegati a questo router tramite cavo di connessione o Wi-Fi. Questa è la rete 192.168.1.0
  • Router TP-LINK 2 (192.168.0.1, 192.168.1.200), nel quale è inserito un cavo che sporge dal router TP-LINK 1. Grazie a questo cavo, anche il router TP-LINK 2, così come i dispositivi ad esso collegati, hanno accesso a Internet. Questo router è configurato con una connessione PPTP (10.0.5.100) al server 169.178.59.82. Anche la telecamera IP 192.168.0.200 è collegata a questo router e vengono inoltrate le seguenti porte
    • 192.168.0.200:80 -> 49151 (webmord)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • Server (169.178.59.82, 10.0.5.1), a cui è collegato il router TP-LINK 2. Il server esegue pptpd, shadowsocks e 3proxy, attraverso i quali è possibile accedere ai dispositivi sulla rete 10.0.5.0 e quindi avere accesso al router TP-LINK 2.

Pertanto, tutti i dispositivi domestici sulla rete 192.168.1.0 hanno accesso alla telecamera tramite TP-LINK 2 su 192.168.1.200 e tutti gli altri possono connettersi tramite pptp, shadowsocks o calzini5 e accedere a 10.0.5.100.

registrazione

Il primo passo è collegare tutti i dispositivi secondo lo schema nella figura sopra.

  • La configurazione del router TP-LINK 1 si riduce a riservare l'indirizzo 192.168.1.200 per TP-LINK 2. Facoltativo se è necessario un indirizzo fisso per l'accesso dalla rete 192.168.1.0. E, se lo desideri, puoi riservargli 10-20 Mbit (10 sono sufficienti per un flusso video 1080).
  • È necessario installare e configurare pptpd sul server. Ho Ubuntu 18.04 e i passaggi erano approssimativamente i seguenti (il donatore era un esempio blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Installa i pacchetti richiesti:
      sudo apt install pptpd iptables-persistent
    • Lo portiamo al seguente modulo

      /etc/pptpd.conf

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

    • Modifichiamo

      /etc/ppp/pptpd-opzioni

      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
      
    • Aggiunta di credenziali a

      /etc/ppp/chap-secrets

      # Secrets for authentication using CHAP
      # client	server	secret			IP addresses
      username pptpd password *
    • aggiungere a

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      e ricaricare sysctl

      sudo sysctl -p
    • Riavvia pptpd e aggiungilo all'avvio
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • Modifichiamo

      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

      E risparmia

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • Configurazione di TP-LINK 2
    • Riserviamo l'indirizzo 192.168.0.200 per la nostra fotocamera:

      DHCP -> Prenotazione indirizzo — Indirizzo MAC — MAC della telecamera, può essere visualizzato in DHCP -> Elenco dei client DHCP
      — Indirizzo IP riservato — 192.168.0.200

    • Porti di inoltro:
      Reindirizzamento -> Server virtuali — Porta di servizio: 49151, Porta interna: 80, Indirizzo IP: 192.168.0.200, Protocollo: TCP
      — Porta di servizio: 49152, Porta interna: 34567, Indirizzo IP: 192.168.0.200, Protocollo: TCP
      — Porta di servizio: 49153, Porta interna: 554, Indirizzo IP: 192.168.0.200, Protocollo: TCP
    • Configurazione di una connessione VPN:

      Rete -> WAN — Tipo di connessione WAN: PPTP
      — Nome utente: nome utente (vedi /etc/ppp/chap-secrets)
      — Password: password (vedi /etc/ppp/chap-secrets)
      — Conferma password: password (vedi /etc/ppp/chap-secrets)
      - IP dinamico
      — Indirizzo IP/Nome server: 169.178.59.82 (ovviamente l'IP esterno del tuo server)
      — Modalità di connessione: connessione automatica

    • Facoltativamente, consentiamo l'accesso remoto alla faccia web del router
      Sicurezza -> Gestione remota - Porta di gestione Web: 80
      — Indirizzo IP di gestione remota: 255.255.255.255
    • Riavvia il router TP-LINK 2

Invece di PPTP, puoi utilizzare L2TP o, se disponi di firmware personalizzato, qualunque cosa desideri. Ho scelto PPTP, poiché questo schema non è stato creato per motivi di sicurezza e pptpd, secondo la mia esperienza, è il server VPN più veloce. Inoltre non volevo installare un firmware personalizzato, il che significava che dovevo scegliere tra PPTP e L2TP.

Se non ho commesso errori in nessuna parte del manuale e hai fatto tutto correttamente e sei stato fortunato, dopo tutte queste manipolazioni

  • in primo luogo
    ifconfig

    mostrerà l'interfaccia ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • in secondo luogo, 10.0.5.100 deve eseguire il ping,
  • e in terzo luogo
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Dovrebbe rilevare il flusso.
    Puoi trovare la porta rtsp, il login e la password nella documentazione della tua fotocamera

conclusione

In linea di principio, questo non è male, c'è l'accesso a RTSP, se il software proprietario funziona tramite DVRIP, puoi usarlo. Puoi salvare lo streaming utilizzando ffmpeg, velocizzare il video 2-3-5 volte, suddividerlo in parti di un'ora, caricare il tutto su Google Drive o sui social network e molto, molto altro ancora.

Non mi è piaciuto RTSP su TCP, perché non funzionava in modo molto stabile, ma su UDP, per il motivo che non possiamo (o possiamo, ma non voglio farlo) inoltrare l'intervallo di porte attraverso il quale RTSP spingerà il flusso video, non funzionerà, ho scritto uno script che trascina un flusso su TCP tramite DVRIP. Si è rivelato più stabile.

Uno dei vantaggi di questo approccio è che possiamo prendere qualcosa che supporti un fischio 2G al posto del router TP-LINK 4, alimentare il tutto insieme alla telecamera da un UPS (che avrà sicuramente bisogno di un UPS molto meno capiente di quando utilizzando un registratore), inoltre, la registrazione viene trasmessa quasi istantaneamente al server, quindi anche se gli intrusi penetrano nel tuo sito, non saranno in grado di impossessarsi del video. In generale c'è margine di manovra e tutto dipende solo dalla tua immaginazione.

PS: so che molti produttori offrono soluzioni cloud già pronte, ma nel prezzo costano quasi il doppio del mio VPS (di cui ne ho già 3, quindi devo allocare le risorse da qualche parte), forniscono molto meno controllo e anche non qualità molto soddisfacente.

Fonte: habr.com

Aggiungi un commento