Skip to content

Instantly share code, notes, and snippets.

@satoshin2071
Last active February 15, 2017 01:46
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save satoshin2071/c5604c3c17153efeb29ff9bd25abbbe9 to your computer and use it in GitHub Desktop.
Save satoshin2071/c5604c3c17153efeb29ff9bd25abbbe9 to your computer and use it in GitHub Desktop.
IPv6対応

良いまとめ

##概要

  • 現行は IPv4 と IPv6 の両方に対応しているが、今後 IPv6 のみのサポートになるらしい
  • そのための、サーバ/アプリ での対応内容

移行期限

最近の Apple の声明によると、2016年初頭だそうです。これは今後も変わる可能性があります。それ以降は iTunes Connect で IPv6 対応が審査されます。 https://developer.apple.com/news/?id=08282015a

「2016年6月から」と明記されました。 これ以降の申請時は、IPv6 対応必須です。 https://developer.apple.com/news/?id=05042016a

大枠の結論

結論と言うと、「アプリ側で 一部の変わったこと」をやっていない限りは、サーバ側も アプリ側も、特に対応は要らない。

サーバ側

  • サーバ側は、IPv4 のみのIFでも、問題ない
  • キャリア側のゲートウェイが適切に変換する

アプリ側

  • アプリ側も、上位レイヤの通信機構(具体的には、CFNetwork、NSURLほげほげ)を使っている分には、特に意識する必要はない

アプリ側で問題が発生するケース

つまり、CFNetwork よりも下層、socket 系の関数を生で使っている場合は、IPv4前提の関数などを使っていることになるので、対応が必要。

困ったことに、Apple の提供している Reachability がこれを使っている。更新版のReachability で、IPv6対応がされました。

注意すべきは、以下の3つ。

  1. 自分で socket系関数を使っているケース(多分、稀)
  2. Reachability もしくは その改良型である NetworkReachability を使っているケース
  • 更新版の Reachability を使うようにしましょう
  1. サードパーティのライブラリ内で使われているケース

IPv4 に限られた API

Networking Overview

検証方法:OS X 10.11 El Capitan で NAT64 ネットワークを構築する

IPv6検証は、例のQiita記事やWWDCセッションにもあるように、El Capitanを導入してNAT64ネットワークを構築するオプションを利用するのが手っ取り早そうです。

手順

まとめ

  • サーバサイドは、都合、何もしなくても良い(仮に IPv4のIFのみでも問題ない)
  • クライアントサイドは、普通の作り方をしていれば、ほぼ問題ない
    • 外部のライブラリを使っている場合は注意
    • 特にアナリティクスや 広告や DRMなど?
    • IPv6ネットワーク下でのデバッグ方法があるので、それで動作テストを行う
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment