Otvoríte jeden port kamery, namierite naň prehrávač a predpokladáte, že problém s internetom je vyriešený. Potom ho telefón nedokáže prehrať, prehliadač ho nedokáže prehrať a administračná stránka kamery je od verejnej hrany vzdialená len jednu zle napísanú cestu. Zvolený model doručovania, RTSP alebo HLS, rozhoduje o väčšine toho skôr, než je napísané jediné pravidlo firewallu. VPN dodáva len súkromný úsek.

VPN opravuje cestu zdroja, nie cestu diváka

VPS pripojený k sieti LAN kamery tunelom dokáže kamery dosiahnuť na jej súkromnej adrese, a to je naozaj užitočné. Znamená to, že kamera nepotrebuje vlastný prichádzajúci port a domáci router zostáva zavretý. Nehovorí vám to, akou rečou bude divák hovoriť. Prehrávač na počítači, prehliadač, telefón a smart televízor podporujú rôzne protokoly a každý má svoje očakávania ohľadom TLS, overovania a kodekov.

Tu je predpoklad, ktorý stojí za to zahodiť: publikovanie by vraj znamenalo sprístupniť zdroj. Publikovanie v skutočnosti znamená dať definovanému publiku podporovaný spôsob konzumácie média. Publikovaný prúd má formát, publikum a prihlasovací údaj; dostupná kamera nemá nič z toho. Dostupnosť je tá časť, ktorú tunel rieši, a vstupný bod diváka je tá časť, ktorú ešte musíte navrhnúť.

RTSP je vyjednávanie, nie jediný port

RTSP nesie riadenie relácie: klient požiada o popis, nastaví jednu alebo viac mediálnych stôp a potom prehráva. Preprava samotného média sa vyjednáva počas tohto nastavenia, a preto protokol nie je dobre opísaný jediným preposielaným portom TCP. To vyjednávanie je časť, ktorú ľudia prehliadajú, keď porovnávajú pravidlá firewallu.

V závislosti od koncových bodov môže RTP prichádzať na samostatných portoch UDP alebo byť prekladané v riadiacom spojení. Relay, ktorý preposiela len 554 a predpokladá, že zvyšok bude fungovať, zvyčajne vytvorí reláciu, ktorá sa pripojí, ohlási stopu a potom nič nezobrazí. Skontrolujte prepravu, ktorú vaša kamera skutočne vyjednáva, skôr než pre ňu napíšete pravidlá. Zachytenie na súkromnej strane to zodpovie za minútu a hádanie stojí večer.

Pre malé, známe publikum s kompatibilnými prehrávačmi môže byť zámerne nakonfigurovaný relay RTSP správnou odpoveďou. Obmedzte, z ktorého zdroja smie ťahať, a vyžadujte overovanie na relayi. Zapíšte si prehrávače, ktoré ste testovali, pretože prúd RTSP, ktorý funguje vo VLC, môže v prehliadači stále zlyhať.

HLS je zoznam skladieb plus zdroje

Divák HLS stiahne zoznam skladieb a potom stiahne mediálne segmenty, ktoré tento zoznam pomenúva. Špecifikácia HLS definuje tento model zdrojov a dôležitý prevádzkový detail je, že zoznamy skladieb odkazujú na iné URL. Relatívne odkazy sa vyhodnocujú voči umiestneniu zoznamu, takže proxy, ktorá prepisuje cesty, ich musí prepisovať konzistentne.

Ak kamera už poskytuje použiteľný HLS, verejný frontend môže tieto požiadavky na zoznam a segmenty preposielať tunelom. Sledujte kľúče, presmerovania a URL, ktoré aplikácia generuje. Akákoľvek absolútna URL ukazujúca na súkromného hostiteľa sa rozbije vo chvíli, keď ju divák mimo siete LAN nasleduje. Relatívne cesty sú tie, ktoré prežijú prepis proxy, preto im dávajte prednosť všade, kde riadite generovaný výstup.

Ak kamera hovorí len RTSP, niečo musí previesť zdroj do formátu diváka. Prebalovanie a transkódovanie sú rôzne úlohy: prebalovanie zachováva kodek, zatiaľ čo transkódovanie ho znova kóduje kvôli kompatibilite, a len to druhé stojí vážne procesorový čas. Ani jedno sa nestane nutným len preto, že je v ceste VPN.

Naplánujte odchádzajúcu linku podľa toho, kde dochádza k distribúcii. Jeden súkromný príjem napájajúci verejnú mediálnu službu sa správa veľmi odlišne od každého diváka, ktorý si ťahá vlastný prúd tunelom. Druhý vzor zvyčajne končí na zahltenom domácom pripojení a kamere, ktorá vyzerá, že náhodne zlyháva.

Umiestnite overovanie na hranu, ktorú publikujete

TLS, overovanie divákov a protokolovanie prístupu patria na verejný vstupný bod, nie na kameru. To drží prihlasovacie údaje kamery oddelené od údajov prúdu. Dáva vám to aj jedno miesto na odvolanie prístupu, keď člen publika odíde. Umiestnenie týchto kontrol na kameru namiesto toho znamená, že každá zmena publika sa stane administratívnou zmenou pri zariadení, ktoré by nikdy nemalo byť verejne dostupné.

Držte VPN a administračné oprávnenia kamery oddelené od publikačnej cesty. VPS, ktorý dokáže dosiahnuť webové rozhranie kamery, aby stiahol prúd, by nemal byť aj strojom vystavujúcim toto rozhranie. Publikum by sa nikdy nemalo dozvedieť adresu kamery.

Potom overte oba konce, ktoré ste skutočne postavili, namiesto toho, aby ste predpokladali, že reťaz funguje:

$ ffprobe -v error -rtsp_transport tcp rtsp://10.50.0.9:554/stream1
$ curl -sI https://stream.example.net/live/index.m3u8
HTTP/2 200
content-type: application/vnd.apple.mpegurl

Úspešné otestovanie súkromného zdroja a úspešné stiahnutie zoznamu na verejnej hrane dokazujú rôzne polovice návrhu. Testujte ich oddelene. Prehrávanie z rovnakého typu klienta, ktorý používa vaše publikum, je jediný test pokrývajúci celý reťaz.

Čo nakoniec máte, je reťaz s účelom v každom článku: súkromný zdroj, obmedzený príjem, zvolené balenie, autorizovaný vstup diváka. Žiadny z tých článkov nie je voliteľný a žiadny nevzniká otvorením portu.

Súvisiace články