🌐
VPS

启动 Minecraft Java 版服务器时,默认端口是 25565,因此玩家只需输入域名即可加入。但如果你运行在非默认端口上(例如一台机器上有多个服务器,或 VPS 分配了端口),玩家就必须输入 play.example.com:25577,既难记又显得不专业。最干净的解决办法是创建 DNS SRV 记录,它会自动告诉 Minecraft 客户端该连接到哪个主机和端口,玩家始终只需输入 play.example.com

什么是 SRV 记录以及它如何工作

SRV(Service)记录是 RFC 2782 定义的标准 DNS 记录,用于指明某项"服务"运行在哪个主机和端口上,而不像普通 A 记录那样只指向一个 IP。SRV 记录携带优先级(priority)、权重(weight)、端口(port)和目标(target)。Minecraft Java 客户端总是先查找名为 _minecraft._tcp.<玩家输入的名称> 的 SRV 记录;一旦找到,就会连接到指定端口,玩家完全无需知道端口号。

关键在于 SRV 记录并不直接指向 IP,而是指向一个主机名(target),该主机名还需通过 A 记录(IPv6 则用 AAAA)解析。因此配置永远分为两步。

第一步:先为主机创建 A 记录

首先需要一个指向服务器 IP 的主机名,例如创建子域 mc.example.com 指向真实 IP。

; A 记录 — 将主机名指向服务器 IP
mc.example.com.        3600  IN  A     203.0.113.45

; 若有 IPv6 则再加 AAAA
mc.example.com.        3600  IN  AAAA  2001:db8::45

这个 mc.example.com 名称将在下一步作为 SRV 记录的目标。请记住:目标只能是主机名,切勿直接填写 IP 地址

第二步:为 Java 版创建 SRV 记录

Minecraft Java 的 SRV 记录由以下部分组成:服务为 _minecraft,协议为 _tcp,其后是玩家将输入的子域(例如 play)。以下是 BIND 风格的区域文件行:

; SRV 记录 — 优先级 权重 端口 目标
; 完整名称:_minecraft._tcp.play.example.com
_minecraft._tcp.play   IN  SRV  0 5 25577 mc.example.com.

这一行的含义是:当玩家输入 play.example.com 时,客户端应连接到主机 mc.example.com25577 端口,优先级为 0,权重为 5。注意目标始终以点(.)结尾,以标示它是完全限定域名(FQDN)。

SRV 记录中各字段的含义

字段示例值含义
Service_minecraft服务名,始终以下划线开头;Minecraft 固定使用此值
Proto_tcp协议;Java 用 _tcp(基岩版用 _udp)
Nameplay玩家输入的子域;留空或用 @ 表示根域名
TTL3600缓存时间(秒);越低更新越快,但查询更频繁
Priority0数值越低越优先;用于排序多台服务器,通常设 0
Weight5优先级相同时按权重分配负载,通常设 5
Port25577服务器实际监听的端口
Targetmc.example.com.目标主机名;必须有 A/AAAA 记录并以点结尾

Minecraft SRV 记录的黄金法则:Service = _minecraft,Proto = _tcp(Java),Target = 可解析的主机名而非 IP。只要记住这三点,其余不过是各个 DNS 面板的细节差异。

在 DirectAdmin、Cloudflare 和注册商处如何填写

每个 DNS 面板呈现 SRV 字段的方式各不相同:有的拆成独立的输入框,有的合并成一行。这正是人们最容易出错的地方。

DirectAdmin

在 DirectAdmin 中,进入 DNS Management 并选择记录类型 SRV。通常在 Name 框填入 _minecraft._tcp.play,在 Value 框填入 0 5 25577 mc.example.com.(优先级 权重 端口 目标)。部分版本会单独拆出 Priority 字段,此时 Value 只填 5 25577 mc.example.com.

Cloudflare

Cloudflare 将字段拆分得很清楚,分别有 Service(_minecraft)、Protocol(TCP)、Name(play@)、TTL、Priority、Weight、Port 和 Target 各自的输入框。逐个直接填写即可,并应将记录设为仅 DNS(灰色云朵),因为 Cloudflare 代理不支持 Minecraft 端口。

域名服务商 / 注册商

许多注册商将所有内容合并成一行,或要求填写完整的 Name;有些会在你选择 SRV 类型时自动补上 service/proto。请阅读各面板的示例,如果系统已自动添加,就不要重复填写 _minecraft._tcp

