Videoovervåking hjemme. Ordning for vedlikehold av et videoarkiv uten hjemmeopptaker

Jeg har lenge hatt lyst til å skrive en artikkel om et skript for å jobbe med et kamera via DVRIP-protokollen, men diskusjonen knyttet til de siste nyhetene om Xiaomi fikk meg til først å snakke om hvordan jeg setter opp videoovervåking hjemme, og så gå videre til manus og andre ting.

Vi hadde 2 pakker... Så vent, dette er ikke den samme historien.
Vi hadde 2 rutere fra TP-LINK, Internett-tilgang bak leverandøren NAT, et Partizan overvåkingskamera jeg husker ikke hvilken modell (noen IP-kamera som støtter RSTP over TCP eller DVRIP vil gjøre) og en billig VPS for 4 euro med egenskaper: 2 kjerner CPU 2.4 GHz, 4 GB RAM, 300 GB HDD, 100 Mbit/s port. Og også motviljen til å kjøpe noe i tillegg til dette som ville koste mer enn en patch-ledning.

Forord

Av åpenbare grunner kan vi ikke bare videresende kameraportene på ruteren og nyte livet, dessuten, selv om vi kunne, burde vi ikke gjøre det.

Jeg hørte helt ut av det blå at det er noen alternativer med IPv6-tunneling, der det ser ut til at alt kan gjøres slik at alle enheter på nettverket mottar en ekstern IPv6-adresse, og dette ville forenkle ting litt, selv om det fortsatt etterlater sikkerheten av denne hendelsen det gjelder , og støtten for dette miraklet i standard TP-LINK-fastvaren er på en eller annen måte merkelig. Selv om det er en mulighet for at jeg i forrige setning snakker fullstendig tull, så ikke ta hensyn til det i det hele tatt.

Men heldigvis for oss inneholder nesten enhver fastvare for enhver ruter (en ganske ubegrunnet uttalelse faktisk) en PPTP/L2TP-klient eller muligheten til å installere tilpasset fastvare med den. Og fra dette kan vi allerede bygge en slags atferdsstrategi.

Topologi

I et feberanfall fødte hjernen min noe sånt som dette koblingsskjemaet:

og under et annet angrep tegnet jeg det for å legge ut på HabrVideoovervåking hjemme. Ordning for vedlikehold av et videoarkiv uten hjemmeopptaker

Adressen 169.178.59.82 ble generert tilfeldig og fungerer kun som et eksempel

Vel, eller hvis i ord, så:

  • router TP-LINK 1 (192.168.1.1), hvor det settes inn en kabel som stikker ut av veggen. En nysgjerrig leser vil gjette at dette er leverandørkabelen jeg får tilgang til Internett via. Ulike hjemmeenheter er koblet til denne ruteren via patchkabel eller Wi-Fi. Dette er nettverket 192.168.1.0
  • router TP-LINK 2 (192.168.0.1, 192.168.1.200), som det settes inn en kabel i som stikker ut av ruteren TP-LINK 1. Takket være denne kabelen har ruteren TP-LINK 2, samt enhetene som er koblet til den, også tilgang til Internett. Denne ruteren er konfigurert med en PPTP-tilkobling (10.0.5.100) til server 169.178.59.82. IP-kamera 192.168.0.200 er også koblet til denne ruteren og følgende porter videresendes
    • 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), som ruteren TP-LINK 2 er koblet til. Serveren kjører pptpd, shadowsocks og 3proxy, som du gjennom kan få tilgang til enheter på 10.0.5.0-nettverket og dermed få tilgang til TP-LINK 2-ruteren.

Dermed har alle hjemmeenheter på 192.168.1.0-nettverket tilgang til kameraet via TP-LINK 2 på 192.168.1.200, og alle andre kan koble til via pptp, shadowsocks eller socks5 og få tilgang til 10.0.5.100.

justering

