问题

问题

问题

我有一个 TeamSpeak 服务器,托管在游戏服务器域 ts4.gameservers.com 下的帐户,端口号为 9102。我已经设置了一个 CName,将 ts.valhallashalls.com 重定向到 ts4.gameservers.com,但要连接,我仍然必须使用服务器内的端口号。

由于游戏服务器主机使用非标准端口号作为 TeamSpeak,是否可以使用来自 ts.valhallashalls.com 的 SRV 记录进行重定向(无需端口号),以连接到端口号为 9102 的 teamspeak 服务器?

默认情况下,TS3 服务器在端口 9987 (UDP) 上创建虚拟语音服务器。ServerQuery 正在监听端口 10011 (TCP),文件传输将使用端口 30033 (TCP)。

所以我想要做的是重定向 ts.valhallashalls.com,不带端口号,所以当尝试连接团队发言客户端时,它会自动尝试连接到端口 9987,并将其透明地重定向到正确的端口号。

我可以使用 SRV 记录来做到这一点吗?


更新

在 Mac、Linux 和 Windows 上的 TeamSpeak 客户端 3.0.8 及更高版本中,您现在可以使用 SRV 记录连接到您的服务器。格式如下。目前,iOS 和 Android 版本的 TeamSpeak 不支持 SRV 记录。

TS3 服务器的 SRV 记录格式为:

_ts3._udp.name TTL IN SRV priority weight port target

还可以为域的 TSDNS 服务器添加 SRV 记录,其格式为:

_tsdns._tcp.name TTL IN SRV priority weight port target

解析时的优先级为:

  1. _ts3 SRV 记录
  2. _tsdns SRV 记录
  3. 时序域名系统
  4. DNS

例子

使用我的服务器详细信息作为上面的示例,我可以执行以下操作在我的 valhallashalls.com 域上设置 SRV 记录,使用 ts 作为其子域连接到 GameServers 托管的 TeamSpeak 服务器。

_ts3._udp.ts 3600 IN SRV 0 100 9102 ts4.gameservers.com


用例

我们不再使用 GameServers 作为主帐户,因为我们有一个由 MediaTemple 托管的 VPS。为此,我设置了一组服务器,一个在 VPS 上,我将 Game Servers 帐户保留为备份,最后一个在我的家庭连接上。它们在我的域内分别通过其 CNAME ts1、ts2 和 ts3 命名。这允许冗余设置。

  1. ts1.valhallashalls.com. CNAME @.
  2. ts2.valhallashalls.com. CNAME ts4.gameservers.com.
  3. ts3.valhallashalls.com. CNAME <my ip address>.

SRV 记录如下所示

  1. ts3_.udp.ts 3600 IN SRV 0 100 9987 ts1.valhallashalls.com
  2. ts3_.udp.ts 3600 IN SRV 1 100 9102 ts2.valhallashalls.com
  3. ts3_.udp.ts 3600 IN SRV 2 100 9987 ts3.valhallashalls.com

答案1

SRV 记录本身不会“做”任何事情。必须开发客户端来使用这些 SRV 记录,以便弄清楚如何查找或连接到给定的服务。

谷歌搜索了一下,似乎teamspeak 决定制定自己的“TSDNS”协议这似乎是一个特殊的服务器,你必须在特定端口上运行,这样 TS 才能询问它“真正”连接到哪个端口。截至 5 月,让客户端通过 SRV 记录找到服务器似乎仍在计划中

答案2

如果您使用 Apache 作为 Web 服务器,则可以执行 mod 重写规则,将 ts.v...com 上的请求转发到 ts4.game....com 服务器并包含端口号。服务是基于 http 的还是直接连接的程序?

相关内容