Giám sát video tại nhà. Đề án duy trì kho lưu trữ video mà không cần máy ghi âm tại nhà

Tôi đã muốn viết một bài về một kịch bản để làm việc với camera thông qua giao thức DVRIP từ khá lâu rồi, nhưng cuộc thảo luận liên quan đến những tin tức gần đây về Xiaomi đã thôi thúc tôi nói trước tiên về cách thiết lập hệ thống giám sát video ở nhà, sau đó chuyển sang kịch bản và những thứ khác.

Chúng tôi có 2 gói hàng... Đợi đã, đây không phải là một câu chuyện.
Chúng tôi có 2 bộ định tuyến từ TP-LINK, truy cập Internet đằng sau nhà cung cấp NAT, một camera giám sát Partizan. Tôi không nhớ model nào (bất kỳ camera IP nào hỗ trợ RSTP qua TCP hoặc DVRIP sẽ làm được) và một VPS giá rẻ với giá 4 euro với Đặc điểm: CPU 2 nhân tốc độ 2.4GHz, RAM 4GB, ổ cứng 300 GB, cổng 100 Mbit/s. Và cũng là sự miễn cưỡng khi mua thêm bất cứ thứ gì có giá cao hơn một sợi dây nối.

lời tựa

Vì những lý do hiển nhiên, chúng ta không thể chỉ chuyển tiếp các cổng camera trên bộ định tuyến và tận hưởng cuộc sống, hơn nữa, ngay cả khi có thể, chúng ta cũng không nên làm điều đó.

Tôi bất ngờ nghe nói rằng có một số tùy chọn với đường hầm IPv6, trong đó dường như mọi thứ đều có thể được thực hiện để tất cả các thiết bị trên mạng đều nhận được địa chỉ IPv6 bên ngoài và điều này sẽ đơn giản hóa mọi thứ một chút, mặc dù nó vẫn để lại sự bảo mật về sự kiện đang được đề cập này và sự hỗ trợ cho điều kỳ diệu này trong phần sụn TP-LINK tiêu chuẩn có phần kỳ lạ. Mặc dù có khả năng là ở câu trước tôi đang nói hoàn toàn vô nghĩa, vì vậy bạn đừng để ý đến nó chút nào.

Tuy nhiên, may mắn thay cho chúng tôi, hầu hết mọi chương trình cơ sở cho bất kỳ bộ định tuyến nào (trên thực tế là một tuyên bố khá vô căn cứ) đều chứa ứng dụng khách PPTP/L2TP hoặc khả năng cài đặt chương trình cơ sở tùy chỉnh với nó. Và từ đó chúng ta có thể xây dựng một số loại chiến lược hành vi.

Tôpô

Trong cơn sốt, não tôi đã sinh ra một thứ giống như sơ đồ nối dây này:

và trong một cuộc tấn công khác, tôi đã vẽ nó để đăng lên HabrGiám sát video tại nhà. Đề án duy trì kho lưu trữ video mà không cần máy ghi âm tại nhà

Địa chỉ 169.178.59.82 được tạo ngẫu nhiên và chỉ dùng làm ví dụ

Chà, hoặc nếu nói bằng lời thì:

  • Bộ định tuyến TP-LINK 1 (192.168.1.1), trong đó một sợi cáp nhô ra khỏi tường được lắp vào. Một độc giả tò mò sẽ đoán rằng đây là cáp của nhà cung cấp mà tôi truy cập Internet. Nhiều thiết bị gia đình khác nhau được kết nối với bộ định tuyến này thông qua dây nối hoặc Wi-Fi. Đây là mạng 192.168.1.0
  • Bộ định tuyến TP-LINK 2 (192.168.0.1, 192.168.1.200), trong đó một cáp được cắm vào bộ định tuyến TP-LINK 1. Nhờ cáp này, bộ định tuyến TP-LINK 2 cũng như các thiết bị được kết nối với nó cũng có thể truy cập Internet. Bộ định tuyến này được cấu hình với kết nối PPTP (10.0.5.100) đến máy chủ 169.178.59.82. Camera IP 192.168.0.200 cũng được kết nối với bộ định tuyến này và các cổng sau được chuyển tiếp
    • 192.168.0.200:80 -> 49151 (webmord)
    • 192.168.0.200:34567 -> 49152 (DVRIP)
    • 192.168.0.200:554 -> 49153 (RTSP)
  • Máy chủ (169.178.59.82, 10.0.5.1), mà bộ định tuyến TP-LINK 2 được kết nối. Máy chủ chạy pptpd, Shadowocks và 3proxy, qua đó bạn có thể truy cập các thiết bị trên mạng 10.0.5.0 và do đó có quyền truy cập vào bộ định tuyến TP-LINK 2.

