![带有自定义端口的 SRV DNS 记录。我是否误解了 SRV 应该做什么?](https://linux22.com/image/801270/%E5%B8%A6%E6%9C%89%E8%87%AA%E5%AE%9A%E4%B9%89%E7%AB%AF%E5%8F%A3%E7%9A%84%20SRV%20DNS%20%E8%AE%B0%E5%BD%95%E3%80%82%E6%88%91%E6%98%AF%E5%90%A6%E8%AF%AF%E8%A7%A3%E4%BA%86%20SRV%20%E5%BA%94%E8%AF%A5%E5%81%9A%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我已经阅读了 SRV 记录,并且认为我了解它们的用途,我想实现以下目标:
简而言之:将一个主机名绑定到另一个主机名,但更改端口。
即考虑到,我有一个主机名 aaa.bbb.com。
在 aaa.bbb.com 上,我有一个在端口 5000 上转发的 RDP 服务端口。
因此,使用 RDP,我需要连接到 aaa.bbb.com:5000。
我希望创建newhostname.bbb.com IN SRV 1 0 5000 aaa.bbb.com
,以便我可以连接到newhostname.bbb.com
,而无需指定 5000 端口。
我希望为多个域上的所有服务创建这样的自定义映射。
我已经使用 Dyn.com 创建了 SRV 记录,但它们似乎不起作用。据我所知,协议本身必须“支持/查找”SRV 记录?对吗?
问题:
- 以上能实现吗?
- 我是否误解了 SRV 的要点?
- 如果可以实现,是否只适用于某些协议?
答案1
协议(以及实现它们的应用程序)必须设计为利用 SRV 记录。
以 Outlook 为例。当它尝试自动查找您的 Exchange 服务器时,它将根据电子邮件地址的域部分 ( _autodiscover._tcp.{domain}
) 查找 SRV 记录。如果找到,它将连接到 SRV 记录中指定的服务器和端口(因此 SRV 记录可用于允许 SRV 感知应用程序在非标准端口上运行,对用户透明)。
大多数协议(例如 RDP、HTTP、各种电子邮件协议等)在设计时并未考虑利用 SRV 记录(而且看起来大多数协议也永远不会利用 SRV 记录)。
当您通过 RDP 连接到 newhostname.bbb.com 时,RDP 客户端只是尝试获取 newhostname.bbb.com 的 A 记录,并通过默认端口连接到该记录,除非您手动指定其他端口。
您需要的是 RDP 客户端查找您输入的主机名的 SRV 记录(很可能是这样的_rdp._tcp.example.com
,因为所有 SRV 记录都遵循一种_service._protocol.aaa.bbb
格式),然后连接到该 SRV 记录中指定的主机/端口。这显然需要更改 RDP 客户端应用程序。