如何找出 SRV 记录所需的服务名称?

如何找出 SRV 记录所需的服务名称?

我对 Linux 还很陌生,所以我的问题是:是否有任何命令或任何其他方式(除了谷歌搜索)来查找 SRV 记录(端口转发)所需的服务名称?我正在使用 Teamspeak3 的音乐机器人(Sinusbot)我想通过 bot.mydomain.com 访问该机器人。访问它的常用方法是 mydomain.com:8087。意思是:我需要类似于“_ts3”、“_minecraft”等的东西,但如果可能的话,我必须通过命令找到它)

答案1

DNS SRV 记录是发布定义的服务端点的一种方式。客户端可以通过检索定义的 DNS 标签来定位服务。

这里的关键是“定义”,如注册的或至少在服务的用户和提供商中众所周知的。我希望确定运行服务的进程的名称是无关紧要的。了解它正在监听的端口是相关的,并且可以使用lsof评论中提供的参考 nick064 找到。在 Linux 上确定侦听端口时更常见的是netstat -ltunp | grep ${processname}ss -ltunp | grep ${processname}。 (其中 ${processname} 是您感兴趣的实际名称)

运行服务的应用程序或程序的名称不要求与已发布的服务标签相同。许多不同的程序可以在不同的环境中提供相同的服务,并且在 DNS 标签意义上与相同的服务名称相关联。

如果每个运营商为同一服务选择不同的标签,DNS SRV 记录将基本上毫无用处,因为客户端不知道要在 DNS 中查找什么。

正如 Gareth 评论的那样,IANA 维护着一份注册服务列表(在互联网意义上)——其中一些已定义了关联的 DNS SRV 标签。该列表是常见服务与其 IETF RFC 的便捷映射。 Teamspeak 不在该列表中,这意味着您需要咨询您所使用的服务的用户社区,以了解 DNS 标签应该是什么。

RFC 3263,第 4.2 节参考一个例子可能会有用。

答案2

您可以使用以下方式查找所有服务:

service --status-all

您可以通过 grep 解析此内容以在显示的列表中进行搜索:

service --status-all | grep pattern

事实证明您可能需要找到某个流程,在这种情况下:

ps aux | grep pattern

例如,运行ps aux | grep "_ts3"

相关内容