Delphi STUN Server

Betreibe deinen eigenen STUN-Server (RFC 8489) in Delphi. Beantworte Binding-Requests mit der kanonischen XOR-MAPPED-ADDRESS-Antwort — nützlich in privaten Netzwerken, On-Premise-Deployments und beim ICE-Bootstrap.

TsgcSTUNServer

Ein typisierter RFC-8489-STUN-Server — verarbeitet Binding-/Indication-Nachrichten, antwortet mit XOR-MAPPED-ADDRESS und erzwingt optional MESSAGE-INTEGRITY für Long-Term-Authentifizierung.

Komponentenklasse

TsgcSTUNServer

Protokoll

STUN (RFC 8489)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Professional / Enterprise

Platzieren, Port setzen, fertig ist dein STUN-Endpunkt

Setze Port (Standard 3478), Active := True — dein Server beantwortet jetzt Binding-Requests mit der kanonischen RFC-8489-XOR-MAPPED-ADDRESS-Antwort.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormSTUNServer enthält FServer: TsgcSTUNServer und den Handler

procedure TFormSTUNServer.StartServer;
begin
  FServer := TsgcSTUNServer.Create(nil);
  FServer.Port := 3478;

  // optional: Long-Term-Credentials
  FServer.STUNOptions.Authentication.Enabled := True;
  FServer.STUNOptions.Authentication.LongTermCredentials.Enabled := True;
  FServer.STUNOptions.Authentication.LongTermCredentials.Realm :=
    'example.com';

  FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;

  FServer.Active := True;
end;

procedure TFormSTUNServer.OnSTUNRequestAuthorization(Sender: TObject;
  const aRequest: TsgcSTUN_Message;
  const aUsername, aRealm: string;
  var Password: string);
begin
  // das Passwort dieses Benutzers zurückgeben, leer lehnt die Anfrage ab
  Password := LookupPassword(aUsername);
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNServer *Server = new TsgcSTUNServer(this);
Server->Port = 3478;
Server->STUNOptions->Authentication->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Realm = "example.com";
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;

Was steckt drin

Ein selbst gehosteter STUN-Server — ideal für On-Premise-WebRTC-Deployments und Private-Cloud-Tests.

Binding-Request-Handler

Eingehende Binding-Requests werden mit XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (Legacy) und FINGERPRINT beantwortet — entsprechend der Standard-RFC-8489-Antwortstruktur.

Long-Term-/Short-Term-Authentifizierung

Schalte STUNOptions.Authentication.Enabled ein, um MESSAGE-INTEGRITY zu verlangen, und setze den Realm auf LongTermCredentials.Realm. OnSTUNRequestAuthorization liefert dir den Benutzernamen und den Realm, und du gibst das passende Passwort zurück.

Antwortattribute unter deiner Kontrolle

STUNOptions.BindingAttributes schaltet das alte MAPPED-ADDRESS nach RFC 3489 sowie OTHER-ADDRESS, RESPONSE-ORIGIN und SOURCE-ADDRESS ein oder aus, und AlternateServer antwortet mit 300 Try Alternate und dem Server, den du angibst.

IPv4 / IPv6

Bindung an eine der Familien oder Dual-Stack über IPVersion. Die XOR-MAPPED-ADDRESS-Antwort verwendet die Familie des eingehenden Transports.

Stale-Nonce-Rotation

LongTermCredentials.StaleNonce legt fest, wie lange eine Nonce gültig bleibt. Nach Ablauf antwortet der Server mit 438 Stale Nonce und einer frischen Nonce, genau so, wie RFC 8489 §9.2 es verlangt.

Diagnose

OnSTUNRequestSuccess und OnSTUNRequestError übergeben dir die Anfrage und die Antwort, die der Server gleich senden wird, samt einem var Accept, das du zurücksetzen kannst. LogFile schreibt den rohen Nachrichtenaustausch auf die Festplatte.

Spezifikationen & Referenzen

Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, hole dir das sofort lauffähige Demo-Projekt und lade die Testversion herunter.

Online-Hilfe — TsgcSTUNServer Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen dieser Komponente.
Demo-Projekt — Demos\35.P2P\02.STUN Sofort lauffähiges Beispielprojekt. Wird im sgcWebSockets-Paket mitgeliefert — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Code-Beispiele für Delphi & C++ Builder und Primärquellen-Referenzen — nur diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch, das jede Komponente der Bibliothek abdeckt.

STUN-Server – Häufig gestellte Fragen

Häufige Fragen zum Betrieb eines selbst gehosteten STUN-Servers in Delphi und C++ Builder.

Platziere eine TsgcSTUNServer-Komponente, setze Port (Standard 3478) und setze Active := True. Der Server beantwortet eingehende Binding-Requests dann mit der kanonischen XOR-MAPPED-ADDRESS-Antwort. Aktiviere optional Authentication und behandle OnSTUNRequestAuthorization, um MESSAGE-INTEGRITY mit Long-Term-Credentials zu verlangen.
Er implementiert STUN gemäß RFC 8489, verarbeitet Binding- und Indication-Nachrichten und antwortet mit XOR-MAPPED-ADDRESS, dem veralteten MAPPED-ADDRESS und FINGERPRINT. Er unterstützt IPv4 und IPv6, optionales STUN-over-TLS und verweist auf RFC 5780 für die NAT-Behaviour-Discovery.
Nein. TsgcSTUNServer ist ein selbst gehosteter STUN-Server, den du direkt in deine eigene Delphi- oder C++ Builder-Anwendung einbettest, sodass du keine separate coturn-Instanz bereitstellen und betreiben musst. Er ist ideal für private Netzwerke, On-Premise-WebRTC-Deployments und das ICE-Bootstrapping unter deiner eigenen Kontrolle.
Der STUN-Server ist Teil der sgcWebSockets-Enterprise-Edition und unterstützt Delphi 7 bis zum aktuellen Delphi-Release und die passenden C++ Builder-Versionen, unter Windows, macOS, Linux, iOS und Android. Lade die kostenlose Testversion herunter, um einen STUN-Endpunkt in deinem eigenen Projekt aufzusetzen.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit, deinen eigenen STUN-Server zu betreiben?

Lade die kostenlose Testversion herunter und richte einen STUN-Endpunkt in Delphi ein.