2016-12-22 19 views
4

我意識到,已經有許多用戶因Apple不支持Apple網絡而拒絕其iOS應用程序的Stack Overflow問題。爲IPv6兼容性配置服務器(用於被拒絕的iOS應用程序使用的API)

我已經檢查過我的代碼,以確保沒有硬編碼的IP地址(絕對沒有),也沒有使用舊的可達性(根本沒有)或其他低級網絡框架(我們只使用NSURLSession)。我已經通過我的機器上的NAT64測試網絡,並且該應用程序(似乎)工作正常。

這是一個Xamarin應用程序,它通過HTTPS與API進行通信(並且沒有其他網絡連接)。

我發現的一些答案表明解決此問題需要對服務器進行配置更改。

所以我的問題是廣泛的,需要什麼配置更改?更具體地說,你是否需要域上的AAAA記錄?如果是這樣,它應該如何配置?

我在這個問題更多的軟件開發人員來了,所以沒有IPv6的工作原理,以及需要什麼樣的服務器更改的詳細的瞭解。

+0

據我有限的知識,你將需要一個AAAA DNS記錄的域名,將其映射到您的API服務器的IPv6地址。如果沒有AAAA記錄,則會記錄到A記錄或CNAME記錄,這兩個記錄都具有IPv4地址。 –

+0

如果你使你的服務器只支持IPv4,它將工作。 – user102008

回答

3

您的服務器不需要更改。 NAT64應負責翻譯純IPv4服務器,並且DNS64應確保您獲得主機名的正確地址。因此,當使用主機名而不是硬編碼地址,並且使用IP版本中立的API時,它通常應該可以正常工作。

一種情況它可能會失敗是當人們試圖與蘋果的政策更加兼容,並把一些假/假的/錯誤的AAAA記錄在他們的DNS區域。這些實際上會阻止DNS64生成正確的記錄,因爲它認爲服務器具有真正的IPv6並且不需要翻譯服務。

內置的MacOS的DNS64不必互聯網「真正的」 IPv6連接,並會忽略這樣的壞AAAA記錄,而是實實在在的DNS64不會。因此,在這種情況下,您的本地測試似乎可行,但Apple會發現它失敗。

我建立了一個測試工具,你可以用它來檢查網站與https://nat64check.org/真正DNS64和NAT64服務。隨意使用它。

雖然它不是強制性的,如果你想爲將您的網絡服務最好的可達性,兩者均建議實際上使你的服務器通過IPv6訪問,並提供AAAA記錄。這將使您的服務獨立於NAT64和DNS64翻譯服務,從而提高可靠性和性能。它還可以改善其他擁有IPv6的用戶的功能,因爲它允許他們繞過現在ISP需要部署以彌補IPv4地址(如CGN,DS-Lite等)缺乏的技巧。

它還可以防止DNSSEC出現問題:NAT64需要生成「虛假」的AAAA需求才能使服務在IPv6上運行,並且DNSSEC旨在防止任何人涉及DNS記錄。如果您提供真正的AAAA記錄,則NAT64不需要撒謊,DNSSEC不受影響。

總結:最好的辦法是讓您的服務器可以通過IPv6訪問,並使用AAAA記錄在DNS中發佈其地址。這對每個人都有好處。但不要發佈僞造的AAAA記錄(例如那些以::ffff:2001:db8:64:ff9b:,fcfd開頭的記錄)。這些將傷害擁有IPv6的每個人,這些人現在已經是相當多的人。當您通過IPv6提供服務時,請將其視爲製作服務並正確執行。

+1

哇,感謝這個超級全面的答案,證實了我一直在閱讀的東西(仍然不確定爲什麼我的iOS應用程序被拒絕,但仍然有幫助) –

相關問題