vsug day 2011 summer - ipv6 now

40

Upload: yutaro-ono

Post on 27-Jun-2015

1.803 views

Category:

Technology


3 download

DESCRIPTION

Visual Studio User Group, VSUG Day 2011 Summer - IPv6 Now. at 2011-06-19.

TRANSCRIPT

Page 1: VSUG Day 2011 Summer - IPv6 Now
Page 2: VSUG Day 2011 Summer - IPv6 Now

IPv6 なう.NET Framework で IPv6 に追いつこう

小野 雄太郎Microsoft MVP for ASP.NET/IIS, Jan 2011-Dec 2011.

Page 3: VSUG Day 2011 Summer - IPv6 Now

Agenda

• IPv6 なう– IPv4 枯渇しました– World IPv6 Day が行われました

• IPv4 はなくなるのか• .NET Framework で IPv6 に対応する

– クライアントサイド– サーバーサイド

• ネットワーク構築とトラブルシューティング

Page 4: VSUG Day 2011 Summer - IPv6 Now

IPv4 アドレスは売り切れました

• 2011 年 2 月 3 日に IANA から RIR に最後の割り振り (/8)

• 2011 年 4 月 25 日に APNIC の在庫枯渇により割り振り終了

出典 : JPNIC

Page 5: VSUG Day 2011 Summer - IPv6 Now

アドレス枯渇による影響

• 予想される影響– 大規模なデータセンタ新築が困難になる

• 既存 IP ブロックを持っている事業者以外は難しい

– ブランチオフィスとの VPN 接続用 IP の確保が課題に• 日本だけでなく APAC 地域で顕著と予想される

– キャリアグレード NAT 導入による影響• ISP から振られる IP が Private Address 化する• 多段 NAT 化したさいのアプリケーションへの影

Page 6: VSUG Day 2011 Summer - IPv6 Now

アドレス枯渇による影響

• 間違った懸念– 既存のネットワークが使えなくなる

• レガシーはレガシーとして動き続ける• ただしキャリアグレード NAT 等の導入状況は注

視する必要がある– すべてのネットワークを IPv6 に移行する必要があ

る• Dual Stack (IPv4 + IPv6 ハイブリッド ) とし

て並行稼働していく

Page 7: VSUG Day 2011 Summer - IPv6 Now

World IPv6 Day

• 世界中の Web サービスが、 2011 年 6 月 8 日の 24時間だけ IPv6 対応にして、その影響を調べようという世界規模の自主的な実験が行われました– http://www.worldipv6day.org– http://www.attn.jp/worldipv6day/ ( 日本語情報 )

Page 8: VSUG Day 2011 Summer - IPv6 Now

World IPv6 Day の結果

• 大きな問題は現在のところ報告されていない– サイト側の設定ミスによる不具合等はあった

• さまざまな情報が徐々に集約されてきているので、今後各地で公開される情報を参考に– 6/21 に振り返りのミーティングが行われる予定

• http://www.attn.jp/worldipv6day/meeting/20110621/

– JANOG (Japan Network Operator’s Group) が主催する JANOG28 Meeting (7/14-15) でもセッションあり

• http://www.janog.gr.jp/meeting/janog28/

Page 9: VSUG Day 2011 Summer - IPv6 Now

日本固有の問題

• NTT 東西 ( フレッツサービス ) に関する混乱– フレッツ網におけるサービス ( ビデオオンデマンド

等 ) で、 IPv6 を使っていることに起因する接続性問題• フレッツ光ネクストでは、

フレッツ網を通じた IPv6 接続サービスが始まった

Page 10: VSUG Day 2011 Summer - IPv6 Now

IPv4 はなくなるのか

Page 11: VSUG Day 2011 Summer - IPv6 Now

IPv4 のゆくえ

• 当面は使われ続ける– 明日 bing ることができなくなることはない– 社内向けサービスを IPv6 専用へ書き換える必要は

おそらくない• サーバーファームを作ることは難しくなる

– 新しい公開サービスに IPv6 が使われる可能性は高い• オンラインゲームのサーバへ IPv6 でつながるなど• IPv6 トンネル機能が内蔵されるかも

• パブリッククラウドへ逃げることも一時的な対策としかならない

Page 12: VSUG Day 2011 Summer - IPv6 Now

枯渇対応アクションプラン

• IPv4 アドレス枯渇対応タスクフォースが、枯渇対応に関するアクションプランの推薦パターンを公開している– http://www.kokatsu.jp/blog/ipv4/

– 枯渇対応アクションプラン• http://www.kokatsu.jp/blog/ipv4/news/2011/04/ipv4-

201104.html

Page 13: VSUG Day 2011 Summer - IPv6 Now

例 : ASP/CSP 向け アクションプラン

Page 14: VSUG Day 2011 Summer - IPv6 Now

.NET Framework で IPv6 に対応する

Ready, set, go

Page 15: VSUG Day 2011 Summer - IPv6 Now

.NET Framework で IPv6 対応するために