Det første trinnet er å koble til alle enheter i henhold til diagrammet i figuren ovenfor.

  • Å sette opp TP-LINK 1-ruteren handler om å reservere adressen 192.168.1.200 for TP-LINK 2. Valgfritt hvis du trenger en fast adresse for tilgang fra 192.168.1.0-nettverket. Og om ønskelig kan du reservere 10-20 Mbit for det (10 er nok for en 1080 videostrøm).
  • Du må installere og konfigurere pptpd på serveren. Jeg har Ubuntu 18.04 og trinnene var omtrent som følger (giveren var et eksempel blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Installer de nødvendige pakkene:
      sudo apt install pptpd iptables-persistent
    • Vi bringer det til følgende skjema

      /etc/pptpd.conf

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

    • Vi redigerer

      /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
      
    • Legger til legitimasjon til

      /etc/ppp/chap-secrets

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

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      og last sysctl på nytt

      sudo sysctl -p
    • Start pptpd på nytt og legg den til ved oppstart
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • Vi redigerer

      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

      Og spar

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • Sette opp TP-LINK 2
    • Vi reserverer adressen 192.168.0.200 for vårt kamera:

      DHCP -> Adressereservasjon — MAC-adresse — kamera-MAC, kan vises i DHCP -> Liste over DHCP-klienter
      — Reservert IP-adresse — 192.168.0.200

    • Videresendingsporter:
      Omdirigering -> Virtuelle servere — Tjenesteport: 49151, Intern port: 80, IP-adresse: 192.168.0.200, Protokoll: TCP
      — Tjenesteport: 49152, Intern port: 34567, IP-adresse: 192.168.0.200, Protokoll: TCP
      — Tjenesteport: 49153, Intern port: 554, IP-adresse: 192.168.0.200, Protokoll: TCP
    • Sette opp en VPN-tilkobling:

      Nettverk -> WAN — WAN-tilkoblingstype: PPTP
      — Brukernavn: brukernavn (se /etc/ppp/chap-secrets)
      — Passord: passord (se /etc/ppp/chap-secrets)
      — Bekreft passord: passord (se /etc/ppp/chap-secrets)
      - Dynamisk IP
      — IP-adresse/servernavn: 169.178.59.82 (selvfølgelig den eksterne IP-en til serveren din)
      — Tilkoblingsmodus: Koble til automatisk

    • Eventuelt tillater vi ekstern tilgang til ruterens nettflate
      Sikkerhet -> Fjernstyring - Nettadministrasjonsport: 80
      — IP-adresse for ekstern administrasjon: 255.255.255.255
    • Start TP-LINK 2-ruteren på nytt

I stedet for PPTP kan du bruke L2TP eller, hvis du har tilpasset firmware, hva du måtte ønske. Jeg valgte PPTP, siden dette opplegget ikke ble bygget av sikkerhetsgrunner, og pptpd, etter min erfaring, er den raskeste VPN-serveren. Dessuten ville jeg egentlig ikke installere tilpasset firmware, noe som betydde at jeg måtte velge mellom PPTP og L2TP.

Hvis jeg ikke gjorde en feil noe sted i manualen, og du gjorde alt riktig og var heldig, så etter alle disse manipulasjonene

  • først
    ifconfig

    vil vise grensesnittet ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • for det andre må 10.0.5.100 pinge,
  • og for det tredje
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Bør oppdage strømmen.
    Du finner rtsp-porten, påloggingen og passordet i dokumentasjonen for kameraet ditt

Konklusjon

I prinsippet er ikke dette dårlig, det er tilgang til RTSP, hvis proprietær programvare fungerer via DVRIP, så kan du bruke det. Du kan lagre strømmen ved å bruke ffmpeg, øke hastigheten på videoen 2-3-5 ganger, dele den opp i timelange biter, laste opp alt til Google Disk eller sosiale nettverk og mye, mye mer.

Jeg likte ikke RTSP over TCP fordi det ikke fungerte veldig stabilt, men over UDP, av den grunn at vi ikke kan (eller vi kan, men jeg vil ikke gjøre det) videresende portutvalget gjennom hvilken RTSP som vil presse videostrømmen, det vil ikke fungere, jeg skrev et skript som drar en strøm over TCP via DVRIP. Det viste seg å være mer stabilt.

En av fordelene med tilnærmingen er at vi kan ta noe som støtter en 2G-fløyte i stedet for TP-LINK 4-ruteren, drive det hele sammen med kameraet fra en UPS (som utvilsomt vil trenge en mye mindre kapasitet enn når ved hjelp av en opptaker), i tillegg overføres opptaket nesten umiddelbart til serveren, så selv om inntrengere trenger inn på nettstedet ditt, vil de ikke kunne gripe videoen. Generelt er det manøvreringsrom og alt avhenger bare av fantasien din.

PS: Jeg vet at mange produsenter tilbyr ferdige skyløsninger, men i pris er de nesten dobbelt så dyre som min VPS (som jeg allerede har 3 av, så jeg må allokere ressurser et sted), gir mye mindre kontroll, og også ikke veldig tilfredsstillende kvalitet.

Kilde: www.habr.com

Legg til en kommentar