诊断子域名“未找到服务器”:从哪里开始?

诊断子域名“未找到服务器”:从哪里开始?

我遇到了一个奇怪的问题。我会快速完成设置:

DNS

以下是指向同一 IP 的 A 记录:

  • www.域名.com
  • 域名.com
  • 登录域名.com
  • dev.domain.com

我曾尝试对子域名使用 CNAME,但没有任何改变。

Apache 2 设置

我有两个虚拟主机:

<VirtualHost *:80>
  ServerName domain.com
  ServerAlias www.domain.com
  DocumentRoot /var/www/a
  [...log setup]
</VirtualHost>

<VirtualHost *:80>
  ServerName dev.domain.com
  DocumentRoot /var/www/b
  [...log setup]
</VirtualHost>

请注意,没有为 login.domain.com 设置主机。

问题

现在来谈谈问题。当我输入 dev.domain.com 时,系统立即显示未找到服务器。我尝试清除缓存等,并在多台计算机上尝试。www.domain.com 和 domain.com 均来自正确的目录。login.domain.com 因某种原因重定向到 domain.com。

上面的配置是 sites-enabled 下唯一的配置,但它也从 phpmyadmin 加载配置。

我想问的是,我该如何开始诊断问题?我该如何排除 DNS 问题?我尝试将 dev.domain.com 作为服务器别名添加到当前配置中 - 没有任何变化。我不知道为什么 login.domain.com 会重定向 - 据我所知,任何地方都没有通配符。

我从哪说起呢?

答案1

当有人查询一个不存在的域名时,该域名不存在的答复(NXDOMAIN)会缓存在中间 DNS 服务器中。

可能对于 dev.domain.com,否定答复已被缓存在某处。

要测试,请尝试

1. nslookup dev.domain.com (or dig dev.domain.com)
2. nslookup dev.domain.com ns1.domain.com (or dig @ns1.domain.com dev.domain.com)

如果是这种情况,您将在 1 中得到否定的答案,并在 2 中得到您的 IP。

除了等待 SOA 记录的最后一个字段中指定的时间(nslookup -type=SOA domain.com 或 dig domain.com SOA)之外,没有其他解决方案。为了防止将来再次发生这种情况,请在此处设置较低的值。

至于 login.domain.com - 它会返回到定义的第一个 VirtualHost。这是正常行为。

(我同意,如果你发布真实的域名,我们的生活会变得更好)

答案2

我想问的是,我该如何开始诊断问题?我该如何排除 DNS 问题?

  1. 如果 Apache 中有多个 virthost,则第一个 virthost 将作为所有主机请求的后备,这些主机请求未在 visthosts 列表中找到,但由于 DNS 配置(或其他方法)到达服务器,对于不存在的 virthost 来说,这显然是可以的
  2. 绝不,绝不如果出现与域相关的问题,则屏蔽域 - 这样你就可以保证迫使所有对答案感兴趣的人去猜测,而不是测试和调试。
  3. 对于我来说,“dev.domain.com”根据您的引用是完全有效的,但我更喜欢在现实生活中测试它
  4. 胡乱猜测 - dev.domain.com 可以以某种方式解析到错误的 IP,而无需 http-server。如何测试
    • nslookup dev.domain.com,验证 dev.domain.com 的 IP
    • traceroute IP-of-dev.domain.com 或 traceroute dev.domain.com
    • telnet dev.domain.com 80 并执行最短的 http 会话(如果已连接)或用于wget dev.domain.com/index.file监控与站点 dev 的 http 客户端的行为

相关内容