DNS解析中的SRV解析

作者:FAWEI 发布时间: 2025-05-05 阅读量:59

SRV解析就像个“服务导航员”

想象一下,你想去一家商场里的餐厅吃饭,但不知道具体在几楼、哪个位置。这时候商场里有个导航牌(SRV记录),直接告诉你:

  • 哪家餐厅(服务名称,比如“火锅店”)

  • 坐电梯还是扶梯(协议,比如“电梯”对应TCP,“扶梯”对应UDP)

  • 在几楼(端口号,比如“5楼”对应端口5000)

  • 哪家分店优先去(优先级,比如总店人少就先去总店)

  • 分店接待能力如何(权重,比如分店A能接待更多人,就多分点顾客过去)

有了这个导航牌,你不用自己瞎找,直接按指示走就行

实际生活中有什么用?

  1. 自动找服务
    比如你用的聊天软件(比如微信),不需要提前知道服务器地址和端口,软件会通过SRV记录自动找到“聊天服务器在哪儿、用哪个端口”。你只管发消息,剩下的它自己搞定。

  2. 分担压力
    比如一家公司有多个客服电话(服务器),SRV记录可以告诉客户:

    • 优先打总机(优先级高),如果占线再打分机(优先级低)。

    • 分机1接电话快(权重高),分机2接电话慢(权重低),所以大部分电话转给分机1。

  3. 灵活换地方
    如果服务器搬家了(比如换了IP或端口),只要改SRV记录,所有人自动用新地址,不需要挨个通知。

总结:SRV记录就是帮程序“智能找路”

  • 不用死记硬背:客户端不用硬编码服务器的地址和端口。

  • 灵活调度:根据服务器压力自动分配流量。

  • 偷偷换地方也没事:改SRV记录,全网生效,用户无感知。

举个例子

以mc为例,如果我的域名是example.com mc服务器ip是1.2.3.4,你希望玩家通过 mc.example.com 访问服务器

1.先为MC服务器创建一个子域名(A记录)

mc.example.com.  3600  IN  A  1.2.3.4

(这一步是常规的域名解析,把 mc.example.com 指向你的服务器IP。)


2.添加SRV记录

在DNS管理界面,添加一条SRV记录,格式如下:

_minecraft._tcp.xxx.  3600  IN  SRV  10  5  25565  mc.example.com.

服务名:_minecraft(Minecraft专用服务标识,必须带下划线)

协议:_tcp(Minecraft使用TCP协议)

域名前缀:xxx(xxx是你所想要设置的域名的前缀,警如你想设置你的Minecraft服务器IP为mc.example.com,这里

的xxx填写mc即可。)

端口:25565(MC默认端口,如果你改过端口,这里填实际端口)

目标主机:mc.example.com(指向之前A记录的子域名)

优先级:10(默认即可,如果有多个服务器可调整)

权重:5(默认即可,用于负载均衡)


3.玩家连接

玩家在MC客户端中直接输入域名 example.com,客户端会自动通过SRV记录找到:

实际连接地址是 mc.example.com:25565(对应IP 1.2.3.4:25565)。

效果:玩家不需要手动输入IP和端口,体验更简洁

同样的,teamspeak服务器的主机名为ts3.udp.ts,解析记录为10 5 9987 ts.example.com