Einführung
Mit der Einführung von Riedels neuer STAGE Plattform bieten wir die Möglichkeit, das neue Virtual SmartPanel für sichere Intercom-Umgebungen im lokalen Bereich (LAN) und im Weitverkehrsbereich (WAN) zu nutzen.
Eine Schlüsselkomponente dieser Architektur ist die WebRTC-Technologie in Verbindung mit der Möglichkeit, User Directories und Identity Provider anzubinden. Um eine sichere, effektive Verbindung über einzelne oder mehrere Firewalls und NAT-Grenzen hinweg aufzubauen, muss die Verwendung von STUN- und/oder TURN-Diensten vorgesehen werden.
Dieser Bereich behandelt die Anwendungsfälle für STUN- und TURN-Dienste und wie diese in der Riedel STAGE-Umgebung implementiert werden können.
Für Geräte wie z.B. Smartphones gilt, dass sie im lokalen Netzwerk funktionieren können, z.B. in einem Wi-Fi-Netzwerk, aber wenn sich aus irgendeinem Grund die Netzwerkverbindung zu der des Mobilfunkanbieters ändert, befindet sich das Smartphone in einem anderen Netzwerk und funktioniert nicht mehr, da seine IP-Adresse anderen Geräten im System nicht bekannt ist und der Streamaufbau neu gestartet werden muss. Wenn ein Smartphone über den Mobilfunkanbieter Zugang zum Internet hat, kann STUN oder TURN erforderlich sein, damit das virtuelle SmartPanel eine Verbindung mit STAGE herstellen kann.
Was versteht man unter STUN?
STUN steht für Session Traversal Utilities for NAT und ist derzeit in RFC 8489 (vorher RFC 3489 & RFC 5389) von der Internet Engineering Task Force (IETF) definiert. Es handelt sich um ein Protokoll zur Ermittlung von Netzwerkadressinformationen über einen Endpunkt hinter einem Network Address Translator (NAT) und/oder einer Firewall.
Einfacher ausgedrückt: STUN hilft Geräten, ihre öffentliche IP-Adresse und Port-Nummer zu ermitteln, auch wenn sie sich hinter einer Firewall oder einem NAT-Router befinden. Diese Informationen sind entscheidend für den Aufbau direkter Peer-to-Peer-Verbindungen.
Wann ist STUN für die Verwendung von Virtual SmartPanel erforderlich?
Das Riedel Virtual SmartPanel nutzt WebRTC für die Echtzeit-Audiokommunikation zwischen der Anwendung und dem WebRTC Gateway Server.
STUN ist essentiell für WebRTC, wenn sich Peers hinter verschiedenen NATs befinden, was fast immer der Fall ist, es sei denn, beide Clients befinden sich im selben lokalen Netzwerk (LAN).
NAT (Network Address Translation): Viele Heim- und kleine Büronetzwerke verwenden NAT, um eine einzige öffentliche IP-Adresse für mehrere Geräte freizugeben. Dies kann die direkte Kommunikation zwischen den Geräten erschweren.
WebRTC: Eine Technologie für die Peer-to-Peer-Kommunikation in Echtzeit, die häufig zur Übertragung von Audio-/Videodaten zwischen zwei Endpunkten verwendet wird. WebRTC beruht in erster Linie darauf, dass die Geräte in einer 1:1-Beziehung direkt miteinander verbunden werden, wofür sie die IP-Adressen der anderen kennen müssen.
Die Rolle von STUN
Discover Public IP: STUN hilft Geräten, ihre öffentliche IP-Adresse und Port-Nummer zu ermitteln.
NAT Traversal: Wenn die Geräte ihre öffentlichen Adressen kennen, können sie versuchen, eine direkte Verbindung miteinander herzustellen.
ICE (Interactive Connectivity Establishment): STUN ist eine Schlüsselkomponente von ICE, einem Framework, das verschiedene Verbindungsmöglichkeiten ausprobiert, um den besten Weg für die Kommunikation zwischen zwei Peers zu finden.
Zusammengefasst ist STUN für virtuelle SmartPanel-Verbindungen nicht immer zwingend erforderlich, wenn sich alle Clients im selben Netzwerk befinden und kein NAT in den Audiopfad involviert ist, aber es verbessert die Chancen für den Aufbau einer direkten Peer-to-Peer-Verbindung erheblich, insbesondere in komplexen Netzwerkumgebungen.
Zusätzliche Erwägungen
Bei Geräten wie Smartphones können diese zwar im lokalen Netz, z. B. einem Wi-Fi-Netz, funktionieren, aber wenn sich aus irgendeinem Grund die Netzverbindung zu der des Mobilfunkanbieters ändert, befindet sich das Gerät in einem anderen Netz und funktioniert nicht mehr, da seine IP-Adresse anderen Geräten im System nicht bekannt ist und der Streamaufbau neu gestartet werden muss.
STUN ist zwar hilfreich, reicht aber möglicherweise nicht immer aus. In Fällen, in denen NAT-Traversal nicht möglich ist, kann ein TURN-Server als Relais für Daten verwendet werden.
Was versteht man unter TURN?
TURN steht für Traversal Using Relays around NAT. Es ist ein Protokoll, das in WebRTC verwendet wird, um einen Kommunikationskanal zwischen zwei Peers aufzubauen, wenn eine direkte Verbindung aufgrund von Netzwerkbeschränkungen, wie Firewalls oder NAT (Network Address Translation), nicht möglich ist.
Einfacher ausgedrückt: TURN ist eine Relaisstation für WebRTC.
Wann ist TURN für die Nutzung von Virtual SmartPanel erforderlich?
Obwohl dies nicht immer notwendig ist, wird TURN in den folgenden Szenarien wichtig:
Strict Firewalls: Wenn sich beide Peers hinter strengen Firewalls befinden, die eingehende Verbindungen blockieren, kann TURN Daten zwischen ihnen weiterleiten.
Symmetric NAT: Diese Art von NAT erschwert den Peers den Aufbau direkter Verbindungen, so dass oft TURN erforderlich ist. Dies ist häufig der Fall, wenn sich beide Peers hinter einem strengen NAT befinden und keine Ports zwischen Inside/Outside zuordnen können.
Mobile Networks: Mobile Netzwerke haben oft dynamische IP-Adressen und komplexe NAT-Konfigurationen, was TURN zu einer viel zuverlässigeren Option macht.
Unfavorable Network Conditions: In Fällen von Netzüberlastung oder Paketverlusten kann TURN eine stabilere Verbindung bereitstellen.
Wie funktioniert TURN?
TURN arbeitet als Relay-Server. Er empfängt Daten von einem Peer (Endgerät), speichert sie zwischen und leitet sie dann an den anderen Peer weiter. Dieser indirekte Kommunikationsweg stellt sicher, dass Daten auch dann ausgetauscht werden können, wenn direkte Peer-to-Peer-Verbindungen gestört sind.
Wichtiger Hinweis: TURN ist zwar ein wertvolles Hilfsmittel, aber aufgrund der zusätzlichen Latenzzeit, die durch den Relay-Server entsteht, im Allgemeinen weniger effizient als direkte Peer-to-Peer-Verbindungen. Daher wird empfohlen, direkten Verbindungen mit Protokollen wie STUN den Vorzug zu geben, bevor auf TURN zurückgegriffen wird.
Zusammengefasst ist TURN eine wichtige Komponente in WebRTC, um Netzwerkprobleme zu überwinden und eine zuverlässige Kommunikation zwischen Peers zu gewährleisten. Bei der Entscheidung, ob TURN in Ihrer WebRTC-Anwendung implementiert werden soll, ist es jedoch wichtig, die Kompromisse zwischen Leistung und Zuverlässigkeit zu berücksichtigen.
Einrichtung und Konfiguration von STUN innerhalb der Riedel STAGE
Das Einrichten eines STUN-Dienstes für die Verwendung mit Riedel STAGE und dem Virtual SmartPanel ist unkompliziert. Alles, was Sie benötigen, ist die öffentlich verfügbare STUN-URL, die Sie dann in den entsprechenden Teil der STAGE-Konfigurationsoberfläche einfügen.
Kostenlose STUN-Dienste
Um die Bereitstellung zu vereinfachen, finden Sie unten eine Liste gängiger, frei zugänglicher STUN-Dienste, die der Riedel STAGE-Konfiguration hinzugefügt werden können, um die STUN-Anforderungen des Systems zu erfüllen.
Alle Ports sind unten als [FQDN]:[Port] aufgeführt. Bitte beachten Sie, dass DNS konfiguriert sein muss, um diese Adressen aufzulösen. Stellen Sie für den WebRTC-Server sicher, dass dieser unter System Commissioning > Configuration für die jeweiligen Geräte konfiguriert ist. Weitere Informationen hierzu finden Sie im Kapitel Configuration. Die Auflösung der Adresse erfolgt durch das Gerät, das die Kommunikation mit dem Dienst startet. In diesem Fall das WebRTC-Gateway und das Gerät, das die Virtual SmartPanel App selbst hostet.
Die Riedel STAGE-Konfiguration akzeptiert auch die Standard-[IPv4-Adresse]:[Port] für die STUN-Konfiguration, wenn Sie statische Adressen für STUN-Server verwenden möchten.
Kostenfreie Google STUN-Server
-
stun.l.google.com:19302
-
stun1.l.google.com:19302
-
stun2.l.google.com:19302
-
stun3.l.google.com:19302
-
stun4.l.google.com:19302
Kostenfreie Cloudflare STUN-Server
-
stun.cloudflare.com:3478
Eine weitere Liste von frei verfügbaren STUN-Servern finden Sie hier
Es gibt viele andere öffentliche (oder private) STUN-Dienste, die oben nicht aufgelistet sind und die mit Riedel STAGE und dem Virtual SmartPanel genutzt werden können, wenn Sie einen bestimmten Dienst bevorzugen, den sie nutzen möchten.
Hinzufügen des ausgewählten STUN-Dienstes zur Riedel STAGE
-
Melden Sie sich an der Riedel STAGE als Benutzer an, dessen Zugriffsrechte auf System Administrator oder Technical Administrator eingestellt sind. Siehe Kapitel Start & Login und Users.
-
Navigieren Sie entweder über das Dashboard oder das Einblendmenü auf der linken Seite des Bildschirms zur System Management. Siehe Kapitel Menü.
-
Gehen Sie zum Tab Virtual SmartPanel Settings im oberen Teil des Fensters.
-
Wählen Sie den Tab STUN.
-
Klicken Sie auf die Schaltfläche Add, um der Liste einen STUN-Eintrag hinzuzufügen.
Failed to load the diagram preview image.
Authentication Required
Page ID: 895190718
|
URL |
Geben Sie die URL/IP für den STUN-Dienst in folgendem Format ein:
|
-
Klicken Sie auf Save.
Der STUN-Eintrag wurde nun in das Riedel STAGE System aufgenommen und steht zur Nutzung bereit.
Zusätzliche Erwägungen
Beim Hinzufügen von STUN / TURN-Diensten zu Riedel STAGE können Sie einen oder mehrere STUN / TURN-Dienste zu Ihrem System hinzufügen, um die Ausfallsicherheit im Falle eines Ausfalls eines oder mehrerer konfigurierter Dienste zu erhöhen.
Einrichtung und Konfiguration von TURN in Riedel STAGE
Das Einrichten eines TURN-Dienstes für die Nutzung mit Riedel STAGE und dem Virtual SmartPanel ist unkompliziert. Alles, was Sie brauchen, ist ein TURN-Dienst, der entweder von Ihnen erstellt wurde oder ein privater, kostenpflichtiger Dienst ist. Dieser Dienst wird mit einer TURN-URL geliefert, die Sie dann in den entsprechenden Teil der STAGE-Konfigurationsoberfläche einfügen.
Hinweis: Riedel gibt nur Richtlinien für die empfohlene Implementierung des Coturn-Dienstes wie unten beschrieben. Es liegt in der Verantwortung des Anwenders, den Dienst einzurichten, zu unterstützen, zu aktualisieren und Probleme mit der Implementierung zu diagnostizieren.
Installieren eines TURN-Servers
Obwohl Riedel keinen TURN-Dienst erstellt oder vertreibt, haben wir einen Beispiel-Installationsprozess für eine häufig verwendete Open-Source-TURN-Ressource namens Coturn bereitgestellt.
Es ist auf GitHub hier verfügbar: GitHub - coturn/coturn: coturn TURN server project
Die folgende Beispielkonfiguration bietet eine grundlegende Anleitung für die Installation von Coturn über Docker auf einem Ubuntu 22.04-Rechner.
Installation von COTURN über Docker auf Ubuntu Server 22.04 LTS (Jammy Jellyfish)
Voraussetzungen
-
Ein Server mit ausreichenden Ressourcen (CPU, RAM, Netzwerk).
-
Root- oder sudo-Zugriff auf den Server (sobald Ubuntu Server 22.04 installiert ist)
-
Grundlegende Kenntnisse der Linux-Kommandozeile und von Docker.
Schritt-für-Schritt-Installation
Schritt 1: Ubuntu Server 22.04 Server-Betriebssystem installieren
Beziehen Sie das Ubuntu 22.04 Server-Installationsimage von der offiziellen Ubuntu-Website.
-
Weitere Informationen finden Sie hier: Ubuntu 22.04.5 LTS (Jammy Jellyfish)
Erstellen Sie ein bootfähiges USB-Laufwerk oder eine DVD mit einem Tool wie Rufus oder Etcher.
-
Rufus kann hier gefunden werden: Rufus - Create bootable USB drives the easy way
-
Etcher kann hier gefunden werden: balenaEtcher - Flash OS images to SD cards & USB drives
Starten Sie Ihren Server vom Installationsmedium und folgen Sie den Anweisungen auf dem Bildschirm, um Ubuntu zu installieren.
-
Weitere Informationen finden Sie hier: Basic installation - Ubuntu Server documentation
Schritt 2: Aktualisierung und Upgrade des Betriebssystems
Sobald die Installation abgeschlossen ist, melden Sie sich als root oder als Benutzer mit sudo-Rechten an.
Aktualisieren Sie die Paketlisten und aktualisieren Sie das System:
sudo apt update && sudo apt upgrade -y
Schritt 3: Docker installieren
Folgen Sie den offiziellen Anweisungen von Docker, die hier unter „Installation mit dem apt-Repository“ aufgeführt sind.
Befolgen Sie die “linux postinstall“-Anweisungen, um nicht privilegierten Benutzern die Ausführung von Docker-Befehlen zu ermöglichen und Docker beim Systemstart/Neustart zu starten.
Schritt 4: Herunterladen (Pull) des neuesten coturn-Docker-Images
docker pull coturn/coturn
Schritt 5: Folgen Sie der offiziellen Anleitung, um Ihr coturn-Docker-Image zu konfigurieren und auszuführen
coturn/docker/coturn/README.md at master · coturn/coturn · GitHub
Zusätzliche Erwägungen
Performance: Passen Sie die Container-Ressourcen (CPU, Arbeitsspeicher) entsprechend Ihrer Auslastung an.
Monitoring: Verwenden Sie Docker-Tools, um die Ressourcennutzung und den Zustand des Containers zu überwachen.
Redundancy: Erstellen Sie zusätzliche COTURN-Instanzen auf alternativen Servern und fügen Sie diese zu Riedel STAGE für zusätzliche COTURN-Redundanz hinzu.
Hinweis: Diese Anleitung enthält eine grundlegende Installation. Für fortgeschrittene Konfigurationen und Fehlerbehebung lesen Sie bitte die offizielle COTURN- und Docker-Dokumentation.
Wenn Sie diese Schritte befolgen, sollten Sie einen COTURN-Server in einem Docker-Container auf Ihrem Ubuntu Server 22.04 LTS-System laufen haben.
Hinzufügen eines TURN-Dienstes zu Riedel STAGE
-
Melden Sie sich an der Riedel STAGE als Benutzer an, dessen Zugriffsrechte auf System Administrator oder Technical Administrator eingestellt sind. Siehe Kapitel Start & Login und Users.
-
Navigieren Sie entweder über das Dashboard oder das Einblendmenü auf der linken Seite des Bildschirms zur System Management. Siehe Kapitel Menü.
-
Gehen Sie zum Tab Virtual SmartPanel Settings im oberen Teil des Fensters.
-
Wählen Sie den Tab TURN.
-
Klicken Sie auf die Schaltfläche Add, um der Liste einen TURN-Eintrag hinzuzufügen.
Failed to load the diagram preview image.
Authentication Required
Page ID: 895190718
|
URL |
Legen Sie die URL/IP für den TURN-Dienst in folgendem Format fest:
Achten Sie darauf, dass |
|
Username |
Optional: Legen Sie den erforderlichen Benutzernamen und das Passwort für den TURN-Dienst fest. |
|
Password |
-
Klicken Sie auf Save.
Der TURN-Eintrag wurde nun in das Riedel STAGE System aufgenommen und steht zur Nutzung bereit.
Zusätzliche Erwägung
Wenn Sie diese Dienste zu Riedel STAGE hinzufügen, können Sie einen oder mehrere TURN-Dienste zu Ihrem System hinzufügen, um die Ausfallsicherheit im Falle eines Ausfalls der konfigurierten Dienste zu erhöhen.
Anhang
NAT-Varianten (aus RFC3489, Bereich 5)
In diesem Bereich wird davon ausgegangen, dass Sie mit NATs vertraut sind. Die Art und Weise, wie ein NAT mit UDP-Paketen umgeht, kann je nach den verschiedenen unten aufgeführten möglichen technischen Implementierungen variieren. Folglich muss die Methode zum Tunneln von Paketen durch ein NAT entsprechend angepasst werden.
Full Cone
Bei einem Full Cone NAT werden alle Anfragen von derselben internen IP-Adresse und demselben Port auf dieselbe externe IP-Adresse und denselben Port abgebildet. Außerdem kann jeder externe Host ein Paket an den internen Host senden, indem er ein Paket an die zugeordnete externe Adresse sendet.
Restricted Cone
Bei einem restricted cone NAT werden alle Anfragen von derselben internen IP-Adresse und demselben Port auf dieselbe externe IP-Adresse und denselben Port abgebildet. Im Gegensatz zu einem Full-Cone-NAT kann ein externer Host (mit IP-Adresse X) nur dann ein Paket an den internen Host senden, wenn der interne Host zuvor ein Paket an die IP-Adresse X gesendet hat.
Port Restricted Cone
Ein portbeschränktes cone NAT ist wie ein beschränktes cone NAT, aber die Beschränkung umfasst Portnummern. Konkret kann ein externer Host ein Paket mit der Quell-IP-Adresse X und dem Quell-Port P nur dann an den internen Host senden, wenn der interne Host zuvor ein Paket an die IP-Adresse X und den Port P gesendet hat.
Symmetric
Bei einem symmetrischen NAT werden alle Anfragen von derselben internen IP-Adresse und demselben Port an eine bestimmte Ziel-IP-Adresse und einen Port auf dieselbe externe IP-Adresse und denselben Port abgebildet. Wenn derselbe Host ein Paket mit derselben Quelladresse und demselben Port sendet, aber an ein anderes Ziel, wird eine andere Zuordnung verwendet. Außerdem kann nur der externe Host, der ein Paket empfängt, ein UDP-Paket an den internen Host zurücksenden.
Visuelle Übersicht über mögliche Szenarien mit der anwendbaren STUN / TURN- Counter-Measure-Option
|
NAT |
FULL CONE |
RESTRICTED CONE |
PORT RESTRICTED CONE |
SYMMETRIC |
|
FULL CONE |
STUN |
STUN |
STUN |
STUN |
|
RESTRICTED CONE |
STUN |
STUN |
STUN |
STUN |
|
PORT RESTRICTED CONE |
STUN |
STUN |
STUN |
TURN |
|
SYMMETRIC |
STUN |
STUN |
TURN |
TURN |
Weitere Informationen
RFC 3489 - STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) (ietf.org) (Original RFC)
RFC 5389 - Session Traversal Utilities for NAT (STUN) (ietf.org) (Intermediate RFC)
RFC 8489 - Session Traversal Utilities for NAT (STUN) (ietf.org) (Latest RFC)