適配IPv6遇到的坑,終極解決方案

2021-07-14 23:20:36 字數 1786 閱讀 6864

然而我上個星期發布的版本並沒有因為沒相容而被拒,這次提交卻遇到ipv6相容問

題。。。

話不多說,上**:

+(nsstring *) getipwithhostname:(const

nsstring *)hostname

for(res = result; res!=null; res = res->ai_next)

else

nslog(@"hostname: %s ", hostname);}}

freeaddrinfo(result);

if(is_ipv6 == true) return [nsstring stringwithutf8string:ipv6];

return [nsstring stringwithutf8string:ipv4];

}

這段**即判斷了是否ipv6環境並解析網域名稱獲得了ip位址。 測試

"。 然而配置成功後,用手機連線的wifi dns也是正確的,執行程式測試怎麼不成功呢,

找了好多資料,猜測是dns解析出了問題。

那就換另一種方法配置ipv6:拔掉網線,用mac連線wifi(沒有wifi可以用手機流量分享熱點),然後在共享中用前一種方法配置ipv6(不知道具體是共享到電腦那個埠,索性全點上)

記得選中"建立nat64 網路"。這時直接通過模擬器測試succeed! 

測試成功了。你以為就沒問題了?這裡提交依然可能被拒,手機和 mac 之間是 ipv6 沒錯,但 mac 和你的伺服器之間還是 ipv4 連線。

如果這項測試通過,可以說明:你的客戶端應用在 ipv6 網路下,是(基本)沒有問題的,但是無法驗證你的伺服器能夠對 ipv6 網路做出正確的響應。然而,蘋果審核的時候,卻是要去 dns 伺服器詢問你的伺服器的 ipv6 位址,然後進行訪問。如果查詢不到 ipv6 位址,可能會進而詢問 ipv4 位址,然後進行轉換使用。蘋果明確表示伺服器不需要支援 ipv6,但是有一點蘋果沒有指出來,那就是,雖然你的伺服器不用支援 ipv6,但是必須正確響應 ipv6 的 dns 查詢。

如何驗證呢??使用以下命令即可:

$ dig +nocmd +nostats example.com aaaa
如果返回的 status 為 noerror, 那基本就沒什麼問題,但是一定要在多個網路環境下測試都通過才行。如果返回的是其他的響應,尤其是 servfail 的情況,那就基本杯具了。由於你已經驗證了客戶端沒有問題,現在要做的,就是催著你的運維、後台啥的,趕緊去改 dns 配置,直到穩定返回 noerror 為止。

*****************2017/06/01更新 ************************

今天新換了網域名稱,發現解析有問題了 更新一下**

+ (nsstring *)getipwithhostname:(nsstring *)hostname 

s = -1;

static struct sockaddr_in6 * addr6;

static struct sockaddr_in * addr;

// nsstring * newstr = null;

char ipbuf[32];

nsstring * tempa = null;

for (res = res0; res; res = res->ai_next) else

break;

}freeaddrinfo(res0);

return tempa;

}

移動IPv6的優勢

相對於目前廣泛應用於無線網路的ipv4技術,移動ipv6的優勢非常明顯,這些優勢主要體現在以下幾個方面。1 位址數量大大增加 移動ipv6的128位位址長度對於充滿生機的移動市場來說是非常誘人的。另外,採用移動ipv6之後將不再需要nat,這將使移動ipv6的部署更加簡單直接,由於不再需要管理內部位...

IPV4與IPV6的區別

在windows 7以上系統中,在設定本地ip位址的時候經常會看到同事含有ipv4協議項與ipv6協議項,並不同於以往windows xp系統中僅有tcp ip協議項,不少朋友都覺得比較奇怪,詢問編輯ipv4與ipv6的區別,下面編輯就為大家權威的介紹下ipv4與ipv6有什麼區別。目前的全球網際網...

IPV4和IPV6的區別

internet的主機都有乙個唯一的ip位址,ip位址用乙個32位二進位制的數表示乙個主機號碼,但32位位址資源有限,已經不能滿足使用者的需求了,因此internet研究組織發布新的主機標識方法,即ipv6。在rfc1884中 rfc是request for comments document的縮寫...