在 AsiaGB,我们通过 DirectAdmin 管理 DNS,且不强制使用 Cloudflare,因此你可以直接在 DNS Management 中自行添加 SRV 记录。Linux VPS 套餐每月 500 泰铢起,采用 SSD,并提供 99% 的正常运行时间保证。

用 dig 或 nslookup 验证 SRV 记录

配置完成后不要想当然认为已生效——务必先查询确认。在 Linux/macOS 上使用 dig

$ dig SRV _minecraft._tcp.play.example.com +short
0 5 25577 mc.example.com.

# 或查看完整输出
$ dig SRV _minecraft._tcp.play.example.com

# 在 Windows 上使用 nslookup
> nslookup -type=srv _minecraft._tcp.play.example.com

如果结果显示的优先级、权重、端口和目标与你设置的完全一致,说明 SRV 记录已发布。随后运行 dig A mc.example.com,确认目标也解析到正确的 IP。

DNS 传播与 TTL

新记录或修改过的记录需要时间传播到全球,具体取决于 TTL,可能从几分钟到 48 小时不等。若预计会频繁改动,可先设置较低的 TTL(如 300 秒),待稳定后再调高。等待期间如果 dig 仍看不到记录,可直接查询公共解析器,例如 dig SRV _minecraft._tcp.play.example.com @1.1.1.1

基岩版与 Java 版的区别

基岩版(Bedrock)同样支持 SRV 记录,但使用 _udp 协议和默认端口 19132,格式为 _minecraft._udp.play。不过实话实说,许多基岩版客户端会忽略 SRV 记录,尤其是主机和移动端,导致行为不稳定。更可靠的做法是让基岩版玩家在添加服务器界面的 Port 字段直接输入端口。

; 基岩版 SRV 示例(并非所有客户端都支持)
_minecraft._udp.play   IN  SRV  0 5 19133 mc.example.com.

常见陷阱与误解

SRV 记录并不能隐藏服务器的 IP。任何人查询 DNS 都能看到目标,并立即将其解析为真实 IP,因此 SRV 不是 DDoS 防护。要隐藏真实 IP 需要单独的代理/抗 DDoS 服务——那是完全不同的话题。

步骤快速总结

  1. 创建 A 记录,使 mc.example.com 指向服务器的 IP。
  2. 创建 SRV 记录 _minecraft._tcp.play,指向目标 mc.example.com. 并填入真实端口。
  3. dig SRVnslookup -type=srv 验证。
  4. 按 TTL 等待传播,之后玩家只需输入 play.example.com

这样玩家就能凭简短域名连接你的 Java 版服务器,再也无需记住端口号了。

常见问题 (FAQ)

创建 SRV 记录前必须先创建 A 记录吗?

是的,必须先创建,因为 SRV 记录指向的是主机名(target)而非直接指向 IP。该主机名(例如 mc.example.com)必须有一条能解析到真实 IP 的 A 记录(IPv6 则为 AAAA),否则即使 SRV 记录完全正确,客户端也无法连接。

我设置了 SRV 记录后为什么玩家还要输入端口?

常见原因包括:目标填成了 IP 而非主机名、区域文件中目标末尾漏了点、重复填写了 service/proto,或 DNS 尚未传播。请先用 dig SRV _minecraft._tcp.play.example.com 检查;若看不到记录,就按 TTL 等待,或直接查询 1.1.1.1。

SRV 记录能隐藏 IP 以防御 DDoS 吗?

不能。SRV 记录会暴露目标,普通的 DNS 查询即可将其解析为真实 IP,因此它不是 DDoS 防护。要隐藏真实 IP 需要单独的代理或抗 DDoS 服务,那与 SRV 记录是完全不同的机制。

基岩版能像 Java 版一样使用 SRV 记录吗?

理论上基岩版支持,使用 _minecraft._udp 和默认端口 19132,但许多基岩版客户端(尤其是主机和移动端)会忽略 SRV 记录,因此并不可靠。更稳妥的做法是让基岩版玩家在添加服务器时自行在 Port 字段输入端口号。

准备好开设您的 Minecraft 服务器了吗?

AsiaGB Linux VPS(SSD、DirectAdmin、99% 在线率)每月 500 泰铢起,泰国与新加坡数据中心低延迟,适合任何规模的 Minecraft 服务器。

查看 VPS 套餐

查看泰国VPS主机全部套餐 →