STUN-server voor Delphi

Draai je eigen STUN-server (RFC 8489) in Delphi. Beantwoord binding requests met het canonieke XOR-MAPPED-ADDRESS antwoord — handig in private netwerken, on-premise deployments en ICE bootstrapping.

TsgcSTUNServer

Een getypeerde RFC 8489 STUN-server — verwerkt Binding / Indication berichten, antwoordt met XOR-MAPPED-ADDRESS en kan optioneel MESSAGE-INTEGRITY afdwingen voor long-term authenticatie.

Componentklasse

TsgcSTUNServer

Protocol

STUN (RFC 8489)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Professional / Enterprise

Plaatsen, poort instellen, klaar is je STUN-endpoint

Stel Port in (standaard 3478), Active := True — je server beantwoordt Binding requests nu met het canonieke RFC 8489 XOR-MAPPED-ADDRESS antwoord.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormSTUNServer bevat FServer: TsgcSTUNServer en de handler

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

  // optioneel: 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
  // geef het wachtwoord van die gebruiker terug, leeg weigert het verzoek
  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;

Wat zit erin

Een self-hosted STUN-server — ideaal voor on-premise WebRTC-deployments en private-cloud testen.

Binding request handler

Inkomende Binding requests worden beantwoord met XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legacy) en FINGERPRINT — passend bij de standaard RFC 8489 antwoordvorm.

Long-term / short-term auth

Zet STUNOptions.Authentication.Enabled aan om MESSAGE-INTEGRITY te vereisen en stel het realm in via LongTermCredentials.Realm. OnSTUNRequestAuthorization geeft je de username en het realm door, en jij retourneert het bijbehorende wachtwoord.

Antwoordattributen die jij bepaalt

STUNOptions.BindingAttributes schakelt de legacy RFC 3489 MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN en SOURCE-ADDRESS in of uit, en AlternateServer antwoordt met 300 Try Alternate en de server die je opgeeft.

IPv4 / IPv6

Bind aan beide families of dual-stack via IPVersion. Het XOR-MAPPED-ADDRESS antwoord gebruikt de familie van het inkomende transport.

Rotatie van stale nonces

LongTermCredentials.StaleNonce bepaalt hoe lang een nonce geldig blijft. Zodra die verloopt antwoordt de server met 438 Stale Nonce en een verse nonce, precies wat RFC 8489 §9.2 voorschrijft.

Diagnose

OnSTUNRequestSuccess en OnSTUNRequestError geven je het verzoek en het antwoord dat de server op het punt staat te versturen, met een var Accept die je op False kunt zetten. LogFile schrijft de ruwe uitwisseling naar schijf.

Specificaties & referenties

Autoritatieve bronnen voor het protocol dat dit component implementeert.

Documentatie & demo's

Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.

Online help — TsgcSTUNServer Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component.
Demoproject — Demos\35.P2P\02.STUN Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek.

Veelgestelde vragen over STUN-server

Veelgestelde vragen over het draaien van een zelf-gehoste STUN-server in Delphi en C++ Builder.

Plaats een TsgcSTUNServer component, stel Port in (standaard 3478) en zet Active := True. De server beantwoordt dan inkomende Binding-requests met het canonieke XOR-MAPPED-ADDRESS-antwoord. Schakel optioneel Authentication in en verwerk OnSTUNRequestAuthorization om MESSAGE-INTEGRITY met long-term credentials te vereisen.
Het implementeert STUN volgens RFC 8489, verwerkt Binding- en Indication-berichten en antwoordt met XOR-MAPPED-ADDRESS, het legacy MAPPED-ADDRESS en FINGERPRINT. Het ondersteunt IPv4 en IPv6, optioneel STUN-over-TLS, en verwijst naar RFC 5780 voor NAT-gedragsdetectie.
Nee. TsgcSTUNServer is een zelf-gehoste STUN-server die je rechtstreeks in je eigen Delphi- of C++ Builder-toepassing inbouwt, zodat je geen aparte coturn-instantie hoeft te implementeren en te beheren. Hij is ideaal voor private netwerken, on-premise WebRTC-deployments en ICE-bootstrapping onder je eigen beheer.
De STUN-server maakt deel uit van de sgcWebSockets Enterprise-editie en ondersteunt Delphi 7 tot en met de nieuwste Delphi-release en de bijbehorende C++ Builder-versies, op Windows, macOS, Linux, iOS en Android. Download de gratis proefversie om een STUN-endpoint in je eigen project op te zetten.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om je eigen STUN-server te draaien?

Download de gratis proefversie en zet een STUN-endpoint op in Delphi.