クライアント OS の IPv6 実装事情 ネットワークプラットフォーム研究開発グループ 北口善明 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved.
目次 クラゕント OS の IPv6 対応状況 IPv6 対応 OS における挙動整理 DNSリゾルバの実装 ゕドレス選択機構の実装 自動トンネリングの実装 まとめ 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 1/25
クライアント OS の IPv6 対応状況 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 2/25
2009 年のクラゕント OS ほぼ全てのクラゕント OS は IPv6 Ready! Windows XP OS Ready? 備考 Yes デフォルトでは IPv6 は無効注 DNS リゾルバは非対応 Windows Vista Yes Windows の IPv6 正式サポート版 Windows 7 RC Yes Vista と同様の実装 Mac OS X Yes Jaguar から正式サポート FreeBSD 5 系の IPv6 実装 Linux Yes Kernel-2.2 系からサポート *BSD* Yes KAME プロジェクトの実装 Solaris Yes Solaris 8 からサポート 注 Windows XP における ipv6 コマンドは ベータ版からの古いコマンドであるため現在は利用を推奨されていない IPv6 を有効化するには次の方法が推奨される 1.GUI 利用コントロールパネル > ネットワーク接続 > インターフェース ( プロパティからプロトコルを追加する ) 2.netsh コマンド netsh interface ipv6 install 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 3/25
Windows Vista 代表的なコンシューマOSがIPv6に完全対応 IPv6がデフォルトで有効 GUIによるIPv6 設定 IPv4/IPv6を意識させないAPI ほとんどの Windows コンポーネントが IPv6 対応 IPv6 only は容易だが IPv4 only は基本的に不可 自動トンネリング機能 IPv6 へ到達可能なトンネル接続を自動的に実施 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 4/25
IPv6 対応 OS における挙動整理 1DNS リゾルバの実装 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 5/25
DNS の IPv6 対応 DNS の IPv6 対応が持つ二つの意味 RR( リソースレコード ) の IPv6 対応 AAAA RR による正引き登録 ip6.arpa ドメンを用いた PTR RR による逆引き登録 トランスポートの IPv6 対応 DNS 通信の IPv6 利用 IPv6( デュゕルスタック ) 時代の名前解決 A RR と AAAA RR の両方を利用する 順次問い合わせを行う ( 実装により順番が異なる ) クエリ数は A クエリ +AAAA クエリなので単純に二倍に増加 名前解決と利用プロトコルは独立 AAAA クエリを IPv4 通信で可能 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 6/25
DNS リゾルバ実装 A クエリを優先する実装が一般的 AAAA クエリに未対応な機器による問題を回避するため 壊れた応答例 (RFC4707) 1 AAAAレコードの問い合わせを無視 3 NXDOMAIN 以外の不正なRCODEを返す 5 Lame Delegationになる 2 NXDOMAIN(RCODE=3) を返す 4 壊れた返答 /IPv4アドレスを返す 正しい応答は NOERROR(RCODE=0) で中身が空 A クエリの応答時間を基に AAAA クエリの待ち時間を決定 (FreeBSD,Vista など ) AAAA クエリの抑制 (Windows Vista) A クエリで NXDOMAIN なら AAAA クエリを抑制 グローバルIPv6 ゕドレス が付与されない限りAAAAクエリを抑制 Teredo ゕドレスを除くグローバルIPv6 ゕドレス 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 7/25
OS 毎の DNS リゾルバ実装 クエリ順序は OS で異なる AAAA クエリを先に実施する OS Windows XP,Linux A クエリを先に実施する OS Windows Vista,Windows 7 RC,FreeBSD,Mac OS X 利用プロトコルの優先順位 IPv6 を優先的に利用する OS Windows Vista,Windows 7 RC IPv4 しか利用できない OS Windows XP 設定フゔルに依存する OS(/etc/resolv.conf の順序 ) FreeBSD,Linux 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 8/25
( おまけ )DNS デゖスカバリ DNS サーバゕドレス取得方法に 3 種類の手法 RA による通知 (RDNSS オプション ) RFC5006(Experimental) DHCPv6 による通知 RFC3315 実装あり Well-known Anycast Address の利用 サトローカル利用に問題 (XP,Vista には設定が残っている ) DHCPv6 による設定が現状一般的 RA の O フラグと M フラグにより DHCPv6 に移行可能 ただし RFC4862 では削除された仕様 Windows Vista では O フラグ設定でステートレス DHCPv6 が動作 DNS サーバなどのネットワークパラメータのみ取得 M フラグ設定でステートフル DHCPv6 が動作 IPv6 ゕドレスも DHCPv6 で設定 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 9/25
IPv6 対応 OS における挙動整理 2 アドレス選択機構の実装 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 10/25
ゕドレス選択機構 (RFC3484) IPv6 では複数のゕドレスを使い分ける必要がある リンクローカルゕドレスとグローバルゕドレス IPv4 ゕドレスと IPv6 ゕドレス ポリシーテーブル など ゕドレス選択時に利用するラベルや優先度を定義 優先度 : 終点ゕドレス選択時に利用され高い値ほど優先 ラベル : 始点 / 終点ゕドレス選択時に利用され一致するものを優先 実装状況 RFC3484 の実装はほぼすべての OS で完了 ポリシーテーブル操作が不可のものもある Linux は kernel 2.6.25( 要 iproute2-2.6.25 以上 ) から送信元ゕドレスのためのラベル操作が可能 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 11/25
ポリシーテーブルの実装 (1) Windows Vista のデフォルト設定 netsh interface ipv6 show prefixpolicies で確認可能 C:>netsh interface ipv6 show prefixpolicies アクティブ状態を照会しています... 優先順位 ラベル プレフィックス ---------- ----- -------------------------------- 50 0 ::1/128 40 1 ::/0 30 2 2002::/16 20 3 ::/96 10 4 ::ffff:0:0/96 5 5 2001::/32 IPv6 ゕドレス IPv4 ゕドレス 6to4 ゕドレス Teredo ゕドレス C: Windows system32> RFC3484 における標準設定 +Teredo ゕドレス 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 12/25
ポリシーテーブルの実装 (2) Linux(kernel 2.6.25 以上 ) ip addrlabel show で確認可能 (iproute2-2.6.25 以上 ) $ ip addrlabel show prefix ::1/128 label 0 prefix ::/96 label 3 prefix ::ffff:0.0.0.0/96 label 4 prefix 2001::/32 label 6 prefix 2002::/16 label 2 prefix fc00::/7 label 5 prefix ::/0 label 1 Linux では ULA のラベルも独自追加されている 優先度は /etc/gai.conf で設定 $ cat /etc/gai.conf #precedence ::1/128 50 #precedence ::/0 40 #precedence 2002::/16 30 #precedence ::/96 20 #precedence ::ffff:0:0/96 10 ULA デフォルトは /usr/share/doc/glibc-common-2.*/gai.conf 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 13/25
ポリシーテーブルの実装 (3) FreeBSD ip6addrctl show で確認可能 % ip6addrctl show Prefix Prec Label Use ::1/128 50 0 0 ::/0 40 1 10 2002::/16 30 2 0 ::/96 20 3 0 ::ffff:0.0.0.0/96 10 4 0 RFC3484 の標準設定のみ 6.2 RELEASE, 7.0 RELEASE までは /etc/rc.conf に ip6addrctl_enable="yes の設定が必要 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 14/25
ポリシーテーブルの応用 IPv4 優先設定 デフォルトのポリシーテーブルはIPv6の優先度が高い IPv4 優先は ::ffff:0:0/96 の優先度を高くするとOK Windows Vista/XP C:>netsh interface ipv6 set prefixpolicies ::ffff:0:0/96 45 4 C:>netsh interface ipv6 add prefixpolicies ::1/128 50 0 C:>netsh interface ipv6 add prefixpolicies ::/0 40 1 C:>netsh interface ipv6 add prefixpolicies 2002::/16 30 2 C:>netsh interface ipv6 add prefixpolicies ::/96 20 3 C:>netsh interface ipv6 add prefixpolicies 2001::/32 5 5 初めての設定時には全てのエントリが消えるので追加が必要 Windows XP の場合には add ではなく set となる Linux # vi /etc/gai.conf precedence ::ffff:0:0/96 45 FreeBSD # /etc/rc.d/ip6addrctl prefer_ipv4 優先度を切り替えるスクリプトがある /etc/gai.conf に変更行のみ追加 ::/0 の優先度はデフォルトの 40 とした場合 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 15/25
IPv6 対応 OS における挙動整理 3 自動トンネリングの実装 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 16/25
自動トンネリング 6to4(RFC3056) トンネル接続と IPv6 ゕドレス割り当てを同時に実現 IPv4 グローバルゕドレスを利用した IPv6 ゕドレス 6to4 のアドレス形式 6to4 TLA 2002 6to4 端末の IPv4 ゕドレス /48 のアドレス空間が割り当てられる Teredo(RFC4380) サブネット ID NAT トラバーサルを IPv6 で実現する技術 NAT の内側から IPv6 トンネル接続が可能 ンターフェス ID 16ビット 32ビット 16ビット 64ビット Teredo のアドレス形式 Teredo プレフゖックス 2001:0000 Teredo サーバの IPv4 ゕドレス /128 のアドレスが一つ割り当てられる フラグ 隠蔽したポート番号 隠蔽した NAT IPv4 ゕドレス 32ビット 32ビット 16ビット 16ビット 32ビット 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 17/25
6to4 端末 IPv6 端末通信の仕組み IPv6 ネットワーク IPv6 端末 2001:db8::1 6to4リレールータ 192.88.99.1 6to4 ルータ 1 6to4 ネットワーク 6to4 端末 2002:0200:0001::1 2.0.0.1 2002::/16 を広告 192.88.99/24を広告 IPv4ネットワーク 2 6to4リレールータ 192.88.99.1 6to4 エニーキャストプレフゖックス (192.88.99/24) を IPv4 ネットワークに広告 IPv4 の経路的に近い 6to4 ルータ経由で送信 (1) 6to4 リレールータはボランテゖゕ運用が一般的 6to4 空間 (2002::/16) を IPv6 ネットワークに広告 IPv6 の経路的に近い 6to4 ルータ経由で返信 (2) 往復の経路は基本的に異なる トラブルシュートが困難 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 18/25
6to4 の実装と挙動 Windows Vista では IPv4 グローバルゕドレスが設定されると 6to4 トンネルンターフェスもデフォルトで設定する C:>ipconfig Tunnel adapter ローカルエリア接続 * 20: 接続固有の DNS サフィックス... : IPv6 アドレス........... : 2002:dxxx:xxx2::dxxx:xxx2 デフォルトゲートウェイ..... : 2002:c058:6301::c058:6301 6to4 リレールータとして 6to4.ipv6.microsoft.com(192.99.88.1) が設定されている 利用されるのは IPv6 オンリーサーバのみ ポリシーテーブルのラベルが IPv6 ゕドレスと異なる デュゕルスタックサーバに対しては ラベルが一致する IPv4 ゕドレスが選ばれるため 6to4 は使われない 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 19/25
( おまけ )6to4 利用設定 デュゕルスタックサーバに6to4で接続する方法 IPv6 ゕドレスと 6to4 ゕドレスのラベルを合わせると良い netsh interface ipv6 set prefixpolicies 2002::/16 30 1 C:>netsh interface ipv6 show prefixpolicies アクティブ状態を照会しています... 優先順位 ラベル プレフィックス ---------- ----- -------------------------------- 50 0 ::1/128 40 1 ::/0 30 1 2002::/16 20 3 ::/96 10 4 ::ffff:0:0/96 5 5 2001::/32 C: Windows system32> 初めての設定時には全てのエントリが消えるので追加が必要 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 20/25
Teredo 端末 IPv6 端末通信の仕組み IPv6 ネットワーク IPv6 端末 2001:db8::1 Teredoサーバ 1.2.3.4 1 NATルータ IPv4プライベート Teredo 端末 2001:0:0102:0304: 2001::/32 を広告 IPv4 ネットワーク 2 Teredo リレー IPv6 端末との通信に利用するための Teredo リレーを発見するために Teredo サーバ経由で Ping を実施 (1) Teredo 空間 (2001::/32) を IPv6 ネットワークに広告 IPv6 の経路的に近い Teredo リレー経由で返信 IPv6 端末に近い Teredo リレーを経由して通信 (2) Tereso サーバや Teredo リレーはボランテゖゕ運用が一般的 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 21/25
Teredo の実装と挙動 Windows Vista では NAT ルータ配下の IPv4 プラベートゕドレスが設定されると Teredo トンネルンターフェスをデフォルトで設定する (Windows Firewall が有効である場合 ) C:>ipconfig Tunnel adapter ローカルエリア接続 * 6: 接続固有の DNS サフィックス... : IPv6 アドレス........... : 2001:0:cf2e:3096:247d:XXXX:XXXX:YYYY リンクローカル IPv6 アドレス.... : fe80::247d:xxxx:86fd:xxxx%10 デフォルトゲートウェイ..... : Teredo サーバとして teredo.ipv6.microsoft.com が設定されている Teredo ゕドレスのみでは IPv6 は利用されない AAAA クエリを実施しないので実質利用されない IPv6 ゕドレスを指定すると通信を行う 中から一度発信しないと外から受け付けない 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 22/25
Teredo の経路制御 サーバ (idc) 側でコントロール可能 Teredo リレーをサーバ隣に設置すると... Teredo 端末 Teredo サーバ IPv6 ネットワーク 2001::/32 を広告 IPv6 ルータ IPv6 サーバ IPv4 プライベート NAT ルータ 1 Teredoリレー IPv4ネットワーク 2 idc 2001::/32を Teredoリレー自組織のみに広告 通常はネットワーク上で IPv6 的に近い 他組織が提供する Teredo リレーを経路制御で選ばれて利用される (1) 自組織で提供する Teredo リレーを設置することで利用する Teredo リレーをコントロールできる (2) Teredo による IPv6 通信を IPv4 ネットワーク主体で利用可能 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 23/25
まとめ 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 24/25
まとめ クラゕントは IPv6 Ready! IPv6 が機能している認識が必要 IPv4 ネットワークでも IPv6 名前解決が行われたり IPv4 を経由した IPv6 通信能力を備えていたり ネットワーク / サービスの IPv6 対応待ち IPv6 Ready= デュゕルスタック IPv4 のみの場合と挙動が複雑 運用者はこの挙動を理解しておく必要がある 自動トンネル機能は IPv6 世界への近道だがトラブルシュートが複雑 リレールータは他組織のボランテゖゕ運用で原因特定が困難 2009/06/12 Copyright 2009 Y. Kitaguchi & Intec NetCore, Inc. All Rights Reserved. 25/25