在运行网络游戏服务器时,如果端口不是默认值,客户端连接时必须输入 域名:端口。
这种方式虽然能用,但不够美观,也不方便记忆和分享。
通过配置 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. 注意事项
- SRV 记录只对支持它的协议生效,如果客户端不支持 SRV,就必须手动输入端口。
- 如果使用 Cloudflare 等代理 DNS,SRV 记录必须设置为“DNS only”模式,否则无法解析。
- 防火墙和路由器端口映射必须放行对应端口。
- SRV 记录是纯解析,不会提升安全性,只是简化了连接方式。
7. 总结
通过 SRV 记录,可以:
- 使用简短的子域名连接游戏服务器
- 隐藏端口号,提高易用性
- 为不同服务器配置不同的子域名
这是一种纯 DNS 级别的优化,无需额外插件,适合所有自建游戏服务器的玩家使用。