1. 程式人生 > >iOS稽核因IPv6被拒

iOS稽核因IPv6被拒

最近提交的新版本因為IPv6問題被拒,稽核組給的截圖,頁面是空的,說明請求之後沒有拿到資料。在這之前,17年元旦之後,我們先後提交了三個版本,均稽核通過,真是一臉懵逼,先自己搭環境測試。

搭建IPv6環境進行測試

兩種方式:用網線、不用網線(熱點方式)
因為我的Mac沒有網線介面,買個轉換接頭要100大洋左右,果斷選擇第二種。具體步驟參考下面的文章,一步一步來就OK了。
iOS-不用網線搭建IPv6網路測試環境
測試結果:執行OK。

我重新打了個包提交稽核,稽核速度相當快,不到20個小時就給我拒了。。。我不死心,重新提交稽核,又是不到20個小時就給我拒了。。。今年的五一過得真是相當心塞。

Mac搭建IPv6環境測試沒問題仍然被拒怎麼辦

從網上查資料,發現Mac搭建IPv6環境測試通過,只能代表客戶端應用在 IPv6 網路下,是沒有問題的。此時手機和 Mac 之間是 IPv6 ,但 Mac 和你的伺服器之間還是 IPv4 連線。無法驗證你的伺服器能夠對 IPv6 網路做出正確的響應

蘋果稽核時,通過 DNS 伺服器詢問你伺服器的 IPv6 地址,然後進行訪問。如果查詢不到 IPv6 地址,可能會進而詢問 IPv4 地址,然後進行轉換使用。蘋果明確表示伺服器不需要支援 IPv6,但是有一點蘋果沒有指出來,那就是,雖然你的伺服器不用支援 IPv6,但是必須正確響應 IPv6 的 DNS 查詢

驗證伺服器是否能響應IPv6的DNS查詢

方法一: $ dig +nocmd +nostats example.com AAAA 如果返回的 status 為 NOERROR, 那基本就沒什麼問題。
我試著dig自己的域名,返回NOERROR,因此運維說伺服器沒問題,提交稽核後依然被拒。這個方法的可靠性有待考證(我懷疑此時Mac與伺服器之間依然是IPv4連線)

介面如下:
輸入域名.png

檢視結果.png
結果表明伺服器不支援IPv6,也不能響應 IPv6 的 DNS 查詢
剩下的就是運維的事了。

和運維進行友好溝通

和iOS小夥伴們溝通IPv6被拒的解決方法,發現最難的不是找到被拒的原因,而是和運維扯皮。大部分小夥伴都聽運維說過這句話:IPv6被拒和伺服器沒關係,伺服器不需要做什麼設定,應該是你們客戶端的問題,你們看看程式碼怎麼改一下。他們的證據就是上文說的“蘋果明確表示伺服器不需要支援 IPv6”。
這種時刻一定要明確責任。作為客戶端,首先要確保程式碼中沒有使用被IPv6禁止的方法,排除了自己的問題後,與運維溝通一定要堅定立場,是他們的問題就一定要讓他們改。我和運維第一次溝通時不自信,不知道自己這裡有什麼問題但也以為是自己的問題,就重新提交稽核又被拒,浪費四天時間。
明確責任不是在追責或者推卸責任,而是為了儘快解決問題使專案順利上線。

再次測試。

IPv6測試結果2.png

IPv6 web server 不通過沒關係—你的伺服器不用支援 IPv6
AAAA DNS record 通過即可—伺服器必須正確響應 IPv6 的 DNS 查詢

再次提交稽核,通過。