##概要
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に変換してテストを行います。
###事前準備
1.使用するMacをOS X El Capitan(エルキャピタン)にアップデートしましょう。それ以前のOSではできません。
2.Macを有線LANでなくて、Wi-Fi経由でインターネットにつないでいる方は以下の準備が必要です。
####普段接続しているWi-Fiにつながらなくする
iOSデバイスとMacの設定を後ほどWi-Fiにします。その際に、普段Macが接続しているネットワークに勝手につながってしまい、有線LAN経由にならないので、面倒ですが、いったん設定を削除します。(テストが終わったらまたパスワード入れる必要があって面倒です汗)
1.ネットワーク環境設定で、「詳細」をクリック
2.普段接続しているネットワークを選択して、「-」をクリックして、設定を削除
####有線LANに接続
USBかThunderbolt経由で有線LANに接続するアダプタを用いて、LANとMacを接続。
設定本編
1.MacをインターネットにWi-Fiを使わずに接続
2.システム環境設定を起動
3.Optionキーを押しながら、「共有」を選択。その後もOptionキーは押したまま。
4.「インターネット共有」を選択
5.Optionキーを離す
6.「NAT64ネットワークを作成」を選択
7.MacLANに接続している方は、「Thunderbolt Ethernet」を選択肢てください。
8. MacからiOSデバイスに接続する方法として、「Wi-Fi」を選択
9.「Wi-Fiオプション」を選択。セキュリティを「WPA2パーソナル」に設定し、適当なパスワードを設定
10.「インターネット共有を選択」。「インターネット共有」の◯が赤から緑に変化。
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^)
他の有名所のアプリも試してみましたけど、動かないものはみつからなかったです。意外と何も対応しなくても大丈夫なのかもです(私見)。