Do đó, tất cả các thiết bị gia đình trên mạng 192.168.1.0 đều có quyền truy cập vào camera qua TP-LINK 2 tại 192.168.1.200 và tất cả các thiết bị khác có thể kết nối qua pptp, Shadowocks hoặc Socks5 và truy cập 10.0.5.100.

điều chỉnh

Bước đầu tiên là kết nối tất cả các thiết bị theo sơ đồ trong hình trên.

  • Việc thiết lập bộ định tuyến TP-LINK 1 bao gồm việc dành địa chỉ 192.168.1.200 cho TP-LINK 2. Tùy chọn nếu bạn cần một địa chỉ cố định để truy cập từ mạng 192.168.1.0. Và nếu muốn, bạn có thể dành trước 10-20 Mbit cho nó (10 là đủ cho một luồng video 1080).
  • Bạn cần cài đặt và cấu hình pptpd trên máy chủ. Tôi có Ubuntu 18.04 và các bước thực hiện gần như sau (nhà tài trợ là một ví dụ blog.xenot.ru/bystraya-nastrojka-vpn-servera-pptp-na-ubuntu-server-18-04-lts.fuck):
    • Cài đặt các gói cần thiết:
      sudo apt install pptpd iptables-persistent
    • Chúng tôi đưa nó về dạng sau

      /etc/pptpd.conf

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

    • Chúng tôi chỉnh sửa

      /etc/ppp/pptpd-tùy chọn

      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
      
    • Thêm thông tin xác thực vào

      /etc/ppp/chap-bí mật

      # Secrets for authentication using CHAP
      # client	server	secret			IP addresses
      username pptpd password *
    • Thêm vào

      /etc/sysctl.conf

      net.ipv4.ip_forward=1

      và tải lại sysctl

      sudo sysctl -p
    • Khởi động lại pptpd và thêm nó vào khởi động
      sudo service pptpd restart
      sudo systemctl enable pptpd
    • Chúng tôi chỉnh sửa

      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

      Và lưu

      sudo netfilter-persistent save
      sudo netfilter-persistent reload
      
  • Thiết lập TP-LINK 2
    • Chúng tôi dành địa chỉ 192.168.0.200 cho máy ảnh của mình:

      DHCP -> Đặt trước địa chỉ — Địa chỉ MAC — MAC của camera, có thể xem trong DHCP -> Danh sách máy khách DHCP
      — Địa chỉ IP dành riêng — 192.168.0.200

    • Các cổng chuyển tiếp:
      Chuyển hướng -> Máy chủ ảo — Cổng dịch vụ: 49151, Cổng trong: 80, Địa chỉ IP: 192.168.0.200, Giao thức: TCP
      — Cổng dịch vụ: 49152, Cổng trong: 34567, Địa chỉ IP: 192.168.0.200, Giao thức: TCP
      — Cổng dịch vụ: 49153, Cổng trong: 554, Địa chỉ IP: 192.168.0.200, Giao thức: TCP
    • Thiết lập kết nối VPN:

      Mạng -> WAN - Kiểu kết nối WAN: PPTP
      — Tên người dùng: tên người dùng (xem /etc/ppp/chap-secrets)
      — Mật khẩu: mật khẩu (xem /etc/ppp/chap-secrets)
      — Xác nhận mật khẩu: mật khẩu (xem /etc/ppp/chap-secrets)
      - IP động
      — Địa chỉ IP/Tên máy chủ: 169.178.59.82 (rõ ràng là IP bên ngoài của máy chủ của bạn)
      — Chế độ kết nối: Kết nối tự động

    • Tùy chọn, chúng tôi cho phép truy cập từ xa vào mặt web của bộ định tuyến
      Bảo mật -> Quản lý từ xa - Cổng quản lý web: 80
      — Địa chỉ IP quản lý từ xa: 255.255.255.255
    • Khởi động lại bộ định tuyến TP-LINK 2