• Ready to go!– フレームワークはすでに対応済み– もっとも対応できていないのは UI のケースが多数– IPv6 ならではの、アドレス選択の仕組みを意識す

る必要があるケースも

Page 16: VSUG Day 2011 Summer - IPv6 Now

UI の対応方法 (1)

• アドレスを入力できるようにする

Page 17: VSUG Day 2011 Summer - IPv6 Now

UI の対応方法 (2)

• アドレスをルックアップする

Page 18: VSUG Day 2011 Summer - IPv6 Now

ローカル IP アドレスをルックアップする

• ローカルホストのアドレスを解決する

string hostname = String.Empty;IPHostEntry iphost = Dns.GetHostEntry(hostname);IPAddress[] addresses = iphost.AddressList;

• AddressFamily でプロトコルを判別できるif (address.AddressFamily == AddressFamily.InterNetworkV6)

Page 19: VSUG Day 2011 Summer - IPv6 Now

アドレスのチェック方法

• IPAddress.TryParse() を利用する

string inputAddress = this.TextBoxParsing.Text.Trim();IPAddress address;

if (!IPAddress.TryParse(inputAddress, out address)) { this.ShowResult(" アドレスが正しい形式ではありません。 ");} else { this.ShowResult(address.ToString());}

Page 20: VSUG Day 2011 Summer - IPv6 Now

IPv6 で待ち受け

// ローカルのアドレスをルックアップするstring hostname = String.Empty;IPHostEntry iphost = Dns.GetHostEntry(hostname);IPAddress[] addresses = iphost.AddressList;

// v6 アドレスのみ選択するIPAddress[] addressV6 = addresses.Where(p => p.AddressFamily == AddressFamily.InterNetworkV6).ToArray();

// v6 アドレスがない場合if (addressV6.Count() < 1){ throw new ApplicationException();}

// v6 アドレスで待ち受けを開始するTcpListener listener = new TcpListener(addressV6.First(), tcpPort);listener.Start();

Page 21: VSUG Day 2011 Summer - IPv6 Now

IPv6 でつなぐ

// ローカルのアドレスをルックアップするstring hostname = String.Empty;IPHostEntry iphost = Dns.GetHostEntry(hostname);IPAddress[] addresses = iphost.AddressList;

// v6 アドレスのみ選択するIPAddress[] addressV6 = addresses.Where(p => p.AddressFamily == AddressFamily.InterNetworkV6).ToArray();

// v6 アドレスがない場合if (addressV6.Count() < 1){ throw new ApplicationException();}

// サーバに接続するTcpClient client = new TcpClient(AddressFamily.InterNetworkV6);client.Connect(addressV6, tcpPort);

Page 22: VSUG Day 2011 Summer - IPv6 Now

DNS解決

• IPv6 リンクローカルアドレスしか割り当てられていないときは、 AAAA レコードは結果からフィルタされる

IPHostEntry hostGoogle = Dns.GetHostEntry("www.google.com.");IPHostEntry hostV6pc = Dns.GetHostEntry("v6pc.jp.");IPHostEntry hostXbox = Dns.GetHostEntry("xbox.com.");

Page 23: VSUG Day 2011 Summer - IPv6 Now

WFC の場合

• IPv6 アドレスでリスンすることももちろん可能

<?xml version="1.0" encoding="utf-8" ?><configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="WcfService_Behavior"> <serviceDebug httpHelpPageUrl="http://[::1]:4002/IPv6WCFServer/WcfService/Help" /> <serviceMetadata httpGetEnabled="true" httpGetUrl="http://[::1]:4002/IPv6WCFServer/WcfService/mex" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="WcfService_Behavior" name="IPv6WCFServer.WcfService"> <endpoint address="http://[::1]:4002/IPv6WCFServer/WcfService" binding="basicHttpBinding" bindingConfiguration="" contract="IPv6WCFServer.WcfService" /> </service> </services> </system.serviceModel></configuration>

Page 24: VSUG Day 2011 Summer - IPv6 Now

インターフェース指定

• IPv6 ではアドレスと同時にインターフェースを指定する場合がある– 例 : fe80::80%4

• UI 上で入力拒否しない– IPAddress.TryParse() を活用

• インターフェースの確認– ipconfig /all– netsh int ipv6 show addr

Page 25: VSUG Day 2011 Summer - IPv6 Now

IPv6管理コマンド

• netsh interface ipv6 を主に利用するshow addresses - 現在の IP アドレスを表示します。show compartments - コンパートメント パラメーターを表示します。show destinationcache - 宛先キャッシュ エントリを表示します。show dnsservers - DNS サーバー アドレスを表示します。show dynamicportrange - 動的ポート範囲の構成パラメーターを表示します。show global - グローバル構成パラメーターを表示します。show interfaces - インターフェイス パラメーターを表示します。show ipstats - IP 統計情報を表示します。show joins - 参加したマルチキャスト グループを表示します。show neighbors - 近隣キャッシュ エントリを表示します。show offload - offload 情報を表示します。show potentialrouters - 利用可能なルーターを表示します。show prefixpolicies - プレフィックス ポリシー エントリを表示します。show privacy - プライバシー構成パラメーターを表示します。show route - ルート テーブル エントリを表示します。show siteprefixes - サイト プレフィックス テーブル エントリを表示します。show subinterfaces - サブインターフェイス パラメーターを表示します。show tcpstats - TCP 統計情報を表示します。show teredo - Teredo 状態を表示します。show udpstats - UDP 統計情報を表示します。

