1

我正在使用 PHP 中的 DNS 记录查找,并且遇到了一些令人困惑的事情。我查找了 2 个不同的域,每个域都使用不同的主机和不同的权威名称服务器。我肯定知道这两个域都有 CNAMES。

我使用这个在线工具查找了 DNS 记录:http: //network-tools.com/ 我还使用 PHP 的 dns_get_record 查找了它们。A、NS、SOA、MX等都回来了。但没有 CNAME。我得到假/空数组。

在这两种情况下,我都可以登录这些域的 DNS 控件并查看 CNAMES。

为什么会发生这种情况?目标是允许在将客户的域更改为我公司的名称服务器之前查找和保存所有 DNS 记录(这样我们就不会意外地在外部托管电子邮件设置)。像 pop.domain.com 这样的 CNAME 在这里将相当重要,但我找不到任何查找会承认它们存在。

真正的问题当然是 PHP 函数没有返回它们,因为这确实是我需要它的地方。

但这让我感到困惑,我在其他地方找不到它们。特别是因为我在可以添加和删除 DNS 记录的地方直接查看它们。在这里说:

pop.domain.com CNAME pop.secureserver.net 0 900

(PHP 版本 5.2.6 Linux 2.6.9-67.0.15.plus.c4smp)

4

2 回答 2

3

我想我已经知道为什么了。我相信这与每个线程的“区域转移”有关是否可以找到给定域名的所有 DNS 子域?.

我期望 CNAME 查找的功能与 A, NS, MX-- EVERYTHING ELSE相同。(几乎没有不切实际的期望......)

dns_get_record("domain.com", DNS_CNAME, $authns_cname, $addtl_cname);

我希望返回一个包含为 domain.com 设置的所有 CNAMES 的数组。这不是发生的事情。

  • 如果这是我传入的域并且有一个 CNAME,我可以取回“www.domain.com”的单个 CNAME 条目。
  • 如果这是我传入的域并且有一个 CNAME,我可以取回“*.domain.com”的单个 CNAME 条目。
  • 无法从字面上取回所有 CNAME 记录,以便为 domain.com、通配符搜索或不保存所有 CNAMES/子域/第三级域的记录。

我想我只需要正确表达这个问题(第 15 次排列找到了有希望的答案)。我假设两个名称服务器(Dreamhost 和我公司的)都受到“保护”。尽管在我看来,与其他 DNS 记录相比,它并不是非常敏感的信息。

于 2010-06-24T15:38:09.420 回答
0
$www = dns_get_record("www.microsoft.com", DNS_CNAME);
  //print_r($www);
  //echo $www[0]['target'];
while ($www[0]['target']) {
  echo "<br/>-- ".$www[0]['target'];
  $www = dns_get_record($www[0]['target'], DNS_CNAME);
}
于 2012-06-21T13:27:52.933 回答