2016-07-08 56 views
2

現在,蘋果已將其審閱環境更改爲僅IPv6網絡,但在測試過程中,我的應用程序遇到了麻煩。iOS NAT64 IPv6環境問題

該應用程序要求用戶輸入他們的服務器/系統IP地址,端口(4401)和憑證以獲得對應用程序的訪問權限。遵循Apple提供的指導原則,我設置了一個NAT64環境來測試我的應用程序的兼容性。在iphone 5s上運行iOS 9.3.2。

我的工作環境有幾個內部網絡。我通過以太網將我的iMac連接到內部服務器(10.10.50.XX),此外還有一個外部IP,這是我提供給蘋果的。 50網絡不在代理之後運行,但有一些網站可以過濾,但可以通過確認訪問。然後我通過WiFI共享我的以太網連接。

我連接了設備,並且可以通過互聯網訪問被過濾的頁面。該設備被分配一個本地鏈接地址169.254.XX.XX.從什麼地方讀取我的設備正確連接到只有ipv6的網絡,因爲iphone不顯示只有ipv6地址的本地鏈接。

如果我正確連接到共享IPv6網絡,我遇到的問題是從我的應用程序連接到我的服務器在50網絡上。當我嘗試連接到10.10.50.XX網絡或外部網絡(可以理解,因爲我的imac位於50內部網絡)時,應用程序失敗。

測試應用程序使用IPv4與連接到50網絡的無線路由器完美運行。我認爲這是一個問題,本地鏈接地址無法看到50網絡或什麼。

繼承人一些簡要的背景信息,關於我如何連接到服務器。用戶輸入所有憑證以及他們想要連接的服務器的IP地址和端口。應用程序將其保存爲文本(utf-8)並使用boost shared_ptr將其發送到cpp連接類,該類驗證憑據並提供對用戶的訪問。這個cpp連接類處理來自服務器的連接,同步,日誌記錄,請求和響應。

是否有可能以某種方式使用NAT64 Internet共享選項訪問50網絡?

+0

你的「cpp連接類如何處理來自服務器的連接,同步,日誌記錄,請求和響應」? 「 – user102008

回答

1

如果您將IP地址直接傳遞到您的網絡庫,則不會。當您的設備位於NAT64的僅IPv6側時,服務器的IPv4地址無用。

您幾乎可以肯定需要您嘗試訪問的服務器的DNS名稱。當服務器僅支持IPv4時,NAT64首先依靠DNS64爲您的應用程序創建IPv6地址。這些合成地址包含服務器的IPv4地址,爲NAT64提供了從IPv6到IPv4轉換所需的信息。

更新後添加:如附件中的user102008所示,您也可以通過getaddrinfo()(參見code listing 10-1 on this page)傳遞IPv4字符串字面值。當您位於NAT64後面時,合成的IPv6地址應該在該調用返回的結果中。 NAT64將從此地址轉換回IPv4以到達您指定的主機。在這種情況下,如果系統知道用於NAT64的正確前綴,則不需要主機名。

+0

」您幾乎可以肯定需要您嘗試訪問的服務器的DNS名稱。「這不是真的。您可以連接到來自純IPv6網絡的IPv4地址文字。 – user102008

+0

只有當你的app/lib知道正在使用的NAT64前綴,並且你的app/lib合成IPv6地址才能像DNS64那樣到達NAT64。然後,您可以將IPv6數據包發送到NAT64,並且NAT64可以轉換爲IPv4。您當然不能將IPv4數據包放入僅限IPv6的網絡,並期望它可以到達任何地方 – Stephen

+0

或要求系統API爲您合成它。我的觀點是,主機名是沒有必要的。 – user102008