Servidor STUN para Delphi

Ejecuta tu propio servidor STUN (RFC 8489) en Delphi. Responde a los binding requests con la respuesta canónica XOR-MAPPED-ADDRESS — útil en redes privadas, despliegues on-premise y bootstrapping de ICE.

TsgcSTUNServer

Un servidor STUN tipado conforme a RFC 8489 — procesa mensajes Binding / Indication, responde con XOR-MAPPED-ADDRESS y, opcionalmente, exige MESSAGE-INTEGRITY para autenticación long-term.

Clase del componente

TsgcSTUNServer

Protocolo

STUN (RFC 8489)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Professional / Enterprise

Coloca, configura el puerto y tendrás un endpoint STUN

Configura Port (por defecto 3478), Active := True — tu servidor responderá a las Binding requests con la respuesta canónica XOR-MAPPED-ADDRESS de RFC 8489.

uses
  sgcP2P, sgcP2P_STUN_Classes;

// TFormSTUNServer contiene FServer: TsgcSTUNServer y el handler

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

  // opcional: credenciales de largo plazo
  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
  // devuelve la contraseña de ese usuario, vacía rechaza la petición
  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;

Qué incluye

Un servidor STUN autoalojado — ideal para despliegues WebRTC on-premise y pruebas en cloud privada.

Manejador de Binding request

A los Binding requests entrantes se les responde con XOR-MAPPED-ADDRESS, MAPPED-ADDRESS (legado) y FINGERPRINT — replicando la forma de respuesta estándar de RFC 8489.

Autenticación long-term / short-term

Activa STUNOptions.Authentication.Enabled para exigir MESSAGE-INTEGRITY y fija el realm en LongTermCredentials.Realm. OnSTUNRequestAuthorization te entrega el nombre de usuario y el realm, y tú devuelves la contraseña correspondiente.

Atributos de respuesta que controlas

STUNOptions.BindingAttributes activa o desactiva los atributos heredados de RFC 3489 MAPPED-ADDRESS, OTHER-ADDRESS, RESPONSE-ORIGIN y SOURCE-ADDRESS, y AlternateServer responde 300 Try Alternate con el servidor que indiques.

IPv4 / IPv6

Asocia a cualquier familia o dual-stack mediante IPVersion. La respuesta XOR-MAPPED-ADDRESS usa la familia del transporte entrante.

Rotación de nonce caducado

LongTermCredentials.StaleNonce establece cuánto tiempo sigue siendo válido un nonce. Cuando caduca, el servidor responde 438 Stale Nonce con uno nuevo, que es lo que pide RFC 8489 §9.2.

Diagnóstico

OnSTUNRequestSuccess y OnSTUNRequestError te entregan la petición y la respuesta que el servidor está a punto de enviar, con un var Accept que puedes poner a False. LogFile escribe el intercambio en bruto a disco.

Especificaciones y referencias

Fuentes autorizadas del protocolo que implementa este componente.

Documentación y demos

Accede a la referencia del componente, descarga el proyecto demo listo para ejecutar y la versión de prueba.

Ayuda en línea — TsgcSTUNServer Referencia completa de propiedades, métodos y eventos de este componente.
Proyecto demo — Demos\35.P2P\02.STUN Proyecto de ejemplo listo para ejecutar. Se incluye dentro del paquete sgcWebSockets — descarga la prueba abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias a fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre cada componente de la biblioteca.

Preguntas frecuentes sobre el servidor STUN

Preguntas habituales sobre la ejecución de un servidor STUN autoalojado en Delphi y C++ Builder.

Coloca un componente TsgcSTUNServer, establece Port (por defecto 3478) y pon Active := True. El servidor responde entonces a las solicitudes Binding entrantes con la respuesta canónica XOR-MAPPED-ADDRESS. Opcionalmente habilita Authentication y maneja OnSTUNRequestAuthorization para exigir MESSAGE-INTEGRITY con credenciales de largo plazo.
Implementa STUN según RFC 8489, procesando mensajes Binding e Indication y respondiendo con XOR-MAPPED-ADDRESS, el MAPPED-ADDRESS heredado y FINGERPRINT. Soporta IPv4 e IPv6, STUN-over-TLS opcional, y referencia el RFC 5780 para el descubrimiento del comportamiento del NAT.
No. TsgcSTUNServer es un servidor STUN autoalojado que integras directamente en tu propia aplicación Delphi o C++ Builder, así que no necesitas desplegar y operar una instancia de coturn separada. Es ideal para redes privadas, despliegues de WebRTC on-premise y arranque de ICE bajo tu propio control.
El servidor STUN forma parte de la edición Enterprise de sgcWebSockets y es compatible desde Delphi 7 hasta la última versión de Delphi y las versiones de C++ Builder correspondientes, en Windows, macOS, Linux, iOS y Android. Descarga la prueba gratuita para levantar un endpoint STUN en tu propio proyecto.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para ejecutar tu propio servidor STUN?

Descarga la prueba gratuita y levanta un endpoint STUN en Delphi.