Sie geben einen Kameraport frei, richten einen Player darauf und nehmen an, das Internetproblem sei damit gelöst. Dann kann ein Telefon ihn nicht abspielen, ein Browser kann ihn nicht abspielen, und die Administrationsseite der Kamera liegt nur einen falsch getippten Pfad von der öffentlichen Edge entfernt. Das Übertragungsmodell, für das Sie sich entschieden haben, RTSP oder HLS, bestimmt das meiste davon, bevor irgendeine Firewall-Regel geschrieben wird. Das VPN liefert nur das private Teilstück.

Das VPN repariert den Quellpfad, nicht den Betrachterpfad

Ein VPS, der über einen Tunnel mit dem Kamera-LAN verbunden ist, kann die Kamera unter ihrer privaten Adresse erreichen, und das ist wirklich nützlich. Es bedeutet, dass die Kamera keinen eigenen eingehenden Port braucht und der Heimrouter geschlossen bleibt. Es sagt Ihnen aber nicht, welche Sprache ein Betrachter spricht. Ein Desktop-Player, ein Browser, ein Telefon und ein Smart-TV unterstützen unterschiedliche Protokolle, und jedes hat eigene Erwartungen an TLS, Authentifizierung und Codecs.

Hier ist die Annahme, die man verwerfen sollte: Veröffentlichen bedeute, die Quelle erreichbar zu machen. Veröffentlichen bedeutet tatsächlich, einem definierten Publikum einen unterstützten Weg zu geben, die Medien zu konsumieren. Ein veröffentlichter Stream hat ein Format, ein Publikum und ein Zugangsmerkmal; eine erreichbare Kamera hat nichts davon. Erreichbarkeit ist der Teil, den der Tunnel löst, und der Einstiegspunkt für den Betrachter ist der Teil, den Sie noch entwerfen müssen.

RTSP ist eine Aushandlung, kein einzelner Port

RTSP trägt die Sitzungssteuerung: Ein Client fragt eine Beschreibung an, richtet eine oder mehrere Medienspuren ein und spielt dann ab. Der Transport für die Medien selbst wird während dieser Einrichtung ausgehandelt, weshalb das Protokoll durch einen einzelnen weitergeleiteten TCP-Port schlecht beschrieben ist. Diese Aushandlung ist der Teil, den Leute übersehen, wenn sie Firewall-Regeln vergleichen.

Je nach den Endpunkten kann RTP auf separaten UDP-Ports ankommen oder auf der Steuerverbindung verschachtelt sein. Ein Relay, das nur 554 weiterleitet und annimmt, der Rest werde schon funktionieren, erzeugt meist eine Sitzung, die sich verbindet, eine Spur meldet und dann nichts zeigt. Prüfen Sie den Transport, den Ihre Kamera tatsächlich aushandelt, bevor Sie Regeln dafür schreiben. Ein Mitschnitt auf der privaten Seite beantwortet das in einer Minute, und Raten kostet einen Abend.

Für ein kleines, bekanntes Publikum mit kompatiblen Playern kann ein bewusst konfiguriertes RTSP-Relay die richtige Antwort sein. Legen Sie fest, welche Quelle es ziehen darf, und verlangen Sie Authentifizierung am Relay. Notieren Sie die Player, die Sie getestet haben, denn ein RTSP-Stream, der in VLC läuft, kann in einem Browser trotzdem scheitern.

HLS ist eine Playlist plus Ressourcen

Ein HLS-Betrachter holt eine Playlist und dann die Mediensegmente, die diese Playlist benennt. Die HLS-Spezifikation definiert dieses Ressourcenmodell, und das wichtige operative Detail ist, dass Playlists auf andere URLs verweisen. Relative Verweise werden gegen den Ort der Playlist aufgelöst, also muss ein Proxy, der Pfade umschreibt, sie konsistent umschreiben.

Wenn die Kamera bereits nutzbares HLS liefert, kann ein öffentliches Frontend diese Playlist- und Segmentanfragen über den Tunnel weiterleiten. Achten Sie auf Schlüssel, Weiterleitungen und URLs, die die Anwendung erzeugt. Jede absolute URL, die auf einen privaten Host zeigt, bricht in dem Moment, in dem ein Betrachter außerhalb des LANs ihr folgt. Relative Pfade sind die, die ein Umschreiben durch den Proxy überstehen, also bevorzugen Sie sie, wo immer Sie die erzeugte Ausgabe kontrollieren.

Spricht die Kamera nur RTSP, muss etwas die Quelle in das Betrachterformat umwandeln. Neuverpackung und Transkodierung sind verschiedene Aufgaben: Neuverpackung erhält den Codec, während Transkodierung ihn zur Kompatibilität neu kodiert, und nur die zweite kostet ernsthaft CPU. Keines von beiden wird allein dadurch nötig, dass ein VPN im Pfad liegt.

Planen Sie den Uplink danach, wo die Verteilung stattfindet. Ein privater Ingest, der einen öffentlichen Mediendienst speist, verhält sich ganz anders als jeder Betrachter, der seinen eigenen Stream durch den Tunnel zieht. Das zweite Muster endet meist in einer gesättigten Heimverbindung und einer Kamera, die scheinbar zufällig ausfällt.

Setzen Sie die Authentifizierung an die Edge, die Sie veröffentlichen

TLS, Betrachterauthentifizierung und Zugriffsprotokollierung gehören an den öffentlichen Einstiegspunkt, nicht an die Kamera. Das hält die Zugangsdaten für die Kamera getrennt von den Zugangsdaten für den Stream. Es gibt Ihnen außerdem eine Stelle, an der Sie den Zugang widerrufen, wenn ein Zuschauer geht. Diese Kontrollen stattdessen auf die Kamera zu legen bedeutet, dass jede Publikumsänderung zu einer administrativen Änderung an einem Gerät wird, das überhaupt nie öffentlich erreichbar sein sollte.

Halten Sie das VPN und die Verwaltungsrechte der Kamera getrennt vom Veröffentlichungspfad. Ein VPS, der die Weboberfläche der Kamera erreichen kann, um einen Stream zu ziehen, sollte nicht auch die Maschine sein, die diese Oberfläche exponiert. Das Publikum sollte die Adresse der Kamera nie erfahren.

Prüfen Sie dann die beiden Enden, die Sie tatsächlich gebaut haben, statt anzunehmen, dass die Kette funktioniert:

$ 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

Eine erfolgreiche Prüfung der privaten Quelle und ein erfolgreicher Playlist-Abruf an der öffentlichen Edge beweisen unterschiedliche Hälften des Entwurfs. Testen Sie sie getrennt. Die Wiedergabe von derselben Art von Client, die Ihr Publikum verwendet, ist der einzige Test, der die ganze Kette abdeckt.

Am Ende steht eine Kette mit einem Zweck an jedem Glied: private Quelle, eingeschränkter Ingest, gewählte Verpackung, autorisierter Betrachtereintritt. Keines dieser Glieder ist optional, und keines entsteht durch das Öffnen eines Ports.

Ähnliche Artikel