Kodune videovalve. Videoarhiivi pidamise skeem ilma koduregistripidajata

Olen juba pikka aega tahtnud kirjutada artiklit DVRIP-protokolli kaudu kaameraga töötamise skriptist, kuid arutelu on seotud hiljutiste uudistega Xiaomi ajendas mind esmalt rääkima sellest, kuidas ma kodus videovalve seadistasin, ja seejärel liikuma edasi stsenaariumide ja muude asjade juurde.

Meil oli 2 pakki... Nii et oota, see pole sama lugu.
Meil oli 2 ruuterit TP-LINKist, Interneti-juurdepääs pakkuja NAT taga, Partizan valvekaamera, ma ei mäleta, mis mudelit (sobib iga IP-kaamera, mis toetab RSTP-d üle TCP või DVRIP) ja odav VPS 4 euro eest koos omadused: 2-tuumaline protsessor 2.4 GHz, 4 GB muutmälu, 300 GB HDD, 100 Mbit/s port. Ja ka soovimatus osta midagi lisaks sellele, mis maksaks rohkem kui plaastri juhe.

Eessõna

Arusaadavatel põhjustel ei saa me lihtsalt ruuteri kaameraporte edasi saata ja elu nautida, pealegi, isegi kui saaksime, ei tohiks me seda teha.

Täiesti ootamatult kuulsin, et IPv6 tunneldamisega on mingid võimalused, kus tundub, et kõik saab teha nii, et kõik võrgus olevad seadmed saaksid välise IPv6 aadressi ja see lihtsustaks asja veidi, kuigi jätab siiski turvalisuse selle sündmuse kohta ja selle ime tugi standardses TP-LINKi püsivaras on kuidagi kummaline. Kuigi on võimalus, et eelmises lauses räägin täielikku jama, siis ärge pöörake sellele üldse tähelepanu.

Kuid meie õnneks sisaldab peaaegu iga ruuteri püsivara (tegelikult üsna alusetu väide) PPTP/L2TP klienti või võimalust installida sellega kohandatud püsivara. Ja sellest saame juba mingisuguse käitumisstrateegia üles ehitada.

Topoloogia

Palavikuhoos sünnitas mu aju umbes sellise juhtmestiku:

ja teise rünnaku ajal joonistasin selle postitamiseks HabrileKodune videovalve. Videoarhiivi pidamise skeem ilma koduregistripidajata

Aadress 169.178.59.82 genereeriti juhuslikult ja see on ainult näide

Noh, või kui sõnadega, siis:

  • Ruuter TP-LINK 1 (192.168.1.1), millesse on sisestatud seinast välja torkav kaabel. Uudishimulik lugeja arvab, et see on teenusepakkuja kaabel, mille kaudu ma Internetti pääsen. Erinevad koduseadmed on selle ruuteriga ühendatud plaastrijuhtme või WiFi kaudu. See on võrk 192.168.1.0
  • Ruuter TP-LINK 2 (192.168.0.1, 192.168.1.200), millesse on sisestatud kaabel, mis torkab välja ruuterist TP-LINK 1. Tänu sellele kaablile on TP-LINK 2 ruuteril ja ka sellega ühendatud seadmetel juurdepääs internetile. Sellel ruuteril on konfigureeritud PPTP-ühendus (10.0.5.100) serveriga 169.178.59.82. Selle ruuteriga on ühendatud ka IP-kaamera 192.168.0.200 ja järgmised pordid edastatakse
    • 192.168.0.200:80 -> 49151 (veebimoodul)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • Server (169.178.59.82, 10.0.5.1), millega on ühendatud ruuter TP-LINK 2. Serveris töötab pptpd, shadowsocks ja 3proxy, mille kaudu pääsete ligi 10.0.5.0 võrgus olevatele seadmetele ja pääsete seega ligi TP-LINK 2 ruuterile.

Seega on kõigil koduseadmetel 192.168.1.0 võrgus juurdepääs kaamerale TP-LINK 2 kaudu aadressil 192.168.1.200 ja kõik teised saavad ühenduda pptp, shadowsocks või sokid5 kaudu ja pääsevad ligi 10.0.5.100.

reguleerimine

