天天看點

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

前言

因業務需求 公司APP需要在ios系統上運作需要改系統ipv6

2016年6月1号之後蘋果應用上傳AppStore稽核要求全面支援ipv6,雖然隻是一個簡單的稽核要求,但卻給中國區的開發者帶來了不小的麻煩,因為衆所周知的原因,國内的IPV6支援的比較差,是以包括ipv6環境測試在内的ipv6适配要求,着實是需要有一套解決方案。這裡都是廢話,下面就自己的解決方案開始做方案介紹。

代碼層支援

按照蘋果官方要求做iOS代碼适配ipv6,這裡涉及到了跟網絡相關的第三方庫的時候,按照我自己的經驗,做如下解釋:

1.Afnetworking ~3.1.0。(3.0.x版本正常都是支援ipv6的)

2.SDWebImage ~3.8.1。

基本的代碼層根據蘋果官方的要求做配置就好。對于socket支援,由于最近上線的項目裡沒有用到socket,需要做socket層支援的自己去蘋果官方查适配ipv6要求。

伺服器支援

1.給域名添加一條AAAA解析(當您希望通路者通過 

IPv6位址  通路您的域名時,可以使用AAAA記錄,即用來指定網站域名對應的IPv6位址記錄),如果是www的域名,則AAAA解析名為www,值為目前域名的ipv6DNS位址。詳情: 阿裡萬網IPV6AAAA解析

2.更改伺服器ipv6配置,這裡想說明一下,這次的蘋果強制要求ipv6相容,阿裡雲無辜背了黑鍋,其實能不能稽核通過或者說ipv6環境下阿裡雲能不能通路跟阿裡雲支不支援ipv6沒有一毛錢關系。用阿裡雲而ipv6稽核沒有通過的原因是伺服器環境沒有配置ipv6,或者根本就是有的伺服器為了節省性能将ipv6直接給禁掉了。是以檢視伺服器中ipv6的配置,看是否允許ipv6。

蘋果上架要求:要求支援IPV6only(因為阿裡雲主機沒有IPV6only)

确認IPV6是否開啟:

登入阿裡雲伺服器終端,進入/etc/modprobe.d/ipv6off.conf(不同的伺服器這裡命名可能會有差别,可以先到這個目錄看一下跟ipv6相關的配置檔案,然後再vim打開)

  1. # vim /etc/modprobe.d/ipv6off.conf 或者 
  2. 阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

aliasnet-pf-10off  将本行注掉

optionsipv6 disable=1 改為 optionsipv6 disable=0

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

2.# vi /etc/sysconfig/network

NETWORKING_IPV6=no 改為 NETWORKING_IPV6=yes

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

3.# vi /etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=no 改為 IPV6INIT=yes

IPV6_AUTOCONF=no 改為 IPV6_AUTOCONF=yes

https://s3.51cto.com/wyfs02/M02/9E/41/wKioL1mOcszxt4-uAAAKyaCzZrg062.png
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

4以上已經開啟ipv6,是以要進行一下安全設定,設定開機自啟動ipv6防火牆

# chkconfig ip6tables on

至此,ipv6的伺服器端支援已經完成,重新開機伺服器測試ipv6是否已經支援,重新開機後:

# lsmod | grep ipv6   如果有輸出則已經支援ipv6

輸入ifconfig檢視ipv6的資訊

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

# ifconfig | grep -i inet6

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

方式1:使用ifconfig檢視自己的IP位址是否含有IPv6位址。

https://s4.51cto.com/wyfs02/M02/9E/43/wKioL1mOqXLx7MlwAABVkWuLexQ507.png-wh_500x0-wm_3-wmp_4-s_3569122982.png
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

方式2.檢視服務監聽的IP中是否有IPv6格式的位址。(netstat -tuln)

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

開啟IPV6:

vim /etc/sysctl.conf

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

vim /etc/modprobe.d/disable_ipv6.conf

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案
vim /etc/sysconfig/network      
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

至此ipv6的伺服器端支援已經完成,重新開機伺服器測試是否支援ipv6,重新開機後, ifconfig檢視ipv6的資訊,有看到有關IPV6的輸出就可以

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

此處以阿裡雲為例進行說明:

注意!

首先,到 

https://www.tunnelbroker.net/

 注冊一個賬戶,然後登陸,戳  

Create Regular Tunnel

 。IPv4 Endpoint (Your side) 這裡填你 ECS 的内網 IP 位址, Available Tunnel Servers 這裡選一個,一般來說 HK 離大陸近延遲低,不過最近 HE.net 的香港似乎都是繞了一圈美國回來的,是以延遲反而很高,這個看自己情況選就好。然後戳 Create Tunnel ,就完成了。

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

之後點選

 添加自己的内網ip如:65.11.12.13

如圖所示:

1.添加内網位址選項服務:

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

2.點選建立即可:

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案
https://s1.51cto.com/wyfs02/M02/9E/54/wKiom1mOqEijxL2RAACY5U-tU9Y587.png-wh_500x0-wm_3-wmp_4-s_4052711013.png
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

3.複制粘貼以上指令

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

4.測試ipv6

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

添加ipv6的dns伺服器,在最後添加nameserver 2001:4860:4860::8888,nameserver 2001:4860:4860::8844谷歌的ipv6 dns伺服器

# vim /etc/resolv.conf
options timeout:1 attempts:1 rotate
nameserver x.x.x.x
nameserver x.x.x.x
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844      
# ping6 -c 5 ipv6.google.com
PING ipv6.google.com(tsa03s01-in-x0e.1e100.net) 56 data bytes64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=1 ttl=55 time=25.5 ms64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=2 ttl=55 time=25.5 ms64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=3 ttl=55 time=33.1 ms64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=4 ttl=55 time=25.5 ms64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=5 ttl=55 time=25.4 ms--- ipv6.google.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4031ms
rtt min/avg/max/mdev = 25.473/27.040/33.180/3.073 ms      

注意:上例xxx.xxx.xxx.xxx位址是阿裡雲的内部IP

5)代碼到伺服器執行(如果想開機自動執行,可以修改/etc/init.d/network,把粘貼的代碼加到start中) 

四、 解析AAAA到(請到您的域名提供商背景做相應操作) 

阿裡雲是支援這種解析的,但dns會報錯,經測不影響appstore稽核,ipv6的位址就是上一步中申請的ip 2006:781:48:555::2 

注意去掉ip位址末尾的”/64” 

https://s2.51cto.com/wyfs02/M01/9E/6B/wKiom1mQ-YfStPLCAACb-VxycNI821.png
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

五、 nginx監聽ipv6 

編輯/etc/nginx/conf.d/default.conf,将server段的listen語句修改如下 

listen 80; 

listen [::]:80 ipv6only=on;

六、 

測試

方法1. 

http://ipv6-test.com/validate.php

 在這個網址中輸入你的域名就可以了,隻要下面兩項可以過就可以送出app稽核了 

https://s4.51cto.com/wyfs02/M02/9E/6B/wKiom1mQ-sGD8BTvAAAnQ74uTdw752.png
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

如圖所示全部通過

阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

方法2.

http://www.subnetonline.com/pages/network-tools/online-port-scanner.php
阿裡雲針對蘋果官方ipv6稽核的綜合解決方案

詳情參考

阿裡雲:

通用 CentOS 伺服器安全配置指南

騰訊雲:

 在centos伺服器上啟用ipv6位址

騰訊:

centos作業系統雲主機開啟ipv6方法

繼續閱讀