STUN 服务器
在 Delphi 中运行您自己的 STUN(RFC 8489)服务器。通过标准 XOR-MAPPED-ADDRESS 回复响应绑定请求 — 适用于私有网络、本地部署和 ICE 自举场景。
在 Delphi 中运行您自己的 STUN(RFC 8489)服务器。通过标准 XOR-MAPPED-ADDRESS 回复响应绑定请求 — 适用于私有网络、本地部署和 ICE 自举场景。
符合 RFC 8489 标准的 STUN 服务器 — 处理 Binding / Indication 消息,以 XOR-MAPPED-ADDRESS 回复,并可选启用 MESSAGE-INTEGRITY 进行长期身份验证。
设置 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 暴露请求中的用户名,以便从您的存储中返回匹配密码。
配合 TsgcWSRateLimiter 对每个源 IP 的入站 STUN 请求进行限速 — 有效防范放大攻击滥用。
通过 IPVersion 绑定到任一地址族或双栈模式。XOR-MAPPED-ADDRESS 回复使用入站传输的地址族。
对于 STUN-over-TLS 变体,可为底层 TCP 监听器配置 SSL 选项 — 当 UDP 在网络出口被阻断时非常有用。
OnSTUNRequest / OnSTUNResponse 记录每个事务的日志,包括方法、消息类型和解析后的属性列表 — 非常适合调试部署问题。