2015 12 10_ipv6対応について

33
IPv6対応について

Upload: natsuki-yamanaka

Post on 21-Apr-2017

955 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: 2015 12 10_ipv6対応について

IPv6対応について

Page 2: 2015 12 10_ipv6対応について

1. はじめに2. Appleの審査について3. IPv6、DNS、NAT等について4. NAT64/DNS64について5. NAT64/DNS64の構築6. IPv6 only networkの挙動7. まとめ

目次

Page 3: 2015 12 10_ipv6対応について

はじめに

Page 4: 2015 12 10_ipv6対応について

“IPv6対応”と呼ばれるものがなんなのか、共通認識

を持つこと

対応に必要なことはなんなのか理解すること

この勉強会の目的

Page 5: 2015 12 10_ipv6対応について

Appleの審査について

Page 6: 2015 12 10_ipv6対応について

参考記事

「Supporting IPv6 DNS64/NAT64 Networks」 / Apple「iOS9 で必要な IPv6 only Network への対応」

審査落とされる!

2016年初頭以降appleに申請を出すアプリに関して、”IPv6対応”が義務付けられました。

具体的にはDNS64/NAT64の環境でも問題なく動くようにアプリが

作られていなかった場合、2016年初頭よりAppleの審査に落とさ

れるとのこと。

Page 7: 2015 12 10_ipv6対応について

IPv6…?DNS…?NAT…?

ナニソレ→ざっくり説明

Page 8: 2015 12 10_ipv6対応について

・通信してデータをやりとりするプロトコル

・よくいうインターネットというのは、このプロトコルでやり取りする

ネットワークのこと

IP(Internet Protocol)

Page 9: 2015 12 10_ipv6対応について

IPアドレス(Internet Protocol address)

・電話でいう電話番号みたいなもの

・インターネット通信において相手にデータを送る宛先、送信元そ

れぞれの識別子

・IPv4ではこれが足りなくなってきている

→約43億個用意されていたが、インターネットの普及と共に枯渇

してしまった

Page 10: 2015 12 10_ipv6対応について

・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対応について

・IPアドレスを別の名前(ドメイン)に置き換える仕組み

・WebサイトやAPIサーバーなどは大体ドメインを持ってる

・ドメインでアクセス→ドメインからIPアドレスを取得してアクセス

DNS(Domain Name System)とは

Domain Name System173.194.120.95 www.google.co.jp

Page 12: 2015 12 10_ipv6対応について

LAN

・パケットに含まれるIPアドレスを、別のIPアドレスに変換する技術

・LANの中ではプライベートIPアドレス、外ではグローバルIPアドレスを使ってIPv4アドレ

ス枯渇を防ぐのに使われた

・ルーターなどがNAT機器に相当する

・大体今のネットワーク機器は高機能なのでここにファイアウォールの役割をしてセキュ

リティを高めたりもしている

NAT(Network Address Translation)とは

PC

PC

PC

NAT インターネット

Page 13: 2015 12 10_ipv6対応について

DNS64/NAT64について

Page 14: 2015 12 10_ipv6対応について

・IPv6→IPv4間の通信をする為の仕組み

・DNS64とNAT64はセットで動く

・IPv6端末でドメインでアクセスされた時、IPv6アドレスがあれば

IPv6アドレス、なければIPv4アドレスをIPv6アドレスに変換して返

してくれる

DNS64/NAT64とは

Page 19: 2015 12 10_ipv6対応について

・将来、IPv4はなくなっていく(はず)

・現在はIPv6への過渡期

・IPv6とIPv4の共存の為の仕組み

DNS64/NAT64とは

Page 20: 2015 12 10_ipv6対応について

NAT64/DNS64の構築

Page 21: 2015 12 10_ipv6対応について

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対応について

IPv6 only networkの挙動

Page 23: 2015 12 10_ipv6対応について

IPv6 only networkの挙動

・ここから先が実際に”IPv6対応”に関わってくる内容になります

・iOS9端末でNAT64/DNS64環境にしたEl CapitanのWifiに接続

してテストした結果です

Page 24: 2015 12 10_ipv6対応について

クライアントはIPv6アドレスなくてもいい

自分(iOS9端末)にIPv6アドレスがあるかどうかは

http://test-ipv6.com/で確認できる

Page 25: 2015 12 10_ipv6対応について

補足

MacのEl Capitanに構築したNAT64/DNS64環境はIPv6アドレス

を持っていなくても、その環境をエミュレートしてIPv6 Only

Network端末のようにアクセスさせる

→普通のNAT64/DNS64とはちょっと違うっぽい

→iOS8以下、Androidや別のMacからはアクセスできなかった

クライアントはIPv6アドレスなくてもいい

Page 26: 2015 12 10_ipv6対応について

IPv4アドレスでHTTPアクセスもできる

・NSURLSessionでIPv4アドレス直打ちのアクセス

・通常通りのレスポンス返ってきた

・現状は動作するけど、将来IPv4がなくなったら当然これは動かないはず

例:http://123.45.67.89へHTTPリクエスト投げてる

Page 27: 2015 12 10_ipv6対応について

サーバーはIPv4アドレスのみでもいい

・NSURLSessionでIPv4のみのサーバーへアクセス

・通常通りのレスポンス返ってきた

例:example.comIPv6のないサーバーへHTTPアクセス

Page 28: 2015 12 10_ipv6対応について

何をやっちゃいけないのか?

Page 29: 2015 12 10_ipv6対応について

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対応について

IPv4に依存した定数を使わないこと

AF_INETPF_INETstruct in_addrstruct sockaddr_inkDNSServiceProtocol_IPv4

↑Appleのサイトに乗っている非推奨定数(C言語)

Page 31: 2015 12 10_ipv6対応について

使っていなくても接続できない場合

・NSURLSessionやCFNetwork等、Objective-Cレイヤーの通信APIはApple側で対応

しているので、多分気にしなくていい

・通信ライブラリの中で使われている可能性がある

・実装次第ですが、エラーも出ずに繋がらないとかも有りえます

Page 32: 2015 12 10_ipv6対応について

繋がらないソース例

Page 33: 2015 12 10_ipv6対応について

・IPv6対応できてる?って言われたら

→MacのEl Capitanで動作確認してます!って言えるように

・サーバー側もIPv6にしないといけないんじゃないの?って言われたら

→Appleの審査通すだけならしなくても大丈夫です

・通信するアプリは必ず例の環境でテストしましょう

以上

まとめ