我可以使用IP地址作为名称服务器,而不是创建自定义名称服务器

时间:2012-01-23 17:19:31

标签: nameservers

我刚买了一台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(see the picture here
(如果我输入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:我的问题不是如何创建名称服务器。我可以做到。)

2 个答案:

答案 0 :(得分:17)

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

2)127.0.0.1是localhost,不是可公开访问的地址。恭敬地,如果你不明白这一点,你应该回到共享主机......你最终会花更多时间学习运行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),联系了权威名称服务器,请求www.example.com的IP。权威名称服务器检查其记录并返回告诉它的IP。也就是说,您将使用您的托管服务提供商的界面(可能是您登录的网页...联系他们寻求帮助)来管理example.com的子域名,例如www.example.com。

如果您不使用托管DNS,则必须运行自己的DNS服务器(例如BIND或djbdns)。这引入了一系列超出您问题范围的其他并发症。请使用托管DNS,让您的提供商处理这些问题。

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

总结如下:

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

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

这样清楚了吗?

答案 1 :(得分:7)

我在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格式,没有数字顶级域 - 即{{1 }}目前不是有效的TLD。)

回到原始问题,您是否可以将IP地址用作名称服务器名称。即使您选择忽略约定,也不可能将IP设置为名称服务器名称,因为您的注册商不会允许它。如果您拥有abc123.com并且登录到注册商以注册域名服务器名称,则顶级(“。com”)和第二个(“abc123”)级别域将被锁定。您只能输入子级域的值。所以你最终得到的是.42作为你的名字服务器名称(也就是说,如果你的注册商​​允许你拥有那么多点)。