CNAME:如何设置 DNS 以根据网站返回 A 记录?

CNAME:如何设置 DNS 以根据网站返回 A 记录?

我对设置服务器有疑问。

假设我有多个网站需要托管。

foo.com
bar.com
hello.com

我可能有或没有专门为他们设置服务器。假设任意配置如下(使用相应的域名注册商)

foo.com  A  1.1.1.1
bar.com  A  1.1.1.2
hello.com A 1.1.1.1

我希望为每个网站提供一个通用域名而不是 IP(因为 IP 可以改变)。

类似下面的内容。

foo.com CNAME service.com
bar.com CNAME service.com
hello.com CNAME service.com

据我目前对 DNS 的了解,

查询

  1. 我想我需要在 service.com 设置一个 DNS 服务器来返回适当的记录。
    • 它是否正确?
  2. 如果是的话,如果域名由域名注册商持有怎么办?例如 dreamhost。那么如何处理?
    • 因为它们会响应 DNS 查询,所以我该如何插入该间接层呢?

从客户端角度实现透明的服务器迁移

最终我想要实现的是,如果有一天我要从不同的服务器托管 hello.com,我只需要在服务器上的 1 个地方进行修改,而不是告诉客户端更改他们的 DNS 配置。

附加信息:

我使用 rackspace,他们还有一种称为反向 DNS 的东西。这有用吗?

我注意到对于 google Apps - 我们总是指向 ghs.google.com,它们将请求转发到适当的 IP。所以这一定是可能的,但我就是不知道如何实现它。

答案1

您需要为每个网站设置单独的 cname。例如:

foot.com CNAME foo.com.service.com
bar.com CNAME bar.com.service.com
hello.com CNAME hello.com.service.com

答案2

为您拥有的域设置 DNS
在 Dreamhost 上,确保名称服务器设置为 Dreamhost 名称服务器(默认情况下应该是这样)。然后用它们设置 DNS(应该有一个控制面板来设置域的 DNS 记录)。

一些信息
CNAME 仅指向主机名;这些主机名必须配置 IP 地址(即,必须具有将其指向 IP 的 A 记录)。

如果您有几个主机名需要映射到同一个 IP,那么可以更轻松地设置一个主机名(A)指向该 IP,然后将所有其他主机名 CNAME 到该主机名(A)。

如果您有几个主机名需要指向不同的 IP,那么 CNAME 就没什么用了。

假设您有 foo.com、bar.com、hello.com 和 service.com,并且您想将它们全部指向同一 IP(注意 @ceejayoz 关于根域和 CNAMES 的评论)。您需要设置一个 A 记录以将主机名(例如 service.com)指向 IP,然后为 www.bar.com、www.foo.com 和 www.hello.com 设置 CNAME 以指向 service.com。

这将要求您有权访问 foo.com、bar.com、hello.com 和 service.com 的 DNS 记录(因此,如果您已使用 Dreamhost 注册了所有这些域名,则需要将它们全部配置为使用 Dreamhost 名称服务器,然后为每个域名设置 DNS 记录。

对你的问题的具体回答
不过,您提到过,您希望能够修改一个域的 IP 地址而不影响另一个域;在这种情况下,您需要为每个域名设置一个 CNAME。或者,您可以使用反向代理(尽管这会增加额外的复杂性)。使用反向代理,您可以让所有域使用相同的 IP,无论它们位于哪个服务器上(反向代理将根据请求的域将请求转发到正确的服务器上)。这可能是 Google Apps 正在做的事情。

反向 DNS 对此没有帮助,但很有用(尤其是对于电子邮件传递)。我现在不想深入讨论,但你应该读一读!

答案3

请记住,您不能将 CNAME 用于“example.com”等二级域名,因为它们必须具有 SOA RR。

答案4

每个服务器都需要一个 A 记录。(使用标准文档数据。)

host1.example.com.   A   192.0.32.11
host2.example.com.   A   192.0.32.12

然后,您可以使用 CNAME 记录将服务器指向适当的服务器。我根据您的地址拆分主机。

www.foo.com.    CNAME  host1.example.com.
www.bar.com.    CNAME  host2.example.com.
www.hello.com.  CNAME  host1.example.com.

在您的服务器上,使用 Web 服务器中的虚拟主机定义来定义可用的网站。定义未使用的虚拟主机不会产生重大损失,因此您可以在多台服务器上设置网站,但只为其中一台服务器提供 DNS 记录。

如果您要处理像 foo.com 这样需要多个 DNS 记录的域名,则需要使用 A 记录。有几种方法可以做到这一点。拥有一个与为域名提供服务的主机具有相同地址的 A 记录。

foo.com         A   192.0.32.11
bar.com         A   192.0.32.12
hello.com       A   192.0.32.11

另一种方法是使用服务器将域名重定向到其www子域名。这可以与上面的一个或多个主机相同。

foo.com.        A   192.0.32.5
bar.com.        A   192.0.32.5
hello.com.      A   192.0.32.5

认真考虑为 foo.bar 等域名设置 MX 记录。还请考虑为域名的两个版本设置 SPF。如果您的邮件服务器是,mail.example.net这些记录应该可以工作(SPF 记录是可选的,可能不被旧 DNS 服务器接受。):

foo.bar.        MX   10 mail.example.net.
foo.bar.        TXT  'v=spf1 mx -all'
foo.bar.        SPF  'v=spf1 mx -all'
www.foo.bar.    TXT  'v=spf1 -all'
www.foo.bar.    SPF  'v=spf1 -all'

上述 SPF 记录表明,只有 MX 会为域发送电子邮件foo.bar,任何邮件都不应包含域www.foo.bar。对于不会发送电子邮件的域,请从 TXT 和 SPF 记录中删除 mx。请参阅http://www.openspf.org或者我的文章防晒指数了解更多详情。

请记住,域数据是缓存的。移动静态网站时,请将网站保留在旧主机上,直到流量停止到达。移动包含动态内容的网站更加困难。

相关内容