
假設我正在嘗試尋找 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 批次檔選項之外)。每個查詢都可以提供自己的一組標誌、選項和查詢選項。
在這種情況下,每個查詢參數代表上述命令列語法中的單一查詢。每個都包含任何標準選項和標誌、要尋找的名稱、可選查詢類型和類別以及應套用於該查詢的任何查詢選項。