Serveur STUN pour Delphi

Fais tourner ton propre serveur STUN (RFC 8489) en Delphi. Réponds aux requêtes Binding avec la réponse canonique XOR-MAPPED-ADDRESS — utile dans les réseaux privés, les déploiements sur site et l'amorçage ICE.

TsgcSTUNServer

Un serveur STUN typé conforme à la RFC 8489 — traite les messages Binding / Indication, répond avec XOR-MAPPED-ADDRESS, applique en option MESSAGE-INTEGRITY pour l'authentification longue durée.

Classe du composant

TsgcSTUNServer

Protocole

STUN (RFC 8489)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Professional / Enterprise

Pose, configure le port, tu as un endpoint STUN

Configure Port (par défaut 3478), Active := True — ton serveur répond désormais aux requêtes Binding avec la réponse canonique XOR-MAPPED-ADDRESS de la RFC 8489.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormSTUNServer contient FServer: TsgcSTUNServer et le gestionnaire

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

  // optionnel : identifiants long terme
  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
  // renvoie le mot de passe de cet utilisateur, vide rejette la requête
  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;

Sous le capot

Un serveur STUN auto-hébergé — idéal pour les déploiements WebRTC sur site et les tests en cloud privé.

Gestionnaire de requêtes Binding

Les requêtes Binding entrantes reçoivent une réponse avec XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legacy) et FINGERPRINT — conforme au format de réponse standard de la RFC 8489.

Authentification longue / courte durée

Active STUNOptions.Authentication.Enabled pour exiger MESSAGE-INTEGRITY et définis le realm sur LongTermCredentials.Realm. OnSTUNRequestAuthorization te remet le nom d'utilisateur et le realm, et tu renvoies le mot de passe correspondant.

Les attributs de réponse que tu contrôles

STUNOptions.BindingAttributes active ou désactive les attributs historiques RFC 3489 MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN et SOURCE-ADDRESS, et AlternateServer répond 300 Try Alternate avec le serveur que tu indiques.

IPv4 / IPv6

Lie-toi à l'une ou l'autre famille, ou en double pile via IPVersion. La réponse XOR-MAPPED-ADDRESS utilise la famille du transport entrant.

Rotation des nonces périmés

LongTermCredentials.StaleNonce définit la durée de validité d'un nonce. Une fois expiré, le serveur répond 438 Stale Nonce avec un nonce neuf, ce que demande la RFC 8489 §9.2.

Diagnostics

OnSTUNRequestSuccess et OnSTUNRequestError te remettent la requête et la réponse que le serveur s'apprête à envoyer, avec un var Accept que tu peux mettre à False. LogFile écrit l'échange brut sur disque.

Spécifications et références

Sources de référence pour le protocole implémenté par ce composant.

Documentation et démos

Lien direct vers la référence du composant, projet de démo prêt à l'emploi et téléchargement de l'essai.

Aide en ligne — TsgcSTUNServer Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\35.P2P\02.STUN Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code Delphi et C++ Builder et références primaires — ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque.

Questions fréquentes sur le serveur STUN

Questions courantes sur l'exécution d'un serveur STUN auto-hébergé en Delphi et C++ Builder.

Déposez un composant TsgcSTUNServer, définissez Port (par défaut 3478) et réglez Active := True. Le serveur répond alors aux requêtes Binding entrantes avec la réponse XOR-MAPPED-ADDRESS canonique. Activez éventuellement Authentication et gérez OnSTUNRequestAuthorization pour exiger MESSAGE-INTEGRITY avec des identifiants à long terme.
Il implémente STUN selon le RFC 8489, traitant les messages Binding et Indication et répondant avec XOR-MAPPED-ADDRESS, l'ancien MAPPED-ADDRESS et FINGERPRINT. Il prend en charge IPv4 et IPv6, STUN-over-TLS optionnel, et se réfère au RFC 5780 pour la découverte du comportement du NAT.
Non. TsgcSTUNServer est un serveur STUN auto-hébergé que vous intégrez directement dans votre propre application Delphi ou C++ Builder, vous n'avez donc pas besoin de déployer et d'exploiter une instance coturn séparée. Il est idéal pour les réseaux privés, les déploiements WebRTC sur site et l'amorçage ICE sous votre propre contrôle.
Le serveur STUN fait partie de l'édition sgcWebSockets Enterprise et prend en charge Delphi 7 jusqu'à la dernière version de Delphi et les versions de C++ Builder correspondantes, sous Windows, macOS, Linux, iOS et Android. Téléchargez la version d'essai gratuite pour mettre en place un endpoint STUN dans votre propre projet.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à faire tourner ton propre serveur STUN ?

Télécharge l'essai gratuit et déploie un endpoint STUN en Delphi.