關(guān)于IPv6被拒的問題解決

           請(qǐng)著重看第三條。。。
  1. 使用網(wǎng)絡(luò)通訊框架;
  2. 避免使用 IPv4 專用的 API;
  3. 避免使用硬編碼地址。

1> 使用網(wǎng)絡(luò)通訊框架;
也就是是說推薦你使用 iOS SDK 自帶的,構(gòu)建于 socket 上層的網(wǎng)絡(luò)通訊框架,或是第三方的網(wǎng)絡(luò)通訊框架。這樣,使用網(wǎng)絡(luò)通訊框架的話,上面的第 2 條大體上是不用操心的。如果你使用的是第三方的網(wǎng)絡(luò)通訊框架的話,一定記得詢問該框架的開發(fā)商:“你們支援 IPv6 嗎?”

作為網(wǎng)絡(luò)通訊框架其中之一的 ProudNet? 是支持 IPv6 的喲。自 2015 年 12 月的更新版本開始支持。ProudNet 的使用者如果要想支援 IPv6 的話,應(yīng)該使用 2015 年 12 月版本,或更高的版本。


2> 避免使用 IPv4 專用的 API;

如果你親自編程 socket 層的話,記得不能使用 IPv4 專用 API。比如說,你不能使用如下這些 API (光是使用這些函數(shù)本身,是否會(huì)成為蘋果方面拒絕通過應(yīng)用審核的事由,目前還不清楚。反正 ProudNet 目前是全然不使用這些函數(shù)的)。

inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()

如果要測試在 IPv6 的環(huán)境下是否運(yùn)轉(zhuǎn)正常,你需要構(gòu)建 IPv6 only 的網(wǎng)絡(luò)環(huán)境。方法有很多種。我們使用的是通過 Mac 機(jī)器的方法。


3> 避免使用硬編碼地址。

蘋果使用的是“硬編碼地址”這樣的術(shù)語。不過這大體上只是對(duì)大眾友好的簡化說法。正確的學(xué)名其實(shí)應(yīng)該叫 IP literal。比方說形如 “11.22.33.44” 這種啦。

另一方面,我們通常所說的 “hostname”,比方說“server1.mygame.com”這種,學(xué)名叫 FQDN (fully qualified domain name)。

你問,通過“硬編碼地址”,也就是我們所說的 IP literal 連入服務(wù)器的話會(huì)有什么樣的后果呢?一些 IPv6 網(wǎng)絡(luò)下的客戶端會(huì)連不上 IPv4 網(wǎng)絡(luò)下的服務(wù)器(雖說 iOS 9.2 以后這個(gè)問題會(huì)部分解決,但是沒法保證在所有 IPv6 網(wǎng)絡(luò)下都沒問題)。

反之亦然—客戶端在 IPv4 下,服務(wù)器 IPv6。

至于連不上的原因嗎,要從 NAT64 / DNS64 的聯(lián)動(dòng)關(guān)系說起。因?yàn)閮?nèi)容有點(diǎn)長,這里就不贅述了。

那么應(yīng)該腫么辦呢?乖乖地聽從蘋果大人所“指示”(?)的。通過 FQDN 而不是 IPv4 literal 的連入的情況下,服務(wù)器要能夠接收??蛻舳诉B接服務(wù)器時(shí)則要使用 FQDN。

舉例說明上面的內(nèi)容:

  • 192.168.1.1 ==> 蘋果會(huì)屏蔽你
  • server.mygame.com ==> Ok
  • 11:22:33:44:55:66:77:88 ==> 蘋果會(huì)屏蔽你

希望對(duì)你有些許幫助0.0
謝謝支持!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容