Esimene samm on ühendada kõik seadmed vastavalt ülaltoodud joonisel olevale skeemile.

  • TP-LINK 1 ruuteri seadistamine taandub aadressi 192.168.1.200 reserveerimisele TP-LINK 2 jaoks. Valikuline, kui vajate 192.168.1.0 võrgust juurdepääsuks fikseeritud aadressi. Ja soovi korral saab sellele reserveerida 10-20 Mbit (ühe 10 videovoo jaoks piisab 1080-st).
  • Peate serverisse installima ja konfigureerima pptpd. Mul on Ubuntu 18.04 ja sammud olid ligikaudu järgmised (näide oli doonor blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Installige vajalikud paketid:
      sudo apt install pptpd iptables-persistent
    • Toome selle järgmisele vormile

      /etc/pptpd.conf

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

    • Redigeerime

      /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
      
    • Mandaatide lisamine

      /etc/ppp/chap-secrets

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

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      ja laadige uuesti sysctl

      sudo sysctl -p
    • Taaskäivitage pptpd ja lisage see käivitamisse
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • Redigeerime

      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

      Ja säästa

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • TP-LINKi seadistamine 2
    • Jätame oma kaamerale aadressi 192.168.0.200:

      DHCP -> Aadressi reserveerimine — MAC aadress — kaamera MAC, saab vaadata DHCP -> DHCP klientide loendist
      — Reserveeritud IP-aadress — 192.168.0.200

    • Edastuspordid:
      Ümbersuunamine -> Virtuaalsed serverid — teenindusport: 49151, siseport: 80, IP-aadress: 192.168.0.200, protokoll: TCP
      — teenindusport: 49152, siseport: 34567, IP-aadress: 192.168.0.200, protokoll: TCP
      — teenindusport: 49153, siseport: 554, IP-aadress: 192.168.0.200, protokoll: TCP
    • VPN-ühenduse seadistamine:

      Võrk -> WAN — WAN-ühenduse tüüp: PPTP
      — Kasutajanimi: kasutajanimi (vt /etc/ppp/chap-secrets)
      — Parool: parool (vt /etc/ppp/chap-secrets)
      — Kinnitage parool: parool (vt /etc/ppp/chap-secrets)
      - Dünaamiline IP
      — IP-aadress/serveri nimi: 169.178.59.82 (ilmselgelt teie serveri väline IP)
      — Ühendusrežiim: ühendage automaatselt

    • Valikuliselt võimaldame kaugjuurdepääsu ruuteri veebipinnale
      Turvalisus -> Kaughaldus - Veebihaldusport: 80
      — Kaughalduse IP-aadress: 255.255.255.255
    • Taaskäivitage TP-LINK 2 ruuter

PPTP asemel võite kasutada L2TP-d või kui teil on kohandatud püsivara, siis mida iganes teie süda soovib. Valisin PPTP, kuna seda skeemi ei ehitatud turvakaalutlustel ja pptpd on minu kogemuse kohaselt kiireim VPN-server. Lisaks ei tahtnud ma tõesti kohandatud püsivara installida, mis tähendas, et pidin valima PPTP ja L2TP vahel.

Kui ma ei teinud juhendis kuskil viga ja tegite kõik õigesti ja teil vedas, siis pärast kõiki neid manipuleerimisi

  • esiteks
    ifconfig

    näitab liidest ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • teiseks, 10.0.5.100 peab pingima,
  • ja kolmandaks
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Peaks voo tuvastama.
    Rtsp-pordi, sisselogimise ja parooli leiate oma kaamera dokumentatsioonist

Järeldus

Põhimõtteliselt pole see halb, juurdepääs RTSP-le on olemas, kui patenteeritud tarkvara töötab DVRIP-i kaudu, saate seda kasutada. Saate salvestada voo ffmpeg abil, kiirendada videot 2-3-5 korda, jagada tunnipikkusteks tükkideks, laadida kõik Google Drive'i või sotsiaalvõrgustikesse ja palju-palju muud.

Mulle ei meeldinud RTSP üle TCP, kuna see ei töötanud väga stabiilselt, vaid üle UDP, põhjustel, et me ei saa (või saame, aga ma ei taha seda teha) pordivahemikku edasi saata. mille kaudu RTSP videovoogu surub, see ei tööta, kirjutasin skripti, mis lohistab voo üle TCP DVRIP-i kaudu. See osutus stabiilsemaks.

Selle lähenemisviisi üks eeliseid on see, et saame TP-LINK 2 ruuteri asemel võtta midagi, mis toetab 4G vilet, anda selle kõigele koos UPS-i kaameraga (mis vajab kahtlemata palju väiksemat mahtu kui siis, kui salvestit kasutades), edastatakse salvestus peaaegu koheselt serverisse, nii et isegi kui sissetungijad teie saidile tungivad, ei saa nad videot kinni võtta. Üldiselt on manööverdamisruumi ja kõik sõltub ainult teie kujutlusvõimest.

PS: Ma tean, et paljud tootjad pakuvad valmis pilvelahendusi, kuid hinnalt on need pea kaks korda kallimad kui minu VPS (mida mul on juba 3, seega pean kuskile ressursse eraldama), annavad palju vähem kontrolli ja ka ei ole väga rahuldav kvaliteet.

Allikas: www.habr.com

Lisa kommentaar