假设我正在尝试查找 IP mail.yahoo.com
,gmail.com
并且mail.google.com
如果我执行:
dig @8.8.8.8 +nocomments +noquestion \
+noauthority +noadditional +nostats +nocmd \
gmail.com mail.yahoo.com mail.google.com
我得到:
gmail.com. 299 IN A 173.194.123.21
gmail.com. 299 IN A 173.194.123.22
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
mail.google.com. 0 IN CNAME googlemail.l.google.com.
googlemail.l.google.com. 243 IN A 173.194.123.21
googlemail.l.google.com. 243 IN A 173.194.123.22
我能否确保如果我看到一条CNAME
记录,A
则与其对应的记录不会出现在CNAME
对应于另一台机器或A
其他主机名的记录之前?
例如,让我重点关注一下mail.yahoo.com
(我只想要 IP 或 IPmail.yahoo.com
解析为):
这是输出:
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
我正在寻找的主机名 ( mail.yahoo.com
) 是第一个条目的第一列。然后是一堆CNAMES
我并不关心的内容,然后是一条A
包含实际 IP 的记录(我确实关心)。
是否有可能使CNAMES
或A
记录乱序?例如:
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net. #(!)BAD
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net. #(!)BAD
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
或者甚至更糟(实际A
记录在上面):
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
mail.yahoo.com. 0 IN CNAME login.yahoo.com.
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
或者更糟糕的情况(在多分辨率dig
执行中,如帖子顶部所示):
ats.member.g02.yahoodns.net. 0 IN CNAME any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net. 17 IN A 98.139.21.169
mail.google.com. 0 IN CNAME googlemail.l.google.com. # This one I want
gmail.com. 299 IN A 173.194.123.21 # This one I want
gmail.com. 299 IN A 173.194.123.22 # This one I want
mail.yahoo.com. 0 IN CNAME login.yahoo.com. # This one I want
login.yahoo.com. 0 IN CNAME ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com. 0 IN CNAME ats.member.g02.yahoodns.net.
googlemail.l.google.com. 243 IN A 173.194.123.21
googlemail.l.google.com. 243 IN A 173.194.123.22
先感谢您。
答案1
不 - 返回结果的顺序取决于 DNS 服务器,您无法控制这一点,因此我不会依赖特定 DNS 服务器的顺序。
我确实相信,而且我迄今为止的测试也证实了这一点,实际查询是按顺序完成的,在您的情况下,首先是 google.com,最后是 mail.google.com - 这是因为 dig 将按照您在命令行上指定的顺序运行查询。
由于命令行语法的设置方式,顺序很重要。因此我的答案是。如果它不按照指定的顺序处理它们,任何非全局修饰符都会被搞砸。
从手册页中:
dig 的 BIND 9 实现支持在命令行上指定多个查询(除了支持 -f 批处理文件选项之外)。每个查询都可以使用自己的一组标志、选项和查询选项。
在这种情况下,每个查询参数都代表上述命令行语法中的一个单独查询。每个查询参数都由任何标准选项和标志、要查找的名称、可选查询类型和类以及应应用于该查询的任何查询选项组成。