DNS txt 记录将子域名指向其他域名

DNS txt 记录将子域名指向其他域名

我在 gandi.net 上有一个 SimpleHosting 实例,与 Gandi 的一个域名相连,mygandidomain.org还有另一个在其他地方注册的域名myrootdomain.name

我成功地在我myrootdomain.name的 DNS 记录中添加了一个 CNAME 条目,让一个子域subdomain.myrootdomain.name指向我在 Gandi 的 SimpleHosting 实例,即:

subdomain 10800 IN CNAME mygandidomain.org.

现在当我使用subdomain.myrootdomain.nameGoogle Chrome 时,我收到一条错误消息:“错误 404 Vhost 未知”。此错误消息来自 Gandi,而不是我的其他域名注册商。因此我得出结论,CNAME 条目已生效。

但是,为了解决这个错误,我事后才阅读说明。Gandi 给出的说明告诉我应该执行以下操作:

Gandi 的说明说我应该将其指向gpaas12.dc2.gandi.net.,即

添加 CNAME 行

subdomain 10800 IN CNAME gpaas12.dc2.gandi.net.

代替

subdomain 10800 IN CNAME mygandidomain.org.

... 并且,为了授权自己作为域名所有者,我应该删除其中任何一个吗?我应该保留哪一个,以符合 Gandi 的指示:

@ 10800 IN TXT“test=s0m3r4nD0mG!bB3ri$hStr1nG” 我还应该添加一个 TXT 条目:

@ 10800 IN TXT "test=s0m3r4nD0mG!bB3ri$hStr1nG"

使用 Gandi 提供的一些乱码随机字符串。

所以我这样做了。由于我无法直接输入这些行,而必须使用一些输入 Web 界面,因此我输入了一次带引号和一次不带引号的 TXT 条目值,并且针对子域(输入subdomain.myrootdomain.name.到“host”输入字段)和根域(输入myrootdomain.name.到“host”输入字段)都输入了引号,只是为了确保万无一失,因为我不允许在该输入字段中输入“@”或“*”。

我将所有添加和更改的 DNS 条目的 TTL 都改为 300。所以它们早就应该更新了。但挖掘时仍然会发生以下情况:

$ dig txt subdomain.myrootdomain.name

; <<>> DiG 9.10.3-P4-Ubuntu <<>> txt subdomain.myrootdomain.name
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50813
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;subdomain.myrootdomain.name.   IN  TXT

;; ANSWER SECTION:
subdomain.myrootdomain.name. 3599   IN  CNAME   mygandidomain.org
mygandidomain.org.  10799   IN  TXT "v=spf1 include:_mailcust.gandi.net ?all"

;; Query time: 52 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Wed Jul 11 05:42:59 CEST 2018
;; MSG SIZE  rcvd: 85

因此 CNAME 仍然指向mygandidomain.org,看起来,就像我在一开始设置的那样(在将其更改为 之前gpaas12.dc2.gandi.net.

我不知道这是否不好,因为如果我理解正确的话,mygandidomain.org反过来应该指向托管实例gpaas12.dc2.gandi.net。(而且我实际上可以通过访问我的 Gandi 托管网站mygandidomain.org

subdomain.myrootdomain.name不过,我认为我现在应该可以看到我添加的任何 TXT 条目。

如果我理解正确的话:

;; QUESTION SECTION:
;subdomain.myrootdomain.name.   IN  TXT

...这意味着有一个 TXT 条目subdomain.myrootdomain.name但是是空的?

看起来这里的 Gandi 域的 DNS 条目中只有一个非空的 TXT 条目:

;; ANSWER SECTION:
subdomain.myrootdomain.name. 3599   IN  CNAME   mygandidomain.org
mygandidomain.org.  10799   IN  TXT "v=spf1 include:_mailcust.gandi.net ?all"

...,这与我应该添加的 TXT 条目无关myrootdomain.name

我确实添加了具有提供的字符串值的指定 TXT 条目,一次带引号,一次不带引号,包括myrootdomain.namesubdomain.myrootdomain.name

对于挖掘的 TXT 条目,结果相同myrootdomain.name(我认为 TXT 条目应该在这里,按照 Gandi 的说明):

;; QUESTION SECTION:
;myrootdomain.name.     IN  TXT

只有一个空的 TXT 条目?现在更改应该还没生效吧?

我还多次刷新了 Google 公共 DNS (8.8.8.8) 中的 CNAME 和 TXT 条目,通过以下界面https://developers.google.com/speed/public-dns/cache,对于myrootdomain.name和都适用subdomain.myrootdomain.name。我在此机器上使用 Google DNS 服务器作为主 DNS。

当我使用 Google Chrome 访问 时subdomain.myrootdomain.name,仍然会收到错误“Error 404 Vhost unknown。” - 从 DNS 挖掘结果来看,这可能是意料之中的。此错误消息来自 Gandi,因此至少 CNAME(无论是 togpaas12.dc2.gandi.net还是 to mygandidomain.org)已在那里生效。我猜只有 TXT 条目(应该有助于授权域所有权)仍未被识别。

然而,奇怪的是,当我使用subdomain.myrootdomain.nameFirefox 时,我仍然会收到非 Gandi 域名提供商发出的旧错误消息:“此地址下未配置任何网站”。

我的 TXT 条目输入有问题吗?正如我所说,我添加了 both subdomain.myrootdomain.name(这可能不符合 Gandi 的说明)和 to myrootdomain.name(这可能符合 Gandi 的说明),只是因为我无法输入“@”或“*”,并且想确保我包含了预期的条目。我还添加了它们两次,一次包含引号,一次不包含引号,假设 Gandi 只会选择正确的条目。

我应该删除其中任何一个吗?我应该保留哪一个,以符合 Gandi 的指示:

@ 10800 IN TXT "test=s0m3r4nD0mG!bB3ri$hStr1nG"

我看不到我的输入实际上是如何转换成这些文本行的。

$ dig ....但到目前为止,它们似乎都没有在执行时出现。我在执行时不应该看到它们出现$ dig ...吗?正如我所说,TTL 是 300(最初更长),我执行了 Google DNS 刷新操作。

感谢您提供的关于如何解释此处发生的事情的任何提示和建议。

编辑:现在可以正常工作了。不太确定,但我的直觉是,我为 添加的额外 TXT 条目subdomain.mydomain.name.与 的 CNAME 有冲突subdomain.mydomain.name.。手册上说只为 和 添加 TXT,mydomain.name.而不为subdomain.mydomain.name.,但正如我所解释的,我“只是为了确保万无一失”都添加了。我不太确定这是否起了作用,但这是我最后更改的,现在它可以正常工作了。

答案1

这个相当长的问题是 Server Fault 上多次出现的常见误解的集合。此外,像这样的问题通常会得到更详细的答案,我们可以用实际的域进行测试。我希望你在阅读完这些内容后能更好地理解这里发生的事情:

  • 当我使用subdomain.myrootdomain.nameGoogle Chrome 时,仍然收到错误“错误 404 Vhost 未知。” - 从 DNS 挖掘结果来看,这可能是意料之中的。

    这与 DNS 无关:您看到 Gandi 的页面表明 DNS 已指向他们的服务器,但他们的 Web 服务器未配置为识别它。要链接域名,您首先需要从实例控制面板向您的实例添加虚拟主机

    第二步不在 Gandi 的域名CNAME是在子域名中添加 并在域名顶点处添加TXT@ IN TXT相当于myrootdomain.name. IN TXT。正如您从手册中看到的那样,此TXT记录的形式似乎是subdomain=hash。如果您的给定记录实际上有test=s0m3r4nD0mG!bB3ri$hStr1n,则可能是test.myrootdomain.name而不是subdomain.myrootdomain.name。在这种情况下,您需要从头开始添加您计划使用的确切子域名。

  • ;; QUESTION SECTION:
    ;subdomain.myrootdomain.name.   IN  TXT
    

    ...这意味着 subdomain.myrootdomain.name 有一个 TXT 条目,但是它是空的?

    不,这是问题部分显示您要查找的内容。它不是空的,只是没有结果。结果位于答案部分. 而且它不为空:

    ;; ANSWER SECTION:
    subdomain.myrootdomain.name. 3599   IN  CNAME   mygandidomain.org
    mygandidomain.org.  10799   IN  TXT "v=spf1 include:_mailcust.gandi.net ?all"
    
  • 我将所有添加和更改的 DNS 条目的 TTL 更改为 300。所以它们应该早就更新了。

    查询缓存时间为TTL秒。如果您之后更改 TTL 时间,则不会影响已缓存的查询。它最初缓存时间为10800秒,即 3 小时,其中这3599秒是上次编辑您的问题时剩余的。

    如果你需要检查记录是否在你的权威性名称服务器,您必须直接对它们执行查询(用NS您的实际域名替换):

    dig subdomain.myrootdomain.name A @authoritative1.example.com
    dig myrootdomain.name TXT @authoritative1.example.com
    
  • 如果你TXT在已经有记录的子域上添加记录CNAME,则它不起作用是正常的:它会显示TXT来自正典名称,就像您的结果一样。如果主机名有记录CNAME,则它不能有其他类型的资源记录。想知道为什么吗?我有一个回答,AndrewB 甚至更详细地介绍了典型问题

相关内容