Page 26: VSUG Day 2011 Summer - IPv6 Now

ネットワーク構築とトラブルシューティング

Page 27: VSUG Day 2011 Summer - IPv6 Now

IPv6 導入時に注意すべき課題

• IPv6普及・高度化推進協議会により、” IPv6 導入時に注意すべき課題” とした文書が公開予定となっている– 現在はパブリックコメントを募集中– http://www.v6pc.jp/jp/entry/wg/2011/06/ipv6.phtml

• これまでに判明している課題を一度に把握できるドキュメントとなっている

Page 28: VSUG Day 2011 Summer - IPv6 Now

ネットワーク構築とトラブルシューティング

• IPv6 導入時に起こり得るトラブル– フォールバック問題– DNS回答による接続問題– エセ IPv6 対応ルータ– 不適切な ICMPv6 フィルタ

• ネットワーク設計に関すること– 不正な RA による Route 汚染– 非対称フィルタによるアクセス範囲拡大– ネットワーク帯域の非対称性

Page 29: VSUG Day 2011 Summer - IPv6 Now

フォールバック問題

• DNS で名前解決したときに IPv6 アドレスが返ってきたときに、クライアントが IPv6 で接続しようとするが、サーバやネットワークが IPv6 に対応していないとき、 IPv4 で再接続するまでに時間がかかる問題– IPv6 がタイムアウトするまで待機してしまう

• ブラウザが白いまましばらくロードされない

Page 30: VSUG Day 2011 Summer - IPv6 Now

DNS回答による接続問題

• AAAA レコードがない場合に、 NXDOMAIN を返してしまう DNS 実装の時に発生– IPv6 でも IPv4 でも接続できないケースも– DNS サーバだけでなく、ロードバランサやキャッ

シュサーバが返してしまうことも• IPv4 専用 / IPv6 専用に FQDN を別途用意すること

も– v6.vsug.jp– v4.vsug.jp

Page 31: VSUG Day 2011 Summer - IPv6 Now

エセ IPv6 対応ルータ

• 市販の IPv6 対応とうたうルータでは、 IPv6 のルーティングではなく “ブリッジ” に対応しているだけのケースがある– ネットワーク上を流れるパケットが思わぬ範囲まで流れてしまう危険性

– トンネル接続の IPv6 サービスなどでは利用できない

Page 32: VSUG Day 2011 Summer - IPv6 Now

不適切な ICMPv6 フィルタ

• IPv4 では ICMP をフィルタしても問題はなかった– IPv6 では ICMP による Path MTU Discovery を

行っており、 Too-Big-Message がフィルタされると IPv6 通信ができなくなることがある

– IPv6 では ICMP のフィルタはより慎重に、通すべきパケットは必ず通す必要がある

Page 33: VSUG Day 2011 Summer - IPv6 Now

不正な RA による Route 汚染

• RA (Router Advertisement) による Prefix および Default Route 配布が、不正な機器からの RA が流れることでハイジャックされてる危険– スイッチ等で RA をフィルタするなどの考慮が必要

Page 34: VSUG Day 2011 Summer - IPv6 Now

非対称フィルタによるアクセス範囲拡大

• IPv4 と IPv6 で、ルータ等に設定されたアクセスフィルタに違いがあると、本来アクセスできないはずのエンドポイントにアクセスできるようになってしまう危険性– 早期に IPv4 と IPv6 でのネットワーク設計を進め

Page 35: VSUG Day 2011 Summer - IPv6 Now

ネットワーク帯域の非対称性

• IPv6 では、 IPv4 とは違う経路を使う可能性がある– トンネル接続で IPv6 を使っているなど

• 帯域の非対称性により、 IPv6 で接続した場合にアプリケーションに必要な帯域が確保されないなどがありうる– 名前解決に加え、 IPv4 / IPv6 どちらのアドレスを優先するかなどを設定できる機能が役に立つ

Page 36: VSUG Day 2011 Summer - IPv6 Now

まとめ

Page 37: VSUG Day 2011 Summer - IPv6 Now

IPv6 なう

• IPv6 はインターネットで大規模展開され始めた• .NET Framework を使えば、すぐに IPv6 通信は可能• ネットワーク環境を並行して準備する必要はある

– データセンタはすぐに対策を

Page 38: VSUG Day 2011 Summer - IPv6 Now

Be Action!

Page 39: VSUG Day 2011 Summer - IPv6 Now

Questions?

Page 40: VSUG Day 2011 Summer - IPv6 Now