概述
本方法只針對使用阿里云解析DNS產品的域名,若您的域名托管在其他廠商的DNS服務器上,請聯系您的DNS服務器廠商處理。使用阿里云解析DNS服務器的域名,如果您設置的智能解析線路出現調度不準的情況,可以參考如下內容進行排查。
如果您不知道當前域名是否使用了阿里云解析DNS服務器,請參考如何獲知云解析DNS分配的DNS服務器。
1. 查看LocalDNS的出口IP
云解析DNS的智能解析調度是依據手機、PC、IoT等訪問終端所用的LocalDNS出口IP地址進行調度的,而非訪問終端的IP地址。可以參考如下方案獲取終端所用LocalDNS的出口IP:
聯系所在網絡的管理員,獲取詳細的DNS出口IP地址。
多執行幾次命令獲取IP地址
dig +short TXT whoami.ds.akahelp.net
(Linux操作系統) 或者nslookup -q=txt whoami.ds.akahelp.net
(Windows操作系統)。
使用命令撥測時,可能會獲取到如下幾個參數:
$ dig +short TXT whoami.ds.akahelp.net ok at 11:20:47#Linux操作系統執行命令。
"ns" "123.126.xx.xx" #ns是本地機器使用的DNS出口IP地址,可能是IPv4或IPv6。
"ecs" "120.52.xx.xx/32/24" #ecs(EDNS-client-subnet)記錄是查詢請求中攜帶的客戶端子網。
"ip" "123.126.xx.xx" #ip記錄由權威名稱服務器從ecs中選擇的客戶端代表IP地址,LocalDNS為了保護用戶隱私不攜帶客戶端真實IP。
Windows操作系統指令執行結果
Linux操作系統指令執行結果
獲取到LocalDNS的出口IP地址后,執行 dig 域名 @vip4.alidns.com +subnet=LocalDNS出口IP地址
,看獲取的結果是否符合您的預期。
這里的vip4.alidns.com
參數根據您實際的DNS服務器名稱進行替換,請參考如何獲知云解析DNS分配的DNS服務器。
2. 自定義線路下的解析記錄不生效
當使用自定義線路時,用戶會自定義解析請求來源IP地址段。但是自定義線路請填寫訪問終端所用LocalDNS出口IP地址段,不能填寫訪問終端的IP地址段。否則解析線路不會被命中,只能返回默認線路下的解析記錄。
LocalDNS的出口IP往往不止一個,為了使得自定義線路更加準確,請聯系所在網絡的管理員,獲取詳細DNS出口IP地址。
如果LocalDNS的出口IP地址比較少,可以多執行幾次命令獲取出口IP地址:dig +short TXT whoami.ds.akahelp.net(Linux操作系統) 或者 nslookup -q=txt whoami.ds.akahelp.net(Windows操作系統)
自定義不支持IPv6的地址,若LocalDNS出口IP為IPv6地址,自定義線路不會被命中,只能返回默認線路下的解析記錄。
3. 默認線路下的CNAME記錄緩存導致解析調度不準
前提條件
默認線路下配置了CNAME類型解析記錄;
非默認線路下配置了非CNAME類型解析記錄,例如A、AAAA、TXT、MX等記錄類型。
調度不準原因
當請求非默認線路下解析記錄時:
如果請求的解析記錄類型為A,且對應線路下設置的解析記錄中有AAAA記錄但沒有A記錄,則返回的解析記錄為空,不會造成解析調度不準確的情況。
如果請求的解析記錄類型為AAAA,且對應線路下設置的解析記錄中有A記錄但沒有AAAA記錄,則返回的解析記錄為空,不會造成解析調度不準確的情況。
如果請求的解析記錄類型為A,且對應線路下設置的解析記錄中沒有A和AAAA記錄,只有TXT、MX等記錄,則返回默認線路下CNAME類型的解析記錄,并緩存在LocalDNS中。導致解析調度不準。
如果請求的解析記錄類型為AAAA,且對應線路下設置的解析記錄中沒有A和AAAA記錄,只有TXT、MX等記錄,則返回默認線路下CNAME類型的解析記錄,并緩存在LocalDNS中。導致解析調度不準。
如果請求的解析記錄為MX、TXT等類型且對應線路下并沒有配置對應類型的解析記錄,則返回默認線路下CNAME類型的解析記錄,并緩存在LocalDNS中。由于CNAME類型的解析記錄具有最高優先級,在TTL到期時間內,即使發起了A或AAAA查詢請求(非默認線路下配置了A或AAAA類型的解析記錄),但域名查詢請求均會被緩存命中,返回默認線路下的CNAME解析記錄。造成調度不準的情況。
解決方案
將非默認線路下的A和AAAA類型的解析記錄加一層CNAME記錄類型的解析記錄,以域名dns-example.top
為例:先將test.dns-example.top
通過A和AAAA記錄類型解析到IPv4和IPv6的地址,再將 中國移動 線路下的業務域名通過CNAME記錄類型解析到test.dns-example.top
。
test.dns-example.top
僅作為示例,實際配置時根據您的業務需求選擇其他未配置解析記錄的二級域名。務必先添加A和AAAA解析記錄,再添加CNAME解析記錄,否則可能會導致解析中斷。
解析設置變更前:
解析設置變更后:
默認線路和非默認線路下均是CNAME記錄類型,優先級一樣。當請求非默認線路下解析記錄為MX、TXT等類型且對應線路下并沒有配置對應類型的解析記錄時,則返回的解析記錄為空,不會導致緩存污染。