Videovigilancia domiciliaria. Esquema de mantenimiento de un archivo de video sin un registrador doméstico

Hace tiempo que quería escribir un artículo sobre un script para trabajar con una cámara a través del protocolo DVRIP, pero la discusión relacionada con las noticias recientes sobre Xiaomi Me impulsó a hablar primero sobre cómo configuro la videovigilancia en casa y luego pasar a los guiones y otras cosas.

Teníamos 2 paquetes... Entonces, espera, esta no es la misma historia.
Teníamos 2 enrutadores de TP-LINK, acceso a Internet detrás del proveedor NAT, una cámara de vigilancia Partizan no recuerdo qué modelo (cualquier cámara IP que admita RSTP sobre TCP o DVRIP servirá) y un VPS barato por 4 euros con el características: CPU de 2 núcleos a 2.4 GHz, 4 GB de RAM, disco duro de 300 GB, puerto de 100 Mbit/s. Y también la renuencia a comprar cualquier cosa además de esto que cueste más que un cable de conexión.

prefacio

Por razones obvias, no podemos simplemente reenviar los puertos de la cámara en el enrutador y disfrutar de la vida; además, incluso si pudiéramos, no deberíamos hacerlo.

Escuché de la nada que hay algunas opciones con el túnel IPv6, donde parece que se puede hacer todo para que todos los dispositivos en la red reciban una dirección IPv6 externa, y esto simplificaría un poco las cosas, aunque todavía deja la seguridad. de este evento en cuestión, y el soporte para este milagro en el firmware estándar de TP-LINK es algo extraño. Aunque existe la posibilidad de que en la frase anterior esté diciendo una completa tontería, así que no le prestes atención en absoluto.

Pero, afortunadamente para nosotros, casi cualquier firmware para cualquier enrutador (de hecho, una afirmación bastante infundada) contiene un cliente PPTP/L2TP o la capacidad de instalar firmware personalizado con él. Y a partir de esto ya podemos construir algún tipo de estrategia de comportamiento.

Topología

En un ataque de fiebre, mi cerebro dio origen a algo como este diagrama de cableado:

y durante otro ataque lo dibujé para publicarlo en Habr.Videovigilancia domiciliaria. Esquema de mantenimiento de un archivo de video sin un registrador doméstico

La dirección 169.178.59.82 se generó aleatoriamente y sirve sólo como ejemplo.

Bueno, o si en palabras, entonces:

  • Router TP-ENLACE 1 (192.168.1.1), en el que se inserta un cable que sobresale de la pared. Un lector curioso adivinará que este es el cable del proveedor a través del cual accedo a Internet. Varios dispositivos domésticos están conectados a este enrutador mediante un cable de conexión o Wi-Fi. esta es la red 192.168.1.0
  • Router TP-LINK 2 (192.168.0.1, 192.168.1.200), en el que se inserta un cable que sobresale del enrutador TP-LINK 1. Gracias a este cable, el enrutador TP-LINK 2, así como los dispositivos conectados a él, también tienen acceso a Internet. Este enrutador está configurado con una conexión PPTP (10.0.5.100) al servidor 169.178.59.82. La cámara IP 192.168.0.200 también está conectada a este enrutador y se reenvían los siguientes puertos
    • 192.168.0.200:80 -> 49151 (webmord)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • Servidor (169.178.59.82, 10.0.5.1), al que está conectado el enrutador TP-LINK 2. El servidor ejecuta pptpd, shadowsocks y 3proxy, a través de los cuales puede acceder a dispositivos en la red 10.0.5.0 y así tener acceso al enrutador TP-LINK 2.

Así, todos los dispositivos domésticos de la red 192.168.1.0 tienen acceso a la cámara a través de TP-LINK 2 en 192.168.1.200, y todos los demás pueden conectarse a través de pptp, Shadowsocks o Socks5 y acceder a 10.0.5.100.

Ajuste

