16

我刚刚购买了一个 VPS 来托管我的网站。
在从共享主机迁移到 VPS 期间,我遇到的问题之一是设置私有名称服务器。
我已指示使用我提供的 IP 创建两个私有名称服务器。

示例:ns1.mydomain.com 指向 127.0.0.1(比如说)
ns2.mydomain.com 指向 127.0.0.1

我的疑问是,为什么不允许我使用我的 IP 作为名称服务器,而不是创建这样的名称服务器

我正在尝试在指示输入名称服务器的字段中输入(我的网站的)IP 地址。(

输入您的名称服务器:

名称服务器 1 :- 123.4.5.6
名称服务器 2 :- 123.4.5.6 (请参见此处的图片
(如果我输入 ns1.mydomain.com(自定义名称服务器),它也指向相同的 IP 123.4.5.6)

如果 'X' 等于 'Y',为什么我不能使用相同的 'Y' 而不是 'X'
如果 ns1.domain.com 使用 IP 123.4.5.6 ,为什么我不能填写 123.4.5.6 而不是(名称服务器)ns1 .domain.com?

或者,如果可以通过 IP 和 domain.com(其中 domain.com = IP)访问他的站点,为什么这不适用于名称服务器(其中 ns1.domain.com = 某个 IP。因此我可以填充该 IP ns1.domain.com)

为什么这是不可能的?

(PS:我的问题不是如何创建名称服务器。我可以做到。)

4

2 回答 2

20

1)像这样的问题真的应该在ServerFault上。

2) 127.0.0.1 是本地主机,不是可公开访问的地址。尊敬的,如果你不明白这一点,你应该回到共享主机......你最终将花费更多的时间来学习运行 VPS,而不是让你的网站正常工作。(如果您只是使用 127.0.0.1 作为占位符,那么这不适用。)

3) 大多数没有复杂需求的人可能应该选择使用他们的域名注册商的 DNS 服务器(如果可用)(例如NameCheap)。如果您的注册商不提供免费 DNS,您的 VPS 提供商几乎肯定会提供(我知道 Linode 和 Rackspace Cloud 都提供)。无论您在哪里托管 DNS,您都需要在配置中使用它们的名称服务器,而不是您发明的地址。(您实际上不会使用 djbdns 或 BIND 运行自己的名称服务器,对吗?)

编辑:在问题澄清后尝试解释 DNS。

你的问题仍然不是很清楚,我认为这是因为我们没有使用相同的术语。DNS 是一个复杂的系统,您必须非常精确。

让我尝试解释如何根据您的情况安排 DNS 层次结构。

1) 您注册了一个域名 example.com。它位于 .com 顶级域 (TLD) 中。每个 TLD 都有一个管理该 TLD 的根名称服务器的实体。对于 .com,这是 Verisign。当有人去查找 www.example.com 时,他们首先会与 TLD 的根名称服务器(通过一个与此无关的过程)交谈。

2) 根名称服务器返回域 (example.com)的权威名称服务器。这就是我相信您正在尝试设置的内容。根据 DNS 规范,权威名称服务器由名称给出,而不是 IP。由于您(希望)没有尝试运行自己的权威名称服务器,因此您应该向您的注册商(反过来告诉 TLD 根名称服务器)提供您的托管公司指定的名称服务器;这些是在我在评论中给你的链接中提供的(ns1.ixwebhosting.com 等)。 这些需要是名称而不是 IP 的原因是您的托管公司可能需要稍后移动 IP 地址。 如果您被允许输入一个 IP,并且他们切换了 IP,那么您的记录就会过期。通过输入名称,DNS 系统可以将权威名称服务器名称正确解析为 IP。

3) 对 www.example.com 感兴趣的客户端,在获得了 example.com 的权威名称服务器(即 ns1.ixwebhosting.com)的名称(并解析了 IP)后,联系权威名称服务器并请求 IP对于 www.example.com。权威名称服务器检查其记录并返回告诉它的 IP。也就是说,您将使用托管服务提供商的界面(可能是您登录的网页...联系他们寻求帮助)来管理 example.com 的子域,例如 www.example.com。

如果您不使用托管 DNS,则必须运行自己的 DNS 服务器(例如 BIND 或 djbdns)。这会引入一整套超出您问题范围的其他复杂情况。请只使用托管 DNS,让您的提供商处理这些问题。

你会注意到我在这里没有提到 ns1.example.com。如果您正在运行自己的 DNS 服务器,您只需要处理这些记录,而您可能不应该这样做。

总而言之:

1)告诉您的注册商您的域使用您的托管服务提供商的 DNS 服务器(来自我给您的链接)。

2) 告诉您的托管服务提供商使用您的 VPS 的 IP 地址作为您域的实际主机名。

这能把事情弄清楚吗?

于 2012-01-23T17:35:45.567 回答
10

我在 serverfault 上有一个与此类似的问题,但它被否决了,但没有人愿意解释为什么它不能完成。在研究了网络寻找 DNS 原则之后,这是我关于为什么不能用 IP 代替名称服务器的答案。它很长,但它也有助于我理解约定。

假设您注册了域abc123.com,“com”是顶级域,“abc123”部分是二级域。

当网络用户想要访问时abc123.com,他在abc123.com他的网络浏览器中输入。然后,浏览器会联系 DNS 解析器(例如 google DNS、level3 或 opendns——充当缓存)以查询 DNS 解析器是否具有先前保存的 abc123.com 的 IP 地址。如果之前有人尝试abc123.com通过此解析器进行访问,则解析器应该拥有 abc123.com 域名的 IP 地址,并将 IP 地址返回给浏览器。但是,如果没有查询过 abc123.com 的 DNS 解析器,则解析器没有缓存 IP。然后,解析器需要联系根 DNS 服务器以获取该信息。

根 DNS 服务器的工作方式解释了为什么不能用 IP 代替传统的字母数字名称服务器名称。根 DNS 服务器从域注册商处获取其信息。当您注册 abc123.com 域时,abc123.com 被根 DNS 服务器记录;连同名称服务器/IP(可选)。

我认为为什么名称服务器名称必须遵循 FQDN(完全限定域名)格式是因为根 DNS 服务器的设计方式。例如,对于ns1.mynameserver.com名称服务器名称,猜测是“mynameserver.com”必须存在于根 DNS 服务器中,才能从逻辑上说它ns1.mynameserver.com是有效的。如果mynameserver.com在记录中不存在,那么ns1.mynameserver.com一定是无效的。IP 作为名称服务器名称也是如此,根 DNS 服务器永远不能将您的 IP 记录为有效域名(因为 IP 不是有效的 FQDN 格式,没有数字顶级域 - 即.42当前不是一个有效的 TLD)。

回到最初的问题,即是否可以使用 IP 地址作为名称服务器名称。即使您选择忽略约定,也无法将 IP 设置为名称服务器名称,因为您的注册商不允许这样做。如果您拥有 abc123.com 并登录您的注册商注册域名服务器名称,则顶级 (".com") 和二级 ("abc123") 级域将被锁定。您只能输入子级别域的值。因此,您最终可能会得到12.23.45.33.abc123.com 您的名称服务器名称(也就是说,如果您的注册商允许您拥有那么多点)。

于 2012-04-10T06:20:06.020 回答