給 iOS 應用做後端服務器,需要做 ipv6 的支持,雖然 6 在中國幾乎不怎麼用,但遺憾的是蘋果現在要求所有上架的 app 都需要支持純 ipv6 網絡,所以,我們的服務器至少要在 ipv6 的環境下跑起來。
由於國內大多數服務器商不能提供 ipv6 網絡,所以我們只能自己找隧道,現在用的比較廣的是這一家,我也用的是他們的服務,是免費的,註冊一下就好。
註冊之後,選擇左下方的 “建立定期隧道“,創建一個普通隧道,ip地址自然就是你服務器的外網地址,創建的地方選擇距離最近的“香港”,速度會比較好一些。
服務器端
現在,回過頭來配置你的服務器: 我們 /等等/的sysctl.CONF ,找到下面三個改為 0:
1 2 3 |
net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 |
然後編輯 /等等/網絡/接口 ,在末尾加入下面的信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
auto he-ipv6 iface he-ipv6 inet6 v4tunnel address <IPV6>::2 netmask 64 remote <Tunnel 的 Server IPv4 Address> local <内网 IPv4 地址> endpoint any ttl 255 gateway <IPv6>::1 up ip -6 route add 2000::/3 via ::<HE 的 Server IPv4 Address> dev he-ipv6 up ip -6 addr add <IPv6>::1:1/128 dev he-ipv6 up ip -6 addr add <IPv6>::2:1/128 dev he-ipv6 down ip -6 route flush dev he-ipv6 |
注意,local 字段是你內網的 ipv4 地址,比如我的是阿里雲的服務器,那麼就是阿里雲的內網地址否則無法ping通。
其中里面<IPv6的> 需要你自己替換成你剛剛申請的 Tunnel 的 Server IPv6 Address,但不包括最後的 ::1/64 。server和client都是同一個所以就填就好了。
配置好後就可以重啟服務器了,重啟後使用 的ifup 他-IPv6的 確認隧道啟動。
然後就可以測試了,使用 ping6 IPv6的.谷歌.同 來測試配置是否正確。
配置解析
在 HE 網站,配置解析為你的ns服務器,比如我用的 cloudxns,那麼我就把解析地址設置為 cloudxns 的代理地址。
然後登錄你的ns網站,給你的服務器添加 YYYY 解析,地址為你的ipv6地址,解析域與你的v4解析一致,用哪個解析哪個,比如我就用到 www,那就添加 www,值得注意的是現在國內的ns商都提供一個額外的國外特殊通道,所以你可能得除了國內默認外,還要添加什麼“海外默認”、“美國默認”、“谷歌默認”之類的一大堆。多添加幾個,畢竟蘋果爸爸在美國。
等待配置生效就好了,然後我們可以用dig工具來測試——這裡註意不要使用阿里雲服務器默認的dns,你可能根本查不到。
1 |
dig your.domain.com AAAA @8.8.8.8 |
使用谷歌的公開 DNS 進行測試,如果看到記錄內容是你的v6地址,那就ok了,現在你可以試試去那些在線ping6的網站測試了。
配置nginx的
最後,你還需要讓nginx默認支持v6,在你對應域名監聽上添加:
1 2 3 4 5 |
listen 443 ssl; listen [::]:443 ssl; listen 80 default ; listen [::]:80 default; |
使用命令 nginx的 -ŧ 確認沒問題的話,重啟服務即可。
這下,你的網站或者 api 就能支持 ipv6 的訪問和測試了。
本文由 落格博客 原創撰寫:落格博客 » 給服務器添加 ipv6 支持 以通過蘋果審核
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/2742.html
看起來非常的技術性呢。。。。
啊,服務器不需要支持 ipv6 網絡也可以噠……
蘋果會提供NAT64和DNS64,所以只要不是直接通過ipv4地址訪問服務器,並且沒有依賴於ipv4特定的東西就好啦……
現在問題很尷尬,因為蘋果給的錯誤截圖…………內容是加載了一半的,要是不能加載,肯定是都出不來,但現在加載一半……我們自己用蘋果的方法測試都是正常的,快氣死了。
你的意思是只要不用ip地址訪問, 蘋果審核就可以訪問到 是這個意思嗎