SRV 记录查询是什么
SRV 记录把『某个服务在哪台主机、哪个端口』写进 DNS,格式固定为 _service._proto.name,例如 _ldap._tcp.example.com。一条 SRV 记录包含优先级、权重、端口与目标主机四部分,客户端按优先级选目标、按权重做负载分摊。AD 域控登录、LDAP、SIP、Minecraft 等大量服务依赖它,服务『找不到』往往只是 SRV 查不到或目标名解析不了。
基本信息
| 适用平台 | 通用 DNS;Windows 侧用 Resolve-DnsName 查询 |
|---|---|
| 记录格式 | _service._proto.name,如 _ldap._tcp.example.com |
| 返回内容 | 优先级 权重 端口 目标主机 |
| 常见归属 | AD 域(_ldap/_kerberos)、SIP(_sip._udp)、自定义服务 |
典型使用场景
- 域内客户端登录慢或失败:确认域控的 SRV 记录是否完整可解析
- SIP 或话机注册异常:核对 _sip._udp 与 _sip._tcp 记录指向
- 自建服务发现:服务端注册了 SRV,客户端能查到但连不上,需检查目标与端口
- 多实例负载:通过权重验证流量是否按预期分配
查询 SRV
查询 SRV
# 输出顺序为:优先级 权重 端口 目标
dig +short _ldap._tcp.example.com SRV
# 其他常见服务
dig +short _sip._udp.example.com SRV
dig +short _minecraft._tcp.example.com SRV
# 确认目标主机名本身能否解析,这是最常见的第二层坑
dig +short $(dig +short _ldap._tcp.example.com SRV | awk '{print $4}') AWindows 侧查询
Windows 侧查询
# 查询 SRV 记录
Resolve-DnsName -Name _ldap._tcp.example.com -Type SRV
# 只取关键字段,便于脚本处理
Resolve-DnsName -Name _ldap._tcp.example.com -Type SRV | Select-Object Name,NameTarget,Port,Priority,Weight返回结果判读
| 返回情况 | 含义 | 处置建议 |
|---|---|---|
| NOERROR 且带记录 | 正常 | 继续验证目标名与端口可达性 |
| NOERROR 无记录(NODATA) | 域存在但没有该类型记录 | 检查记录是否漏建或名字拼错 |
| NXDOMAIN | 该域名不存在 | 检查域名与视图配置 |
| 目标名解析失败 | SRV 有记录但无法落地 | 补齐目标主机的 A/AAAA 记录 |
| 优先级与权重异常 | 流量分配与预期不符 | 核对规划值与客户端选择逻辑 |
SRV 排查两个高频遗漏:一是忘记下划线前缀(写成 ldap.tcp.example.com 永远查不到),二是只看 SRV 记录本身不验证目标主机名与端口是否可用。
把 NODATA 与 NXDOMAIN 判读混为一谈会直接影响责任判断:前者说明域存在、只是缺少该类型记录,后者说明整个域名不存在,两者的修复动作完全不同。