2016-07-08 14 views
2

Appleがレビュー環境をIPv6専用ネットワークに変更したので、テスト中に問題が発生しました。iOS NAT64 IPv6環境の問題

アプリケーションにアクセスするには、ユーザーがサーバー/システムのIPアドレス、ポート(4401)、および資格情報を入力する必要があります。 appleのガイドラインに従って、私のアプリケーションの互換性をテストするNAT64環境を設定しました。 iOS 9.3.2をiphone 5sで実行する。

私の職場環境にはいくつかの内部ネットワークがあります。 iMacを内部サーバー(10.10.50.XX)にイーサネットを介して接続しました。これには、Appleに提供する外部IPもあります。 50ネットワークはプロキシの背後で実行されませんが、フィルタリングされるサイトがいくつかありますが、確認することでアクセスできます。私はWiFI経由でイーサネット接続を共有しました。

私はデバイスに接続し、フィルタリングされている同じページでインターネットにアクセスできました。デバイスにはローカルリンクアドレス169.254.XX.XXが割り当てられます。私のデバイスがipv6のみのネットワークに正しく接続していることを読んでから、iphoneはipv6アドレスだけをローカルリンクに表示しないので、読んでください。

共有IPv6ネットワークに正しく接続されている場合、私の問題は、アプリケーションから50ネットワーク上のサーバーに接続することです。 10.10.50.XXネットワークまたは外部に接続しようとするとアプリケーションが失敗します(私のimacが50内部ネットワーク上にあるために理解できます)。

50ネットワークに接続されているワイヤレスルータでIPv4を使用してアプリケーションをテストすると、完全に実行されます。ローカルリンクアドレスが50ネットワークなどを認識できないという問題があると思います。

Heresサーバーに接続する方法の簡単な背景情報。ユーザーは、接続するサーバーの資格情報とIPアドレスとポートをすべて入力します。アプリケーションはこれをテキスト(utf-8)として保存し、boost shared_ptrを使用してcpp接続クラスに送信し、資格情報を検証してユーザーにアクセスします。このcpp接続クラスは、サーバーからの接続、同期、ログ、要求、および応答を処理します。

NAT64インターネット共有オプションを使用して、どうにかして50ネットワークにアクセスできますか?

+0

"cpp接続クラスはどのようにしてサーバーからの接続、同期、ログ、要求、応答を処理しますか"? – user102008

答えて

1

IPアドレスをネットワークのlibに直接渡す場合は、noを指定します。あなたのデバイスがNAT64のIPv6のみの側にある場合、サーバのIPv4アドレスは無駄です。

ほとんどの場合、到達しようとしているサーバーのDNS名が必要です。 DNS64は、サーバーがIPv4のみの場合、DNS64を使用してアプリケーションのIPv6アドレスを作成します。これらの合成アドレスには、サーバのIPv4アドレスが含まれており、IPv6からIPv4に変換するために必要な情報をNAT64に与えます。

これをアップデートする:この回答に添付されているコメントスレッドでuser102008が示唆しているように、getaddrinfo()を使用してIPv4文字列リテラルを渡すこともできます(code listing 10-1 on this page参照)。 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

関連する問題