Download - 2015 12 10_ipv6対応について
![Page 1: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/1.jpg)
IPv6対応について
![Page 2: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/2.jpg)
1. はじめに2. Appleの審査について3. IPv6、DNS、NAT等について4. NAT64/DNS64について5. NAT64/DNS64の構築6. IPv6 only networkの挙動7. まとめ
目次
![Page 3: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/3.jpg)
はじめに
![Page 4: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/4.jpg)
“IPv6対応”と呼ばれるものがなんなのか、共通認識
を持つこと
対応に必要なことはなんなのか理解すること
この勉強会の目的
![Page 5: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/5.jpg)
Appleの審査について
![Page 6: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/6.jpg)
参考記事
「Supporting IPv6 DNS64/NAT64 Networks」 / Apple「iOS9 で必要な IPv6 only Network への対応」
審査落とされる!
2016年初頭以降appleに申請を出すアプリに関して、”IPv6対応”が義務付けられました。
具体的にはDNS64/NAT64の環境でも問題なく動くようにアプリが
作られていなかった場合、2016年初頭よりAppleの審査に落とさ
れるとのこと。
![Page 7: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/7.jpg)
IPv6…?DNS…?NAT…?
ナニソレ→ざっくり説明
![Page 8: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/8.jpg)
・通信してデータをやりとりするプロトコル
・よくいうインターネットというのは、このプロトコルでやり取りする
ネットワークのこと
IP(Internet Protocol)
![Page 9: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/9.jpg)
IPアドレス(Internet Protocol address)
・電話でいう電話番号みたいなもの
・インターネット通信において相手にデータを送る宛先、送信元そ
れぞれの識別子
・IPv4ではこれが足りなくなってきている
→約43億個用意されていたが、インターネットの普及と共に枯渇
してしまった
![Page 10: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/10.jpg)
・IP(Internet Protocol)の6番目のバージョン
・現在最もよく使われているIPv4より新しい
・IPアドレスの数がIPv4より遥かに多くなる
・違いはデータをやり取りする際、パケットに埋め込むIPアドレス
部分のbit数
・32bit→128bitでIPアドレスの数が天文学的な数に
IPv6(Internet Protocol Version 6)とは
123.45.67.89 3ffe:2002:500a:c12a:1e12:ff01:fe41:921d
IPv4アドレス例 IPv6アドレス例
![Page 11: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/11.jpg)
・IPアドレスを別の名前(ドメイン)に置き換える仕組み
・WebサイトやAPIサーバーなどは大体ドメインを持ってる
・ドメインでアクセス→ドメインからIPアドレスを取得してアクセス
DNS(Domain Name System)とは
Domain Name System173.194.120.95 www.google.co.jp
![Page 12: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/12.jpg)
LAN
・パケットに含まれるIPアドレスを、別のIPアドレスに変換する技術
・LANの中ではプライベートIPアドレス、外ではグローバルIPアドレスを使ってIPv4アドレ
ス枯渇を防ぐのに使われた
・ルーターなどがNAT機器に相当する
・大体今のネットワーク機器は高機能なのでここにファイアウォールの役割をしてセキュ
リティを高めたりもしている
NAT(Network Address Translation)とは
PC
PC
PC
NAT インターネット
![Page 13: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/13.jpg)
DNS64/NAT64について
![Page 14: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/14.jpg)
・IPv6→IPv4間の通信をする為の仕組み
・DNS64とNAT64はセットで動く
・IPv6端末でドメインでアクセスされた時、IPv6アドレスがあれば
IPv6アドレス、なければIPv4アドレスをIPv6アドレスに変換して返
してくれる
DNS64/NAT64とは
![Page 15: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/15.jpg)
「Supporting IPv6 DNS64/NAT64 Networks」 / Apple より引用
![Page 16: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/16.jpg)
「Supporting IPv6 DNS64/NAT64 Networks」 / Apple より引用
IPv4・IPv6両方のネットワークを用意してる図
![Page 17: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/17.jpg)
「Supporting IPv6 DNS64/NAT64 Networks」 / Apple より引用
IPv6だけ用意して、途中で変換してる図
![Page 18: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/18.jpg)
「Supporting IPv6 DNS64/NAT64 Networks」 / Apple より引用
みんながこの状態なら、IPv4 ServerをIPv6へ変えれる!
![Page 19: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/19.jpg)
・将来、IPv4はなくなっていく(はず)
・現在はIPv6への過渡期
・IPv6とIPv4の共存の為の仕組み
DNS64/NAT64とは
![Page 20: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/20.jpg)
NAT64/DNS64の構築
![Page 21: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/21.jpg)
1. Mac El Capitanを用意
2. 有線でインターネットに繋ぐ
3. システム環境設定→共有をoptionクリックで開き、インターネッ
ト共有で「create NAT64 Network」
4. iOS9端末のwifiポイントを用意したMacに接続
5. IPv6 Only Networkでテストしたいアプリ等を開き、動作確認
する
DNS64/NAT64の構築
参考記事:スクショ付き
「iOS9 で必要な IPv6 only Network への対応」→実際の対処方法
![Page 22: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/22.jpg)
IPv6 only networkの挙動
![Page 23: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/23.jpg)
IPv6 only networkの挙動
・ここから先が実際に”IPv6対応”に関わってくる内容になります
・iOS9端末でNAT64/DNS64環境にしたEl CapitanのWifiに接続
してテストした結果です
![Page 24: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/24.jpg)
クライアントはIPv6アドレスなくてもいい
自分(iOS9端末)にIPv6アドレスがあるかどうかは
http://test-ipv6.com/で確認できる
![Page 25: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/25.jpg)
補足
MacのEl Capitanに構築したNAT64/DNS64環境はIPv6アドレス
を持っていなくても、その環境をエミュレートしてIPv6 Only
Network端末のようにアクセスさせる
→普通のNAT64/DNS64とはちょっと違うっぽい
→iOS8以下、Androidや別のMacからはアクセスできなかった
クライアントはIPv6アドレスなくてもいい
![Page 26: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/26.jpg)
IPv4アドレスでHTTPアクセスもできる
・NSURLSessionでIPv4アドレス直打ちのアクセス
・通常通りのレスポンス返ってきた
・現状は動作するけど、将来IPv4がなくなったら当然これは動かないはず
例:http://123.45.67.89へHTTPリクエスト投げてる
![Page 27: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/27.jpg)
サーバーはIPv4アドレスのみでもいい
・NSURLSessionでIPv4のみのサーバーへアクセス
・通常通りのレスポンス返ってきた
例:example.comIPv6のないサーバーへHTTPアクセス
![Page 28: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/28.jpg)
何をやっちゃいけないのか?
![Page 29: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/29.jpg)
IPv4に依存した関数を使わないこと
inet_addr()inet_aton()inet_lnaof()inet_makeaddr()inet_netof()inet_network()inet_ntoa()inet_ntoa_r()bindresvport()getipv4sourcefilter()setipv4sourcefilter()
↑Appleのサイトに乗っている非推奨API(C言語)
![Page 30: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/30.jpg)
IPv4に依存した定数を使わないこと
AF_INETPF_INETstruct in_addrstruct sockaddr_inkDNSServiceProtocol_IPv4
↑Appleのサイトに乗っている非推奨定数(C言語)
![Page 31: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/31.jpg)
使っていなくても接続できない場合
・NSURLSessionやCFNetwork等、Objective-Cレイヤーの通信APIはApple側で対応
しているので、多分気にしなくていい
・通信ライブラリの中で使われている可能性がある
・実装次第ですが、エラーも出ずに繋がらないとかも有りえます
![Page 32: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/32.jpg)
繋がらないソース例
![Page 33: 2015 12 10_ipv6対応について](https://reader031.vdocuments.net/reader031/viewer/2022021422/58f9b3051a28ab924f8b45bb/html5/thumbnails/33.jpg)
・IPv6対応できてる?って言われたら
→MacのEl Capitanで動作確認してます!って言えるように
・サーバー側もIPv6にしないといけないんじゃないの?って言われたら
→Appleの審査通すだけならしなくても大丈夫です
・通信するアプリは必ず例の環境でテストしましょう
以上
まとめ