STUN 服务器

在 Delphi 中运行您自己的 STUN(RFC 8489)服务器。通过标准 XOR-MAPPED-ADDRESS 回复响应绑定请求 — 适用于私有网络、本地部署和 ICE 自举场景。

TsgcSTUNServer

符合 RFC 8489 标准的 STUN 服务器 — 处理 Binding / Indication 消息,以 XOR-MAPPED-ADDRESS 回复,并可选启用 MESSAGE-INTEGRITY 进行长期身份验证。

组件类

TsgcSTUNServer

支持平台

Windows, macOS, Linux, iOS, Android

版本

Enterprise

拖放组件、设置端口,即可获得 STUN 端点

设置 Port(默认 3478),Active := True — 服务器即可以标准 RFC 8489 XOR-MAPPED-ADDRESS 回复响应绑定请求。

uses
  sgcP2P;

var
  STUNServer: TsgcSTUNServer;
begin
  STUNServer := TsgcSTUNServer.Create(nil);
  STUNServer.Port := 3478;

  // optional: long-term credentials
  STUNServer.Authentication.Enabled  := True;
  STUNServer.Authentication.Realm    := 'example.com';
  STUNServer.OnSTUNAuthenticate := procedure(Sender: TObject;
    const aUsername: string; var aPassword: string;
    var Accept: Boolean)
  begin
    aPassword := LookupPassword(aUsername);
    Accept    := aPassword <> '';
  end;

  STUNServer.Active := True;
end;
// uses: sgcP2P
TsgcSTUNServer *STUNServer = new TsgcSTUNServer(this);
STUNServer->Port = 3478;
STUNServer->Active = true;

内部功能

自托管 STUN 服务器 — 适合本地 WebRTC 部署和私有云测试。

绑定请求处理器

以 XOR-MAPPED-ADDRESS、MAPPED-ADDRESS(传统)和 FINGERPRINT 响应入站绑定请求 — 符合标准 RFC 8489 回复格式。

长期/短期身份验证

切换 Authentication.Enabled 以要求 MESSAGE-INTEGRITY。OnSTUNAuthenticate 暴露请求中的用户名,以便从您的存储中返回匹配密码。

按 IP 速率限制

配合 TsgcWSRateLimiter 对每个源 IP 的入站 STUN 请求进行限速 — 有效防范放大攻击滥用。

IPv4 / IPv6

通过 IPVersion 绑定到任一地址族或双栈模式。XOR-MAPPED-ADDRESS 回复使用入站传输的地址族。

TCP 上的 TLS(RFC 8489 §5)

对于 STUN-over-TLS 变体,可为底层 TCP 监听器配置 SSL 选项 — 当 UDP 在网络出口被阻断时非常有用。

诊断

OnSTUNRequest / OnSTUNResponse 记录每个事务的日志,包括方法、消息类型和解析后的属性列表 — 非常适合调试部署问题。

规范与参考资料

该组件实现的协议权威来源。

文档与示例

直达组件参考文档、获取即用示例项目并下载试用版。

在线帮助 — TsgcSTUNServer 该组件的完整属性、方法和事件参考。
示例项目 — Demos\35.P2P\02.STUN 即用示例项目,包含在 sgcWebSockets 包中 — 请从下方下载试用版。
技术文档(PDF) 功能介绍、快速入门、Delphi 与 C++ Builder 代码示例及原始参考资料 — 仅限此组件。
用户手册(PDF) 涵盖库中每个组件的综合手册。

准备好运行您自己的 STUN 服务器了吗?

下载免费试用版,在 Delphi 中搭建 STUN 端点。