使用 DiG 确定 DNS 服务器是主服务器还是从服务器

使用 DiG 确定 DNS 服务器是主服务器还是从服务器

有没有办法使用 DiG 或 nslookup 来确定服务器设置为主服务器还是从服务器?如果服务器是从服务器,则返回主服务器的 IP 地址?

答案1

据我所知,答案是否定的——肯定没有标准方法,因为有十亿种不同的 DNS 服务器变体。一种选择是有一个“masterdns.mydomain.com”记录,保证包含主服务器的 IP 地址(甚至不要暴露它,没有必要)——然后您需要做的就是将 DNS 服务器的 IP 与它提供给您的主服务器的 IP 进行比较,一切就绪了。这也是不完美的,因为有别名/多宿主/等等(您不能保证它是不同的服务器),但是……

.. 你似乎暗示你自己设置这一切,在这种情况下你应该只需要 masterdns.mydomain.com 记录。

答案2

不,没有办法。DNS 协议没有提供任何从外部了解主/从关系的功能。

而且,这种区别如今已不复存在。许多域只有主域,并在一个公共数据库上同步。

您可以使用启发式方法(参见 Maas 的建议或使用序列号的增加,第一个增加的名称服务器将成为主服务器)但它们显然不可靠。

答案3

首先,从技术上讲,DNS 服务器不一定是主服务器或从服务器。这可能因域而异。它可能对某些域是主服务器,而对其他域则是从服务器。

如果域名的 DNS 区域配置正确 - 那么您可以请求该区域的 SOA 记录,其中(除其他外)包含主 DNS 服务器(主服务器)的主机名。

例如:

C:\>nslookup
Default Server:  UnKnown
Address:  192.168.1.1

> set type=SOA
> google.com.
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
google.com
        primary name server = ns1.google.com
        responsible mail addr = dns-admin.google.com
        serial  = 1396486
        refresh = 7200 (2 hours)
        retry   = 1800 (30 mins)
        expire  = 1209600 (14 days)
        default TTL = 300 (5 mins)

您现在可以对主服务器名称(从 SOA 记录 - 在本例中为“ns1.google.com”)进行另一次查找,以获取主服务器的 IP 地址:

C:\nslookup ns1.google.com.
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
Name:    ns1.google.com
Address:  216.239.32.10

本例中的答案是 216.239.32.10

答案4

该命令dig -t SOA your-url将在 ANSWER 部分返回权威服务器,然后如果您愿意,您可以获得dig authoritative-server-urlIP。或者您可以使用host -t SOA your-urlhost authoritative-server-url获得更简洁的响应。

相关内容