概述
本方法只針對使用阿里雲解析DNS產品的網域名稱,若您的網域名稱託管在其他廠商的DNS伺服器上,請聯絡您的DNS伺服器廠商處理。使用阿里雲解析DNS伺服器的網域名稱,如果您設定的智能解析線路出現調度不準的情況,可以參考如下內容進行排查。
如果您不知道當前網域名稱是否使用了阿里雲解析DNS伺服器,請參考如何獲知Alibaba Cloud DNS分配的DNS伺服器。
1. 查看LocalDNS的出口IP
Alibaba Cloud 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伺服器名稱進行替換,請參考如何獲知Alibaba Cloud 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等類型且對應線路下並沒有配置對應類型的解析記錄時,則返回的解析記錄為空白,不會導致緩衝汙染。