Videoövervakning hemma. System för att underhålla ett videoarkiv utan en hemregistrator

Jag har länge velat skriva en artikel om ett manus för att arbeta med en kamera genom DVRIP-protokollet, men diskussionen om de senaste nyheterna om Xiaomi fick mig att först prata om hur jag ställer in videoövervakning hos mig och sedan gå vidare till manus med mera.

Vi hade 2 förpackningar... Så vänta, det är inte historien.
Vi hade 2 TP-LINK-routrar, internetåtkomst bakom en NAT-leverantör, en Partizan-övervakningskamera, jag kommer inte ihåg vilken modell (vilken IP-kamera som helst som stöder RSTP över TCP eller DVRIP klarar) och en billig VPS för 4 euro med egenskaper: 2-kärnig CPU 2.4 GHz, 4 GB RAM, 300 GB hårddisk, 100 Mbit/s port. Och även oviljan att köpa något för detta som skulle kosta mer än en patch-sladd.

Förord

Av förklarliga skäl kan vi inte bara vidarebefordra kameraportarna på routern och njuta av livet, dessutom, även om vi kunde, borde vi inte göra det.

I örat hörde jag att det finns några alternativ med IPv6-tunnling, där det verkar som att allt går att göra så att alla enheter i nätverket får en extern IPv6-adress, och det skulle dock förenkla lite, fortfarande lämnar säkerheten för denna händelse i fråga, och även stödet i standard TP-LINK-firmware för detta mirakel är på något sätt konstigt. Även om det är möjligt att jag i föregående mening pratar totalt nonsens, så var inte uppmärksam på det alls.

Men lyckligtvis för oss innehåller nästan all firmware för vilken router som helst (ett ganska ogrundat uttalande faktiskt) en PPTP / L2TP-klient eller möjligheten att installera anpassad firmware med dess närvaro. Och utifrån detta kan vi redan bygga någon slags beteendestrategi.

Topologi

I ett feberanfall födde min hjärna något som det här kopplingsschemat,

och under en annan attack ritade jag för att lägga den på HabrVideoövervakning hemma. System för att underhålla ett videoarkiv utan en hemregistrator

Adressen 169.178.59.82 genereras slumpmässigt och fungerar endast som ett exempel

Tja, eller om i ord, då:

  • Router TP-LINK 1 (192.168.1.1), i vilken en kabel sätts in som sticker ut ur väggen. En nyfiken läsare kommer att gissa att detta är en leverantörskabel genom vilken jag får tillgång till Internet. En mängd olika hemenheter är anslutna till denna router via en patchkabel eller Wi-Fi. Det är ett nätverk 192.168.1.0
  • Router TP-LINK 2 (192.168.0.1, 192.168.1.200), i vilken en kabel sätts in som sticker ut ur routern TP-LINK 1. Tack vare denna kabel har routern TP-LINK 2, liksom de enheter som är anslutna till den, även tillgång till Internet. Denna router har en PPTP-anslutning (10.0.5.100) konfigurerad till servern 169.178.59.82. IP-kameran 192.168.0.200 är också ansluten till denna router och följande portar vidarebefordras
    • 192.168.0.200:80 -> 49151 (webbface)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • Server (169.178.59.82, 10.0.5.1), som TP-LINK 2-routern är ansluten till. Pptpd, shadowsocks och 3proxy körs på servern, genom vilka du kan komma åt enheter på 10.0.5.0-nätverket och därmed få tillgång till TP-LINK 2-routern.

Således kan alla hemenheter på nätverket 192.168.1.0 komma åt kameran via TP-LINK 2 på 192.168.1.200, och alla andra enheter kan ansluta via pptp, shadowsocks eller socks5 och komma åt 10.0.5.100.

justering

