背景
2016年初起,蘋果要求上架iOS App Store的應用要相容IPv6。這個決定虐慘了中國大陸的App開發者。随便打開一個開發者論壇,都可以看到各種關于App如何通過蘋果IPv6稽核的求助貼。
針對這一問題,下面将為大家推薦阿裡雲産品級的解決方案,希望可以助力開發者快速完成蘋果AppStore稽核。
蘋果Store的APP IPv6稽核機制
在開始産品級的解決方案前,再老生常談的介紹一下蘋果AppStore的稽核機制。
蘋果AppStore在美國的IPv6-only環境下對APP進行通路。如果APP伺服器支援IPv6,則可通過IPv6網絡直接通路。如果APP伺服器不支援IPv6,則IPv4 APP伺服器的IPv4位址将通過DNS64合成為IPv6位址傳回給美國的IPv6-only用戶端,IPv6-only用戶端再通過NAT64網關将通路資料包中的目的IP(即DNS64合成的IPv6位址)轉換為IPv4位址,進而對APP伺服器進行通路。
蘋果Store的APP IPv6稽核機制如下圖所示:
注:圖檔來自 蘋果官網
作為中國大陸的開發者,APP伺服器幾乎都隻有IPv4位址,是以在送出APP到蘋果進行稽核時都需要走DNS64/NAT64這條路徑。但遺憾的是,DNS64/NAT64這條路徑經常會因跨國網絡問題和不可描述的屏蔽等原因,國内APP伺服器的IPv4位址無法通過DNS64合成IPv6位址,即使成功合成IPv6位址,蘋果AppStore也有可能無法成功通路位于國内的IPv4 APP伺服器。
是以,這裡建議App開發者送出APP稽核時,應避免美國蘋果IPv6-only的通路流量走DNS64/NAT64這條路徑。
阿裡雲産品級解決方案
方案概述
阿裡雲負載均衡IPv6執行個體或者IPv6轉換服挂載IPv4 APP伺服器,這樣當蘋果AppStore發起稽核時,來自美國蘋果公司IPv6-only用戶端的IPv6流量先通路阿裡雲負載均衡IPv6執行個體或者IPv6轉換服務,然後阿裡雲負載均衡IPv6執行個體或者IPv6轉換服務完成IPv6到IPv4的轉換,将轉換後的資料包轉發至IPv4 APP伺服器上。
機制圖如下圖所示:
推薦産品1: 負載均衡IPv6執行個體
适用場景:
IPv4 APP業務運作在阿裡雲上,且IPv4 APP伺服器和阿裡雲負載均衡IPv6執行個體必須位于同一區域。
場景示意圖:
場景描述:
如上圖所示,蘋果發起稽核時,阿裡雲負載均衡IPv6執行個體将來自蘋果IPv6-only的通路流量根據轉發政策分發到後端IPv4 App伺服器上。
注意:
- 阿裡雲負載均衡IPv6執行個體與後端 IPv4 APP伺服器通過IPv4私網進行通信,因為IPv4 APP伺服器和阿裡雲負載均衡IPv6執行個體需位于同一個區域。
- 完成負載均衡IPv6執行個體的配置後,建議您為APP的域名添加AAAA記錄解析,即将APP域名解析到阿裡雲負載均衡IPv6執行個體的IPv6位址上。 >>如何設定>>
負載均衡IPv6執行個體目前支援公共雲華東1(杭州)、華北2(北京),其他區域也即将支援,請關注阿裡雲官網。
推薦産品2: IPv6轉換服務
IPv4 APP業務可以部署在本地IDC機房、阿裡雲、或者其他雲服務商上,隻要APP業務伺服器具備公網IPv4位址,都可以使用阿裡雲IPv6轉換服務。
IPv6轉換服務和IPv4 APP伺服器可以在同一區域,也可以不在同一區域。
如上圖所示,不管IPv4 APP伺服器是部署在本地資料中心、阿裡雲或在其他雲上,當蘋果AppStore發起稽核時,阿裡雲IPv6轉換執行個體根據使用者配置的IPv6到IPv4的轉換規則,将來自美國蘋果公司IPv6-only用戶端的通路流量轉發到後端IPv4 App伺服器上。
- IPv6轉換服務與後端挂載的IPv4業務是通過IPv4公網來進行通信,是以後端的IPv4業務必須具備一個公網IPv4位址。
- 完成IPv6轉換服務的配置後,建議您為APP的域名添加AAAA記錄解析,即将APP域名解析到IPv6轉換服務執行個體的IPv6位址上。
- 如果您的APP域名從未在阿裡雲進行過備案,那麼您還需要為APP域名完成阿裡雲的接入備案流程。 >>進入備案系統>>
IPv6轉換服務執行個體可選擇公共雲華東1(杭州)、華北2(北京),其他區域也即将支援,請關注阿裡雲官網。
重要的提醒
為避免因跨國網絡問題和不可描述的屏蔽原因導緻的DNS無法解析APP域名的IP位址,推薦上述2款産品搭配阿裡雲
雲解析企業版共同使用。阿裡雲雲解析具有海外DNS BGP節點,可以確定蘋果AppStore在做IPv6稽核時,查詢DNS時可以正确傳回域名的IP位址。
結語
本文隻做蘋果AppStore稽核APP IPv6時候的網絡連接配接方面的産品推薦,如果要APP通過IPv6的稽核,還需要APP(代碼)本身相容IPv6,具體可參考
。