如何检查使用哪个 DNS 别名来访问服务器?

如何检查使用哪个 DNS 别名来访问服务器?

我有一台安装了数据库的主机。为了访问数据库,客户端使用 DNS 别名 (CNAME) - AliasOne - 和数据库端口。

DNS 别名由另一个部门的同事管理。

我必须为同一主机请求一个更明确的别名 - AliasTwo。

现在: 我需要删除 AliasOne:如何检查哪个别名用于连接主机/数据库?

  • 我没有在数据库日志中得到这些信息。

  • 我尝试创建一个 iptables 规则:

iptables -A INPUT -p tcp -s AliasOne --dport 3306 -j LOG --log-prefix "AliasOne: " --log-tcp-options --log-ip-options

但它会将别名与其主机名进行转换,因此它也会记录 AliasTwo 的连接尝试。

  • 我没能用 nslookup、dig 和 last 得到答案。我使用它们的方式错误吗?

有人知道吗?(我不希望服务中断,所以“删除并看看是否有人抱怨”不是一个选择;))

答案1

除非协议明确要求在握手/请求中包含主机名,否则您无法从服务器确定客户端使用哪个主机名进行连接。客户端只需连接到主机名或别名解析到的 IP 地址。(请参阅此问答了解更多背景细节。

据我所知,MySQL 在握手中不包含主机名https://dev.mysql.com/doc/internals/en/connection-phase.html

一种解决方法可能是为服务器(临时)配置一个额外的 IP 地址,并将每个主机名/别名指向不同的 IP 地址,然后使用的 IP 地址将决定使用的主机名。或者监视您的 DNS 服务器并注册对已弃用别名的查找。

相关内容