El primer paso es conectar todos los dispositivos según el diagrama de la figura anterior.

  • Configurar el enrutador TP-LINK 1 se reduce a reservar la dirección 192.168.1.200 para TP-LINK 2. Opcional si necesita una dirección fija para acceder desde la red 192.168.1.0. Y, si lo desea, puede reservarle entre 10 y 20 Mbit (10 son suficientes para una transmisión de video 1080).
  • Necesita instalar y configurar pptpd en el servidor. Tengo Ubuntu 18.04 y los pasos fueron aproximadamente los siguientes (el donante fue un ejemplo blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Instale los paquetes necesarios:
      sudo apt install pptpd iptables-persistent
    • Lo traemos al siguiente formulario.

      /etc/pptpd.conf

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

    • editamos

      /etc/ppp/pptpd-opciones

      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
      
    • Agregar credenciales a

      /etc/ppp/chap-secretos

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

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      y recargar sysctl

      sudo sysctl -p
    • Reinicie pptpd y agréguelo al inicio
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • editamos

      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

      Y guarda

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • Configurando TP-LINK 2
    • Reservamos la dirección 192.168.0.200 para nuestra cámara:

      DHCP -> Reserva de dirección — Dirección MAC — MAC de la cámara, se puede ver en DHCP -> Lista de clientes DHCP
      — Dirección IP reservada — 192.168.0.200

    • Puertos de reenvío:
      Redirección -> Servidores Virtuales — Puerto de servicio: 49151, Puerto interno: 80, Dirección IP: 192.168.0.200, Protocolo: TCP
      — Puerto de servicio: 49152, Puerto interno: 34567, Dirección IP: 192.168.0.200, Protocolo: TCP
      — Puerto de servicio: 49153, Puerto interno: 554, Dirección IP: 192.168.0.200, Protocolo: TCP
    • Configurar una conexión VPN:

      Red -> WAN — Tipo de conexión WAN: PPTP
      — Nombre de usuario: nombre de usuario (ver /etc/ppp/chap-secrets)
      — Contraseña: contraseña (ver /etc/ppp/chap-secrets)
      — Confirmar contraseña: contraseña (ver /etc/ppp/chap-secrets)
      - IP dinámica
      — Dirección IP/Nombre del servidor: 169.178.59.82 (obviamente, la IP externa de su servidor)
      — Modo de conexión: conectarse automáticamente

    • Opcionalmente, permitimos el acceso remoto a la cara web del router.
      Seguridad -> Gestión Remota - Puerto de gestión web: 80
      — Dirección IP de gestión remota: 255.255.255.255
    • Reinicie el enrutador TP-LINK 2

En lugar de PPTP, puede usar L2TP o, si tiene firmware personalizado, lo que desee. Elegí PPTP porque este esquema no se creó por razones de seguridad y pptpd, en mi experiencia, es el servidor VPN más rápido. Además, realmente no quería instalar firmware personalizado, lo que significaba que tenía que elegir entre PPTP y L2TP.

Si no cometí ningún error en ninguna parte del manual, hiciste todo correctamente y tuviste suerte, luego de todas estas manipulaciones

  • primero
    ifconfig

    mostrará la interfaz ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • en segundo lugar, 10.0.5.100 debe hacer ping,
  • y en tercer lugar
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Debería detectar la corriente.
    Puede encontrar el puerto rtsp, el nombre de usuario y la contraseña en la documentación de su cámara.

Conclusión

En principio, esto no está mal, hay acceso a RTSP, si el software propietario funciona a través de DVRIP, entonces puedes usarlo. Puedes guardar la transmisión usando ffmpeg, acelerar el video 2-3-5 veces, dividirlo en partes de una hora, subirlo todo a Google Drive o redes sociales y mucho, mucho más.

No me gustó RTSP sobre TCP, porque no funcionó de manera muy estable, pero sobre UDP, por las razones por las que no podemos (o podemos, pero no quiero hacerlo) reenviar el rango de puertos. a través del cual RTSP enviará la transmisión de video, no funcionará, escribí un script que arrastra una transmisión a través de TCP a través de DVRIP. Resultó ser más estable.

Una de las ventajas del enfoque es que podemos tomar algo que admita un silbato 2G en lugar del enrutador TP-LINK 4, alimentarlo todo junto con la cámara desde un UPS (que sin duda necesitará uno de mucha menos capacidad que cuando usando una grabadora), además, la grabación se transmite casi instantáneamente al servidor, por lo que incluso si los intrusos ingresan a su sitio, no podrán apoderarse del video. En general, hay margen de maniobra y todo depende sólo de tu imaginación.

PD: Sé que muchos fabricantes ofrecen soluciones en la nube listas para usar, pero en precio son casi el doble que mi VPS (de los cuales ya tengo 3, por lo que necesito asignar recursos en alguna parte), brindan mucho menos control y también No es una calidad muy satisfactoria.

Fuente: habr.com

Añadir un comentario