http://www.jianshu.com/p/8edfdfa20b29html
自2016年6月1日起,蘋果要求全部提交App Store的iOS應用必須支持IPv6-only環境,背景也是衆所周知的,IPv4地址已基本分配完畢,同時IPv6比IPv4也更加高效,向IPv6過渡是大勢所趨。ios
然而在對IPv6進行兼容適配過程當中,不少開發者在本地環境測試經過,卻在App Store審覈時被拒,這種狀況下能夠首先排查是否由DNS解析失敗引發,那麼如何驗證DNS服務器是否正確響應了IPv6地址的解析請求呢?搭建好DNS64環境後,能夠經過如下命令查詢:服務器
$dig dnspod.cn aaaa網絡
驗證DNS解析的緣由是,App訪問網絡的第一步就是進行DNS解析,App Store審覈時會先訪問DNS服務器,得到iOS應用服務器的IPv6地址,再進行訪問,若是這時DNS服務器沒法成功解析到IPv6地址,即便在本地搭建的IPv6-only環境中測試成功,仍然會出如今提交App Store審覈時被拒的狀況,因此選擇一個穩定性、兼容性俱佳的域名解析服務相當重要!app
通過全面的測試和灰度發佈,騰訊雲DNSPod域名解析已全面支持App Store IPv6-only網絡環境,已有成功經過審覈案例,而且在境內外均驗證解析成功測試
附: 詳細原理分析ui
首先須要明確一點,在App Store審覈APP的IPv6-only的環境下也是能夠正常訪問IPv4的服務的,只是首先由DNS64將解析出來的IPv4地址轉成兼容的IPv6地址,而後訪問IPv4服務時經過NAT64網關對IPv4和IPv6進行NAT,並不須要客戶有實際的IPv6服務。htm
客戶端在向DNS64請求一個域名的IPv6地址時,DNS64會向域名的受權DNS請求IPv6地址,若是存在IPv6地址,則直接給客戶端返回IPv6地址,若是不存在IPv6地址,則向受權請求IPv4地址,並將返回的IPv4地址轉換爲兼容的IPv6地址。blog
以Google DNS64爲例說明轉換規則,分別請求dnspod.cn的A記錄(IPv4地址)和AAAA記錄(IPv6地址):dns
從解析結果能夠看出IPv4地址對應的IPv6地址,後32位的3b25:7465實際上就是IPv4地址的16進製表示59=0x3b,37=0x25,116=0x74,101=0x65,明白該規則後也能夠本身進行IPv4向兼容的IPv6地址的轉換,如119.29.29.29的兼容IPv6地址爲64:ff9b::771d:1d1d,其中::表示爲全0。
在IPv6-only環境中訪問IPv4服務是須要經過NAT64進行網絡地址轉換