ipv6 readyって何? nat64/dns64 徹底解説! #iosdc #b
TRANSCRIPT
IPv6 Readyって何だ? NAT64/DNS64の
本当の使い方とは?
藤崎智宏/Internet Society Japan Chapter (ISOC-JP)
岡田雅之/JPNIC,CONBU
自己紹介
•藤崎 智宏(ISOC-JP,そのほか沢山)• Twitter:@dudisaki• メイン:電話屋で,インターネット関連の仕事• IPv6普及に取り組んでいます.
• IPv6普及・高度化推進協議会• アプリケーションのIPv6対応検討SWG部会長• IPv6導入に起因する問題検討SWG部会長等
•岡田 雅之(JPNIC/CONBU/{JANOG})• Twitter:@smadako
• FBのほうが活発です
• ネットワーク関係• IPアドレス配布と関係するシステム
2
インターネットとIPアドレス
3
インターネット
機器(モノ)がインターネットにつながるには,IPアドレスが必要
192.0.2.1
198.51.100.1203.0.113.1
従来から利用されてきたのは”IPv4アドレス”
IPv4では,IPアドレスは 32ビット≒約43億個
IPv4アドレス在庫の枯渇世界的に,IPv4アドレスはほぼ利用し尽くされているのが現状
第30回JPNICオープンポリシーミーティング JPNIC報告資料より抜粋http://www.jpopf.net/JPOPM30Program?action=AttachFile&do=view&target=4_policy-implementation.pdf
IPアドレスが入手できないと,インターネット
が拡張できない!今後の発展のため,インターネットのバージョンアップが進行中!
「IPv4 → IPv6へ」
IPv6とはIPv4の後継プロトコルとしてインターネット標準化団体(IETF)で規定.アドレス数を大幅に増やした
IPv6アドレス: 128ビット
(IPv4: 32ビット)
プロトコル的にはIPv4互換性無し
IPv4機器とIPv6機器は相互に通信不可
同じネットワーク上には共存可能機器はIPv4・IPv6両対応が必要
4
IPv4バケツ一杯分の砂の数
IPv6太陽一個分(地球100万個分)の体積の砂の数
IPv4v4
IPv6v6
変換装置
IPv4による通信
ホストA
ホストB
ホストC
IPv6による通信
IPv6スタックIPv6スタック
IPv4スタック
IPv4スタック
IPv4スタック
IPv4/v6 共存ネットワーク
変換装置による対応もあり
IPv6の普及状況
•世界的に普及が進んでいます.
5
IPv6の普及度https://stats.labs.apnic.net/ipv6/
Google サーバへの通信の割合https://www.google.com/intl/ja/ipv6/statistics.html
IPv6とGoogle, Apple
• Google も Apple も,「インターネットの継続的な発展」という観点から,IPv6普及に積極対応.• 両社,各種サービスはほとんどIPv6対応済み
• Appleにおいては,2016年6月から,iOSアプリの IPv6対応を必須化• アプリ審査でチェック
• 実際に審査が通らなかった
例もあるようです.
6https://developer.apple.com/news/?id=05042016a
Appleの文書より(1)対応プログラムAppleは開発者向け文書で対応方法やテスト方法を解説
https://developer.apple.com/jp/documentation/の,”ネットワーキングオーバービュー ”から,” IPv6 DNS64/NAT64ネットワークのサポート”
IPv6対応ネットワークプログラミングの注意点• プロトコルに埋め込まれたIPアドレスリテラル。
• 構成ファイルに埋め込まれたIPアドレスリテラル。
• ネットワークプリフライト
• 低レベルネットワークAPIの使用
• 小さなアドレスファミリストレージコンテナの使用
IPアドレスを直接プログラムに書かない!
IPアドレスを直接設定ファイルに書かない!
プリフライト(≒インターネット接続チェック)をつかわない!
高レベルAPIで救われる落とし穴にはまる!
IPアドレスは32bitだけじゃない!7
残念な例(1)
8
残念な例(2)
9
memset(&ptr, 0, sizeof(ptr));
ptr.ai_family = AF_INET;ptr.ai_socktype = SOCK_STREAM;
if((ret = getaddrinfo(host, NULL, &ptr, &info )) ! = 0 {printf("network error %d ¥n", ret);return -1;
}
残念な例(3)
残念ながら、探すとたくさんこういった例がいっぱいあります・・・・(T_T)
10
よくある例
Appleの文書より(2)試験環境• IPv6 only (デュアルスタックでなく)の環境でのアプリ試験環境について解説
• IPv4インターネットへは,プロトコル変換 (DNS64/NAT64)を利用したアクセスを想定
11
DNS64サーバ
クライアント
DNS問い合わせ
IPv6アドレス,または合成IPv6アドレス(IPv4ア
ドレスから変換されたIPv6アドレス) IPv4サーバ
クライアント
NAT64ゲートウェイ
IPv6サーバ
合成IPv6アドレ
スに対するコンテンツの要求/返答
コンテンツの要求/返答
IPv6アド
レスに対するコンテンツの要求/返答
① ②
DNS64/NAT64の動作概略
•同文書で詳解されているテスト環境
https://developer.apple.com/jp/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1より抜粋
”IPv6対応” でなく,「DNS64/NAT64環境でのIPv4インターネットへのアクセス」方法なので,注意.
Appleの文書より(2)試験環境続き
12
v6は珍しくありません
13
IPv6へのお誘い
• IPv6普及・高度化推進協議会
お宝満載!
14
IPv4枯渇タスクフォース・JPNICセミナーhttp://kokatsu.jp/
15
IPv4枯渇タスクフォース・JPNICセミナーhttps://www.nic.ad.jp/
16
本日の会場ネットワーク
• NAT64/DNS64環境もご用意• SSID:iosdc-cookpad-64/pass: yatteiku
•動かないアプリがあったら教えてください!• @conbu_net or @smadako等