Thay vì PPTP, bạn có thể sử dụng L2TP hoặc, nếu bạn có chương trình cơ sở tùy chỉnh, thì bất cứ điều gì trái tim bạn mong muốn. Tôi đã chọn PPTP, vì sơ đồ này không được xây dựng vì lý do bảo mật và pptpd, theo kinh nghiệm của tôi, là máy chủ VPN nhanh nhất. Hơn nữa, tôi thực sự không muốn cài đặt chương trình cơ sở tùy chỉnh, điều đó có nghĩa là tôi phải chọn giữa PPTP và L2TP.

Nếu tôi không mắc lỗi ở bất kỳ đâu trong sách hướng dẫn và bạn đã làm mọi thứ một cách chính xác và may mắn, thì sau tất cả những thao tác này

  • trước hết
    ifconfig

    sẽ hiển thị giao diện ppp0 inet 10.0.5.1 netmask 255.255.255.255 destination 10.0.5.100,

  • thứ hai, 10.0.5.100 phải ping,
  • và thứ ba
    ffprobe -rtsp_transport tcp "rtsp://10.0.5.100:49153/user=admin&password=password&channel=1&stream=0.sdp"

    Nên phát hiện luồng.
    Bạn có thể tìm thấy cổng rtsp, thông tin đăng nhập và mật khẩu trong tài liệu dành cho máy ảnh của mình

Kết luận

Về nguyên tắc, điều này không tệ, có quyền truy cập vào RTSP, nếu phần mềm độc quyền hoạt động thông qua DVRIP thì bạn có thể sử dụng nó. Bạn có thể lưu luồng bằng ffmpeg, tăng tốc video 2-3-5 lần, chia video thành nhiều phần dài hàng giờ, tải tất cả lên Google Drive hoặc mạng xã hội, v.v.

Tôi không thích RTSP qua TCP, vì nó hoạt động không ổn định lắm, nhưng qua UDP, vì những lý do mà chúng tôi không thể (hoặc chúng tôi có thể, nhưng tôi không muốn làm điều đó) chuyển tiếp phạm vi cổng qua đó RTSP sẽ đẩy luồng video, nó không hoạt động, tôi đã viết một tập lệnh kéo luồng qua TCP qua DVRIP. Hóa ra là ổn định hơn.

Một trong những ưu điểm của phương pháp này là chúng ta có thể sử dụng thứ gì đó hỗ trợ còi 2G thay cho bộ định tuyến TP-LINK 4, cấp nguồn cho tất cả cùng với camera từ UPS (chắc chắn sẽ cần một cái có công suất nhỏ hơn nhiều so với khi sử dụng máy ghi âm), ngoài ra, bản ghi được truyền gần như ngay lập tức đến máy chủ, vì vậy ngay cả khi những kẻ xâm nhập xâm nhập vào trang web của bạn, chúng sẽ không thể thu được video. Nói chung, có chỗ để cơ động và mọi thứ chỉ phụ thuộc vào trí tưởng tượng của bạn.

Tái bút: Tôi biết rằng nhiều nhà sản xuất cung cấp các giải pháp đám mây làm sẵn, nhưng về giá, chúng đắt gần gấp đôi so với VPS của tôi (trong đó tôi đã có 3 cái, vì vậy tôi cần phân bổ tài nguyên ở đâu đó), cung cấp ít quyền kiểm soát hơn nhiều và cũng chất lượng không đạt yêu cầu lắm.

Nguồn: www.habr.com

Thêm một lời nhận xét