iOS9対応のために、IPv6 only NetworkでのiOSアプリの動作テスト方法を調べてみた

  • 146
    Like
  • 2
    Comment
More than 1 year has passed since last update.

概要

IPv6環境でのiOSアプリの動作テストを、Appleの公式ドキュメントを読んでやってみました。その設定方法をまとめた記事となります。ただし、2015年夏にまとめた情報ですので、今はもっといい方法が出てるかもしれません。

背景

2016年6月1日以降、iOS9ではIPv4だけでなくIPv6環境で正しく動作するかを審査でチェックされます(2016/5/4 Supporting IPv6-only Networks)。
なお、IPv6対応の全体像は、以下の記事をとても参考にさせていただきました。ご参照ください。
[Qiita]iOS9 で必要な IPv6 only Network への対応

iOSデバイスをIPv6で接続するようにする設定手順

以下の図(Apple公式ドキュメントより)のように、外部ネットワークからMacまでは有線でつなぎ、MacからiOSデバイスの間をDNS64/NAT64により、IPv6に変換してテストを行います。

image

事前準備

1.使用するMacをOS X El Capitan(エルキャピタン)にアップデートしましょう。それ以前のOSではできません。
2.Macを有線LANでなくて、Wi-Fi経由でインターネットにつないでいる方は以下の準備が必要です。

普段接続しているWi-Fiにつながらなくする

iOSデバイスとMacの設定を後ほどWi-Fiにします。その際に、普段Macが接続しているネットワークに勝手につながってしまい、有線LAN経由にならないので、面倒ですが、いったん設定を削除します。(テストが終わったらまたパスワード入れる必要があって面倒です汗)
1.ネットワーク環境設定で、「詳細」をクリック
2.普段接続しているネットワークを選択して、「-」をクリックして、設定を削除

image

有線LANに接続

USBかThunderbolt経由で有線LANに接続するアダプタを用いて、LANとMacを接続。

image

設定本編

1.MacをインターネットにWi-Fiを使わずに接続
2.システム環境設定を起動
3.Optionキーを押しながら、「共有」を選択。その後もOptionキーは押したまま。
4.「インターネット共有」を選択
5.Optionキーを離す
6.「NAT64ネットワークを作成」を選択
7.MacLANに接続している方は、「Thunderbolt Ethernet」を選択肢てください。
8. MacからiOSデバイスに接続する方法として、「Wi-Fi」を選択

image

9.「Wi-Fiオプション」を選択。セキュリティを「WPA2パーソナル」に設定し、適当なパスワードを設定
image

10.「インターネット共有を選択」。「インターネット共有」の◯が赤から緑に変化。

image

11.iOSデバイスを、Wi-Fiオプションで設定したネットワークに接続。パスワードは先程自分で設定した内容。

iPhoneがIPv6で接続できているかどうかの確認

あれ、IPv6で接続テストになっていない?

「IPv6 接続 確認」などでググると、自分がIPv6で接続しているかIPv4で接続しているかを判定してくれるサイトがいくつも出てきます。
結論から言うと、それらのサイトではIPv4で接続していると表示されます。

「あれ、今の設定をしたからIPv6で繋がるはずでは?」

と思って最初困惑したのですが、特に問題無いです。

MacのDNS64/NAT64が、IPv4とIPv6の変換をしている

というのも、IPv6環境はあくまでもiOSデバイスとMacの間だけで、Macから外のネットワークはIPv4になっているからです。
なので、先述のサイトではIPv4と表示されてしまったのです。

Stack Overflowでの質問

同様の疑問を持たれている方が質問している人がいるので、抄訳を行いました。
以下のやり取りにも有りますが、先述のようのIPv6で繋がっていないと判定されてしまうことは、問題無いです。

Setting up IPv6 environment using OSX 10.11 Beta 5 (El Capitan) Asked by at AFresh at 2015/07/30

AppleのドキュメントのTest for IPv6 DNS64/NAT64 Compatibility Regularlyの通りに設定したのに、IPv6を確認するサイトにアクセスしてみると、IPv6を使ってないと表示されてしまったよ。ちゃんと設定しているはずなのにおかしいな。誰か僕と同じようにはまってしまってる人はいないかな??

Answer by Sander Steffann at 2015/07/13

君の設定は何も間違ってないと思うよ。NAT64を使うことで、内部のIPv6接続は外部のIPv4接続に変換している。だからIPv6接続のテストサイトではIPv6を使っているとは表示されていないんだ。

実際にアプリで動作を確認する

ここまで設定を行えば、iOSデバイスがIPv6環境でインターネットに接続されています、この状態で動作の確認をすることでIPv6できちんと動作するかどうかを検証することができます。ちなみに私が関わっているアプリは問題なく動きました(^O^)
他の有名所のアプリも試してみましたけど、動かないものはみつからなかったです。意外と何も対応しなくても大丈夫なのかもです(私見)。