有一种方法可以检索有关域(和子域)的DNS记录的所有(TXT)条目吗?
我的目标是验证我的域名配置:www.rosposhop.com 我为某些子域正确设置了多个SPF和DKIM记录
rosposhop.com
md.rosposhop.com (SPF+DKIM)
mg.rosposhop.com (SPF+DKIM)
(所以我总共有5个TXT项目)
现在,如果我问dig
或host -a
,我只得到第一个TXT项目,而我应该有完整的TXT项目列表。
我错了吗?
$ dig rosposhop.com TXT
; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> rosposhop.com TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14774
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;rosposhop.com. IN TXT
;; ANSWER SECTION:
rosposhop.com. 2362 IN TXT "google-site-verification=udcP944OqB1PldDn1ML"
;; Query time: 65 msec
;; SERVER: ***********
;; WHEN: Sat Dec 27 09:10:43 CET 2014
;; MSG SIZE rcvd: 123
顺便说一句,如果我想要一个SUBdomain,现在我只得到了第一个条目:
$ dig md.rosposhop.com TXT
返回:
;; ANSWER SECTION:
md.rosposhop.com. 2223 IN TXT "v=spf1 include:spf.man*******"
我再也没有得到DKIM信息。 它是一个安全/权限主题? 抱歉我的DNS无知。
感谢 乔治
答案 0 :(得分:5)
制作单个DNS查询以一举获取所有信息的方法是错误的。它假定单个区域的数据是a)静态的,b)由单个名称服务器管理。 DNS对区域数据没有这样的限制。
SPF和DKIM(以及DMARC,如果你想在混合中抛出它)都使用特定域上的TXT记录。无需获取域及其子域的所有TXT记录即可查看相关配置。
如果您想获取SPF和DKIM信息,只需查询相应的域即可。假设您正在md.rosposhop.com
和mg.rosposhop.com
上执行Return-Path域和DKIM签名,那么您应该对TXT记录感兴趣
md.rosposhop.com
- SPF mg.rosposhop.com
- SPF (selector)._domainkey.md.rosposhop.com
- DKIM (selector)._domainkey.mg.rosposhop.com
- DKIM 其中(selector)是您用于该DKIM记录的选择器。每个md.rosposhop.com
和mg.rosposhop.com
域名可能有多个选择器。其他域名上的TXT记录无关紧要。
答案 1 :(得分:2)
要获取域的所有记录,请使用AXFR
请求执行区域传输。必须将其发送到域的一个授权服务器:
dig rosposhop.com axfr @ns52.domaincontrol.com
但是,出于安全原因,大多数DNS服务器都会限制区域传输。通常,只有主服务器允许区域传输,并且只允许已知的从属服务器。 domaincontrol.com
服务器不允许进行区域转移,因此如果您尝试此操作,则会收到错误。
答案 2 :(得分:0)
在某些情况下,您有多个具有相同DNS条目的TXT条目。例如,对通配符和基本DNS名称进行letsencrypt密钥验证时,需要两个_acme_challenge TXT条目,它们具有相同域名的不同密钥,如此处所述:https://community.letsencrypt.org/t/multiple-challenges-when-requesting-wildcard-certificate-for-3-domains/66783。