在运行网络游戏服务器时,如果端口不是默认值,客户端连接时必须输入 域名:端口
这种方式虽然能用,但不够美观,也不方便记忆和分享。

通过配置 DNS 的 SRV 记录,可以让玩家只输入子域名就连接到对应端口,实现“隐藏端口号”的效果。本文将介绍具体做法。


1. 什么是 SRV 记录

SRV(Service Record)是一种 DNS 记录类型,用于指定某个服务在某个主机上的端口号和协议。
如果客户端支持 SRV 记录,就能通过它自动找到对应的 IP 和端口,而无需用户手动输入端口号。

SRV 记录的查询格式:

_service._protocol.hostname

对于多数网络游戏服务来说:

  • _service 是该服务的标识,例如 _game
  • _protocol 通常是 _tcp_udp

2. 场景示例

假设:

  • 域名:example.net(已脱敏)
  • 服务器 IP:X.X.X.X(已脱敏)
  • 游戏服务运行端口:XXXXX(已脱敏)

目标:

玩家只需要输入 play.example.net 就能连接到服务器,不用写端口号。


3. 配置步骤(以 NameSilo 为例)

第一步:添加 A 记录

在 DNS 管理面板中添加一条 A 记录:

类型:A
主机名(Host):play
值(Value):X.X.X.X(服务器公网 IP)
TTL:3600(默认即可)

这样 play.example.net 就能解析到你的服务器 IP。


第二步:添加 SRV 记录

继续在 DNS 管理面板添加 SRV 记录:

HOSTNAME:           _game._tcp.play
TARGET HOSTNAME: play.example.net
PRIORITY: 0
WEIGHT: 5
PORT: XXXXX
TTL: 3600

解释:

  • _game._tcp.play → 声明这是某游戏的 TCP 服务,挂在 play.example.net 上。
  • TARGET HOSTNAME → 指向刚刚的 A 记录主机名。
  • PORT → 实际服务器端口。
  • PRIORITY / WEIGHT → 控制负载均衡,一般默认值即可。

4. 生效与测试

SRV 记录生效一般需要 5 分钟到 1 小时(视 TTL 和 DNS 缓存情况而定)。
生效后,可以用 MXToolbox SRV Lookup 查询:

_game._tcp.play.example.net

如果返回:

  • Port: XXXXX
  • Target: play.example.net

说明配置正确。


5. 客户端连接测试

打开游戏客户端 → 添加服务器:

play.example.net

此时不输入端口号,客户端会自动通过 SRV 记录找到对应端口并连接。


6. 注意事项

  1. SRV 记录只对支持它的协议生效,如果客户端不支持 SRV,就必须手动输入端口。
  2. 如果使用 Cloudflare 等代理 DNS,SRV 记录必须设置为“DNS only”模式,否则无法解析。
  3. 防火墙和路由器端口映射必须放行对应端口。
  4. SRV 记录是纯解析,不会提升安全性,只是简化了连接方式。

7. 总结

通过 SRV 记录,可以:

  • 使用简短的子域名连接游戏服务器
  • 隐藏端口号,提高易用性
  • 为不同服务器配置不同的子域名

这是一种纯 DNS 级别的优化,无需额外插件,适合所有自建游戏服务器的玩家使用。

Leave a Reply

Your email address will not be published. Required fields are marked *