Otvorite jedan port kamere, usmjerite reproduktor na njega i pretpostavite da je internetski problem riješen. Zatim ga telefon ne može reproducirati, preglednik ga ne može reproducirati, a administratorska stranica kamere udaljena je samo jednu pogrešno upisanu stazu od javnog ruba. Odabrani model dostave, RTSP ili HLS, odlučuje o većini toga prije nego što je napisano ijedno pravilo vatrozida. VPN osigurava samo privatni dio.

VPN popravlja put izvora, ne put gledatelja

VPS povezan s LAN-om kamere putem tunela može dosegnuti kameru na njezinoj privatnoj adresi, i to je doista korisno. To znači da kamera ne treba vlastiti ulazni port i da usmjerivač u domu ostaje zatvoren. To vam ne kaže kojim će jezikom govoriti gledatelj. Stolni reproduktor, preglednik, telefon i pametni televizor podržavaju različite protokole, a svaki ima vlastita očekivanja o TLS-u, autentifikaciji i kodecima.

Evo pretpostavke koju vrijedi odbaciti: objavljivanje bi značilo učiniti izvor dostupnim. Objavljivanje zapravo znači dati definiranom gledateljstvu podržan način konzumiranja medija. Objavljeni tok ima format, gledateljstvo i vjerodajnicu; dostupna kamera nema ništa od toga. Dostupnost je dio koji tunel rješava, a ulazna točka gledatelja dio je koji tek trebate osmisliti.

RTSP je pregovaranje, a ne jedan port

RTSP nosi kontrolu sesije: klijent zatraži opis, postavi jednu ili više medijskih staza i zatim reproducira. Prijenos samog medija pregovara se tijekom tog postavljanja, zbog čega protokol nije dobro opisan jednim proslijeđenim TCP portom. To pregovaranje je dio koji ljudi propuštaju kada uspoređuju pravila vatrozida.

Ovisno o krajnjim točkama, RTP može stizati na zasebnim UDP portovima ili biti isprepleten na kontrolnoj vezi. Posrednik koji prosljeđuje samo 554 i pretpostavlja da će ostatak raditi obično stvara sesiju koja se poveže, prijavi stazu i zatim ne pokaže ništa. Provjerite prijenos o kojem vaša kamera stvarno pregovara prije nego što za njega napišete pravila. Snimanje na privatnoj strani to odgovara u minuti, a pogađanje košta večer.

Za malo, poznato gledateljstvo s kompatibilnim reproduktorima namjerno konfiguriran RTSP posrednik može biti pravi odgovor. Ograničite iz kojeg izvora smije povlačiti i zahtijevajte autentifikaciju na posredniku. Zapišite reproduktore koje ste testirali, jer tok RTSP koji radi u VLC-u može ipak zakazati u pregledniku.

HLS je popis za reprodukciju plus resursi

Gledatelj HLS-a dohvaća popis za reprodukciju, a zatim dohvaća medijske segmente koje taj popis imenuje. Specifikacija HLS definira taj model resursa, a važna operativna pojedinost je da popisi za reprodukciju upućuju na druge URL-ove. Relativne reference razrješavaju se u odnosu na lokaciju popisa, pa proxy koji prepisuje staze mora ih prepisivati dosljedno.

Ako kamera već poslužuje upotrebljiv HLS, javni frontend može prosljeđivati te zahtjeve za popisom i segmentima kroz tunel. Pazite na ključeve, preusmjeravanja i URL-ove koje generira aplikacija. Svaki apsolutni URL koji upućuje na privatnog hosta slomi se u trenutku kada ga gledatelj izvan LAN-a slijedi. Relativne staze su one koje preživljavaju prepisivanje proxyja, pa im dajte prednost gdje god kontrolirate generirani izlaz.

Ako kamera govori samo RTSP, nešto mora pretvoriti izvor u format gledatelja. Prepakiranje i transkodiranje različiti su poslovi: prepakiranje čuva kodek, dok ga transkodiranje ponovno kodira radi kompatibilnosti, i samo drugo košta ozbiljan procesorski rad. Ni jedno ne postaje nužno samo zato što je VPN na putu.

Planirajte uzlaznu vezu prema tome gdje se događa distribucija. Jedan privatni unos koji napaja javnu medijsku uslugu ponaša se posve drugačije od svakog gledatelja koji vuče vlastiti tok kroz tunel. Drugi uzorak obično završava u zasićenoj kućnoj vezi i kameri koja izgleda da nasumce zakaže.

Stavite autentifikaciju na rub koji objavljujete

TLS, autentifikacija gledatelja i bilježenje pristupa pripadaju javnoj ulaznoj točki, a ne kameri. To drži vjerodajnice kamere odvojenima od vjerodajnica toka. Daje vam i jedno mjesto za opoziv pristupa kada član gledateljstva ode. Stavljanje tih kontrola na kameru umjesto toga znači da svaka promjena gledateljstva postaje administrativna promjena na uređaju koji nikada ne bi smio biti javno dostupan.

Držite VPN i administratorske ovlasti kamere odvojeno od puta objavljivanja. VPS koji može dosegnuti web sučelje kamere radi povlačenja toka ne bi trebao biti i stroj koji to sučelje izlaže. Gledateljstvo nikada ne bi smjelo saznati adresu kamere.

Zatim provjerite dva kraja koja ste stvarno izgradili umjesto da pretpostavljate da lanac radi:

$ 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

Uspješna provjera privatnog izvora i uspješno dohvaćanje popisa na javnom rubu dokazuju različite polovice dizajna. Testirajte ih odvojeno. Reprodukcija s iste vrste klijenta koju koristi vaše gledateljstvo jedini je test koji pokriva cijeli lanac.

Ono što na kraju imate je lanac sa svrhom u svakoj karici: privatni izvor, ograničen unos, odabrano pakiranje, ovlašteni ulaz gledatelja. Nijedna od tih karika nije neobavezna i nijedna ne nastaje otvaranjem porta.

Povezani članci