Det första steget är att ansluta alla enheter enligt diagrammet i figuren ovan.

  • Att sätta upp en TP-LINK 1-router handlar om att reservera adressen 192.168.1.200 för TP-LINK 2. Valfritt om du behöver en fast adress för åtkomst från 192.168.1.0-nätverket. Och om så önskas kan du reservera 10-20 Mbps för det (10 räcker för en videoström i 1080 med ett huvud).
  • På servern måste du installera och konfigurera pptpd. Jag har Ubuntu 18.04 och stegen var ungefär följande (givaren var ett exempel blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Installera de nödvändiga paketen:
      sudo apt install pptpd iptables-persistent
    • Vi tar till följande form

      /etc/pptpd.conf

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

    • Regel

      /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
      
    • Lägger till autentiseringsuppgifter till

      /etc/ppp/chap-secrets

      # Secrets for authentication using CHAP
      # client	server	secret			IP addresses
      username pptpd password *
    • Lägg till

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      och ladda om sysctl

      sudo sysctl -p
    • Starta om pptpd och lägg till den för autoload
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • Regel

      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

      Och spara

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • Ställa in TP-LINK 2
    • Vi reserverar adressen 192.168.0.200 för vår kamera:

      DHCP -> Adressreservation - MAC-adress - Kamerans MAC, kan ses i DHCP -> Lista över DHCP-klienter
      - Reserverad IP-adress - 192.168.0.200

    • Vidarebefordran portar:
      Vidarebefordran -> Virtuella servrar - Serviceport: 49151, Intern port: 80, IP-adress: 192.168.0.200, Protokoll: TCP
      - Serviceport: 49152, Intern port: 34567, IP-adress: 192.168.0.200, Protokoll: TCP
      - Serviceport: 49153, Intern port: 554, IP-adress: 192.168.0.200, Protokoll: TCP
    • Konfigurera VPN-anslutning:

      Nätverk -> WAN - WAN-anslutningstyp: PPTP
      - Användarnamn: användarnamn (se /etc/ppp/chap-secrets)
      - Lösenord: lösenord (se /etc/ppp/chap-secrets)
      - Bekräfta lösenord: lösenord (se /etc/ppp/chap-secrets)
      - Dynamisk IP
      - IP-adress / servernamn: 169.178.59.82 (uppenbarligen den externa IP-adressen för din server)
      - Anslutningsläge: Anslut automatiskt

    • Tillåt eventuellt fjärråtkomst till routerns webbmord
      Säkerhet -> Fjärrkontroll - Webbhanteringsport: 80
      - IP-adress för fjärrhantering: 255.255.255.255
    • Startar om TP-LINK 2-routern

Istället för PPTP kan du använda L2TP eller, om du har anpassad firmware, vad du än vill. Jag valde PPTP eftersom detta schema inte var baserat på säkerhetsöverväganden, och pptpd är den snabbaste VPN-servern enligt min erfarenhet. Dessutom ville jag verkligen inte installera anpassad firmware, vilket betyder att jag var tvungen att välja mellan PPTP och L2TP.

Om jag inte gjorde ett misstag någonstans i manualen, och du gjorde allt rätt och du hade tur, så efter alla dessa manipulationer

  • första
    ifconfig

    kommer att visa gränssnittet ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • för det andra måste 10.0.5.100 pingas,
  • och för det tredje
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Bör upptäcka strömmen.
    rtsp-port, inloggning och lösenord hittar du i dokumentationen till din kamera

Slutsats

I princip är det redan inte dåligt, det finns tillgång till RTSP, om proprietär programvara fungerar via DVRIP kan du använda den. Du kan spara strömmen med ffmpeg, snabba upp videon med 2-3-5 gånger, dela upp den i bitar per timme, ladda upp allt till Google Drive eller sociala nätverk och mycket, mycket mer.

Jag gillade inte RTSP över TCP, för på något sätt fungerade det inte särskilt stabilt, utan över UDP, av anledningarna att vi inte kan (eller vi kan, men jag vill inte göra detta) vidarebefordra portomfånget på vilken RTSP kommer att skjuta videoströmmen, det kommer inte att fungera, jag skrev ett skript som drar strömmen över TCP över DVRIP. Det verkade vara mer stabilt.

Av fördelarna med tillvägagångssättet - vi kan ta något som stöder en 2G-vissling i stället för TP-LINK 4-routern, driva det hela tillsammans med kameran från UPS:en (vilket utan tvekan kommer att krävas mycket mindre kapacitet än när du använder registratorn ), dessutom överförs inspelningen nästan omedelbart till servern, så att även om angripare kommer in på din plats, kommer de inte att kunna ta bort videon från dem. I allmänhet finns det manöverutrymme och allt beror på din fantasi.

PS: Jag vet att många tillverkare erbjuder färdiga molnlösningar, men till ett pris kostar de nästan dubbelt så mycket som min VPS (varav jag redan har 3, så jag måste lägga resurser någonstans), ger mycket mindre kontroll och också inte särskilt tillfredsställande kvalitet.

Källa: will.com

Lägg en kommentar