我刚刚读完这个问题,在浏览答案时,我随机尝试了一些东西,发现http://admin.to
和http://admin.to.
指向不同的位置。两者都返回 403 错误,但.to.
域重定向到完全不同的服务器。
这怎么可能?我认为两者在技术上应该是相同的,那么这里发生了什么?
答案1
实际上,DNS条目是相同的(89.107.186.40),正如预期的那样。似乎不同之处在于虚拟主机。很可能,服务器为每个服务器名称都有一个虚拟主机,为其中一个指定最后一个点,而不为另一个指定最后一个点。我认为这更像是Apache问题,而不是DNS问题。
正如其他人所说,admin.to
和之间的区别admin.to.
在于第二个是一个完全限定名称,因此您的解析器不会尝试通过将您的 DNSsearch
参数附加到它来解析它,而第一个将使用参数进行尝试search
。
举个例子,我输入raphink.info
了我的搜索路径/etc/resolv.conf
:
$ grep '^search' /etc/resolv.conf
search raphink.info
$ getent hosts www
74.125.77.121 raphink.info www.raphink.info
$ getent hosts www.
第一个请求www
没有尾随的点,因此解析器尝试使用搜索路径来解析它。第二个请求是完全限定名称,因为它有一个尾随的点,因此不会尝试搜索路径,解析不会产生任何结果。
正如我所说,在这种情况下,你的问题看起来更像是 HTTP 服务器的问题而不是 DNS 问题,因为我在我自己的机器上得到了相同的结果:
$ getent hosts admin.to
89.107.186.40 admin.to
$ getent hosts admin.to.
89.107.186.40 admin.to
答案2
这似乎是主机头问题:
就 DNS 而言,您是正确的:带或不带尾随的.
域名都会解析为89.107.186.40
,但驻留在那里的服务器(反转为名称serverdomain.org
)在解析主机头时无法理解这一点。
答案3
尾随的点表示它是一个完全限定名称,DNS 解析器将以不同的方式处理它。
答案4
我的理解是,末尾的 . 表示它是一个完全合格域名。这意味着这是将要查找的确切主机名。
如果您省略末尾的 .,它将首先搜索您的域。例如,如果您访问 admin.to,而您恰好属于某个域 somedomain.com,那么它将首先查找 admin.to.somedomain.com。如果解析成功,那么它将转到该位置,而不是您想要的域 admin.to。