IPv4 IPv6 IPv4 IPv6 IPv6 移行ソリューション丸分かり A10ネットワークス株式会社 〒105-0001 東京都港区虎ノ門4 - 3 -20 神谷町MTビル16 階 TEL: 03-5777-1995 FAX: 03-5777-1997 Email: [email protected] http://www.a10networks.co.jp ●仕様は予告無く変更することがあります。最新の情報は弊社WEBサイトでご確認下さい。●本書で使用した登録商標および商標はそれぞれの所有者の資産です。 ©2012 A10Networks, K.K. All rights reserved #IPv6_20120801 A10ネットワークス株式会社 IPv6 移行ソリューション丸分かり 索引 移行ソリューション、その選択肢を知る 現実となった IPv6 移行の日...................................................................................... 2 さまざまな IPv4 / IPv6 移行ソリューション.................................................... 2 IPv4 延命策の「 LSN( CGN)」.................................................................................. 3 アクセスラインが先に IPv6 化しているなら「 DS-Lite」 ............................... 4 それでも残る IPv4 サーバへのアクセスを確保、 「 NAT64」......................... 5 ロードバランスとの一石二鳥、 「 SLB-PT」........................................................... 5 アクセスラインが取り残された場合には「 6rd」............................................. 6 移行ソリューション導入時の注意点..................................................................... 7 さて、どこから手を付けよう?................................................................................. 7 SLB-PT で Web サーバをさくっとIPv6 対応に Web サーバに手を付けず IPv6 対応..................................................................... 8 対象となるネットワーク.............................................................................................. 9 NAT-PTの設定方法.....................................................................................................10 検討事項 1:MTU に関連する考慮......................................................................11 検討事項 2:L7ヘッダやそのペイロードのリライト....................................12 検討事項 3:IPv4 ←→ IPv6 間の変換ログの保存........................................13 端末に先を越される? サーバの IPv6 対応......................................................15 NAT64 で IPv6 端末を IPv4 サーバにつなげよう 一台二役を果たす「 NAT64/DNS64」.................................................................16 動作フロー.......................................................................................................................17 AX シリーズにおける NAT64/DNS64 の設定例.............................................18 フラグメンテーションのサポート........................................................................ 20 HTTP ならばリンク先のリライトは原則不要に.............................................21 NAT64 セッションログの保存................................................................................ 22 当面続く 「 移行期 」への備えを............................................................................ 22 出典:@ IT『IPv6 移行ソリューション丸分かり』2012 年 3 月~ 5 月 http://www.atmarkit.co.jp/fnetwork/index/index_transfer.html 1 移行ソリューション、その選択肢を知る 移行ソリューション、その選択肢を知る IPv4 IPv6 現実となった IPv6 移行の日 IPv6 約 1年前となる 2011年 4 月15日に、JPNIC において IPv4 アドレスの割り振りが終了しました。つ いに IPv4 枯渇カウントダウンの最後の日がきてしまったわけですが、翌日からすぐに、現場で問題 が発生しているかというとそうではありません。なぜなら、まだ JPNIC から割り当てられた v4アドレ スは、ISP の在庫として残っているからです。 しかしながら、その在庫もそう長くは保ちません。2012 年度から徐々に IPv4アドレスの枯渇問題 が現場で顕在化してくると思われます。つまり、インターネット回線を申し込んでも、アドレスがな いので申し込みを受けられない、という事態が発生することが考えられます。そういう観点でいえ ば、2012 年は昨年までとは緊迫度が異なります。 ならば一気にすべてを IPv6 に――というのが理想ではありますが、現実にはそうはいきません。 インターネットはいろいろなサービス事業者( データセンター事業者/ IX /バックボーン/アクセ スライン/ケーブルテレビ事業者/モバイルオペレータなど)の集合体です。ネットワークを IPv6 化 にするには、ルータなどの機器のアップグレードや運用の変更などのコストなども発生することか ら、事業性も考えると、どうしても足並みはそろいません。 現実としては、コアバックボーン/アクセスライン/データセンターなどのサービスの IPv6 化の足 並みを見ながら、段階的に IPv6 対応を進めていくための、IPv4 / IPv6 移行ソリューションが重要 となってきます。 今回の連載では、現在すでに利用可能な IPv4 / IPv6 移行ソリューションをいくつか紹介し、構 成やコマンドを交えながら特徴を説明していきたいと思います。 IPv4 IPv6 さまざまな IPv4 / IPv6 移行ソリューション IPv6 先にもお話ししたとおり、インターネットはさまざまな企業や組織が運営する、ネットワークデバ イスの集合体です。そのため、それぞれの集合体もしくはサービスにより、IPv4 / IPv6 のサービス が混在する形となります。 表 1に、ホームデバイス/ ISP やアクセス回線/宛先という、ネットワークを構成する 3 つの要素 が IPv4 なのか IPv6 なのかによって、どのような IPv4 / IPv6 移行ソリューションが選択可能かを分 類しました。 ホームデバイス IPv4 ISP やアクセス回線 IPv4 宛先 IPv4 IPv4 IPv6 IPv4 IPv6 IPv6 IPv4 IPv6 IPv6 IPv4 IPv6 IPv6 IPv6 ソリューション LSN(CGN) DS-Lite 4rd NAT64 SLB-PT 6rd Dual Stack 表1 2 移行ソリューション、その選択肢を知る 移行ソリューション、その選択肢を知る CGN 網内も このように IPv4 / IPv6 移行ソリューションは1つしかないというものではなく、ネットワーク構成な どにより、いくつかの選択肢があります。筆者が所属している A10 ネットワークスでも、そのいくつ かを提供しています。 ・User Quota( Fairness in sharing theIPv4プライベート resources) IP を使用 NAT プライベートIP 平等にグローバル IP を共有するため、各ユーザーが使用できるポート数に制限を設ける機能。 TCP、 複数のユーザで キャリアグレードNAT グローバルIPを共有 プライベートIP UDP、ICMP それぞれに最大使用可能セッション数を設定できる では以下に、各移行ソリューションの構成や特徴を簡単に紹介しましょう。 ・Sticky NAT( Internal ) IPv4 IP to External IP mapping NAT NATセッション後も、一定の時間、 同じ送信元の通信に対し同じグローバル IP を使用する機能 CGN網 IPv4 ・LSN NAT Logging NAT SP IPv4バックボーン LSN NAT session 作成時と開放時にロギングする機能 ( 変換前の送信元 IP アドレス/ポート→変換 IPv4 インターネット プライベートIP プライベートIP 後の送信元 IP アドレス/ポート /あて先 IP アドレス/ポート) プライベートIP IPv6 IPv4 延命策の「LSN(CGN)」 IPv6 NAT プライベートIP プライベートIP IPv4 CGN網 NAT CGN 網内も IPv4プライベート IP を使用 キャリアグレードNAT プライベートIP IPv4トラフィックは IPv6 でトンネリング Dual-Stack Lite グローバルIP プライベートアドレスを NAT グローバルIP SP IPv4バックボーン IPv4 インターネット プライベートIP 宅内の IP v4 プライベート IP IPv6 アクセスラインが先に IPv6 化しているなら「 DS-Lite 」 IPv6 NAT プライベートIP IPv4 IPv4 IPv4 複数のユーザで グローバルIPを共有 グローバルIP IPv6トンネル 終端 IPv4 over IPv6 IPv4 NAT SP IPv6バックボーン 宅内の IP v4 プライベート IP IPv4 インターネット IPv6 図 1:LSN( CGN)のアーキテクチャ IPv6トラフィックはそのまま転送 プライベートアドレスを IPv4トラフィックは NAT IPv6 (でトンネリング 端末 )←→ IPv4 ( ISP/アクセス回線 )←→ IPv4( 宛先 ) ■ ネットワーク構成:IPv4 Dual-Stack Lite ■ 通信手法:NAT グローバルIP IPv6トンネル ■ 概要:以前は LSN( Large Scale NAT ) と呼んでいましたが、 現在は CGN( Carrier Grade NAT ) とい NAT 終端 IPv4 う呼び方をしています。 この手法は IPv6 への移行ではなく、 IPv4 枯渇対策もしくは延命のための手法 IPv4 over IPv6 です。 IPv4 インターネット SP IPv6バックボーン この構成図では、宅内は IPv4( プライベート)、アクセス回線は IPv4( プライベート) 、キャリアバッ クボーン内は IPv4( パブリック)の「 NAT444」 ( IPv4 ←→ IPv4 変換を2 度行うのでこのように書き IPv6 ます)構成です。 IPv6 インターネット IPv6トラフィックはそのまま転送 IPv4 インターネット側へ抜ける際には、 1つのパブリックIP を複数のユーザーで共有することによ り、必要なパブリックIP アドレスの数を削減します。それ自体は、従来の NAT で行っている処理と 何ら変わりないわけですが、“ キャリアグレード ”と呼んでいるからには理由があります。よりスケー ルし、キャリア側でサービスレベルをコントロールするため、以下のような付加機能がさらに備わっ ています。 DNS サーバ IPv4 サーバ ・Full Cone NAT セッション確立後、グローバル側のどの IP/ポートからでもアクセスを可能にする、透過性が最も高 A? A い NAT 方式 IPv4 ネットワーク 図 2:DS-Lite のアーキテクチャ ■ ネットワーク構成:IPv4( 端末 )←→ IPv6( ISP/アクセス回線 )←→ IPv4( 宛先 ) ■ 通信手法:トンネル( IPv4 over IPv6) DNS サーバ IPv4 サーバ ■ 概要:この手法は、宅内が IPv4( プライベート) 、アクセスラインが IPv6、宛先が IPv4( パブリッ ク)のケースに適用できます。つまりアクセスラインだけがすでに IPv6 化できている場合です。日 A? A IPv4 ネットワーク 本では、KDDI の「 au ひかり」などが該当します。 IPv4 インターネット AAAA? この場合、宅内の IPv4トラフィックを IPv4 over IPv6 でトンネリングを行い、 キャリア内のトンネ AAAA IPv6 クライアント ルを終端するデバイスで、IPv4( プライベート)/ IPv4( パブリック)の NAT 変換を行ってインター NAT IPv6 サーバ ネットへ転送します。 宅内に IPv6 端末があり、また宛先も IPv6 対応している場合には、エンドツーエンドで IPv6 通信 ができているため、NAT も何も行わず、 そのまま転送することになります。 NAT64/DNS64 IPv6 ネットワーク IPv6 インターネット このように、アクセスラインだけ先に IPv6 化されたとしても、IPv4 とIPv6 が同時に使えるようにな ります。この場合、端末側とキャリア側の双方に DS-Lite をサポートしたデバイスが必要となります。 IPv4 インターネット ・Hair-pinning AAAA? AAAA 同じ NAT 配下の端末同士が、 NATのグローバル IP を経由して通信できる機能 IPv6 クライアント NAT 6rd IPv6 サーバ 3 IPv4トラフィック IPv4 IPv6 ネットワーク NAT64/DNS64 IPv6 インターネット IPv6 インターネット CPE IPv4 インターネット IPv6 over IPv4 IPv4トンネル 4 IPv4トラフィックは IPv6 でトンネリング IPv6 Dual-Stack Lite 移行ソリューション、その選択肢を知る IPv6トラフィックはそのまま転送 IPv4 IPv6トンネル 終端 IPv4 over IPv6 IPv4 グローバルIPIPv6 DNS サーバ IPv4 サーバ IPv6 インターネット A? A IPv4 インターネット AAAA? IPv6 クライアント AAAA NAT IPv6 サーバ DNS サーバ IPv4 サーバ A? A IPv4 ネットワーク NAT64/DNS64 IPv6 ネットワーク AAAA? IPv6 クライアント NAT IPv6 インターネット IPv4 サーバが処理 IPv4 IPv6 ロードバランスとの一石二鳥、 「 SLB-PT」 IPv6 IPv4⇔IPv6 SLB IPv6 クライアントのリクエストを IPv4 サーバ IPv4 サーバが処理 IPv4 クライアント IPv4⇔IPv6 SLB IPv4 クライアント IPv6 クライアント IPv6 クライアント 5 図 4:SLB-PTのアーキテクチャ ■ ネットワーク構成:IPv6( 端末 )←→ IPv6( ISP/アクセス回線 )←→ IPv4( 宛先 ) IPv4( 端末 )←→ IPv4( ISP/アクセス回線 )←→ IPv6( 宛先 ) DNS サーバ ■ 通信手法:NAT IPv4 サーバ ■ 概要:この手法は、IPv4 / IPv6 いずれのクライアントからも、IPv4 / IPv6 のいずれのサーバに A? A 対しても、 NATとロードバランスをさせて通信可能とするものです。 NAT 変換後の接続先は、NAT64 IPv4 ネットワーク / DNS64 の場合にはネットワーク( イントラネットもしくはインターネット)ですが、SLB-PTの場合 IPv4 インターネット AAAA? は直結されたサーバ( 群) となります。 AAAA IPv6 クライアント この場合、DNS64 のような A/AAAAレコードの変換は不要です。 SLB-PT を行うデバイスのバー NAT IPv6 サーバ チャル IP( VIP)のアドレスを A/AAAAレコードとして登録しておけば構いません。 自組織内の IPv4 サーバを手っ取り早くIPv6 化するには便利な手法です。NAT はもとより、ロード バランスも行うので、パフォーマンスや安定性の向上も同時に見込むことができます。 NAT64/DNS64 IPv6 ネットワーク IPv6 インターネット IPv4 IPv6 アクセスラインが取り残された場合には 「 6rd 」 IPv6 IPv6 サーバ ■ ネットワーク構成:IPv6( 端末 )←→ IPv6( ISP/アクセス回線 )←→ IPv4( 宛先 ) ■ 通信手法:NAT 6rd NAT64/DNS64 IPv6 ネットワーク IPv6 インターネット ■ 概要:この手法は、クライアントが IPv6、アクセスラインが IPv6、 宛先が IPv4( パブリック/プラ IPv4トラフィック イベート)のケースに適用できます。 いずれインターネットの世界がより進んで IPv6 のネットワークが一般的になったとしても、 ホスト IPv4 IPv4 インターネット IPv6 over IPv4 しているレガシーなアプリケーションの制約などから、 依然として IPv4 のサーバは残るでしょう。こ CPE IPv4トンネル AXシリーズ 終端 の手法を使えば、DNS による名前解決を行ったあとに、 IPv6 クライアントからIPv4 サーバへ接続す 6rd IPv4バックボーン IPv4トラフィック ることが可能となります。 IPv6 ユーザ宅 IPv6トラフィックは IPv4アドレスは Aレコードとして DNSサーバに登録されていますが、 IPv6 クライアントは Aレコー IPv6 インターネット IPv4でトンネリング IPv4 IPv4 インターネット ドのアドレスは理解できません。 そのため、NAT64 / DNS64 対応機器で、 AレコードからIPv6 端末 IPv6 over IPv4 CPE IPv4トンネル が理解できる AAAAレコードへ変換するなどの調整を行います。 AXシリーズ 終端 こうして IPv6 のアドレス解決がされた後は、 ユーザーからのパケットを IPv6 からIPv4 へ NATして IPv4バックボーン IPv6 ユーザ宅 IPv6トラフィックは 転送することで、 通信可能となります。 IPv6 クライアントのリクエストを IPv4でトンネリング 移行ソリューション、その選択肢を知る IPv6 インターネット IPv4 インターネット AAAA 図 3:NAT64 のアーキテクチャ IPv6 インターネット NAT IPv6トラフィックはそのまま転送 IPv4 ネットワーク IPv6トラフィックはそのまま転送 インターネット IPv6 それでも残る IPv4 サーバへのアクセスを確保、 「 NAT64 」 IPv4 インターネット IPv6 SP IPv6バックボーン IPv6 IPv6 プライベートアドレスを NAT IPv4 クライアントのリクエストを IPv6 サーバが処理 IPv4 クライアントのリクエストを IPv6 サーバが処理 IPv4 サーバ IPv6 サーバ 6rd IPv4トラフィック IPv4 CPE IPv4 インターネット IPv6 over IPv4 IPv4トンネル 終端 AXシリーズ IPv4バックボーン IPv6 ユーザ宅 IPv6トラフィックは IPv4でトンネリング IPv6 インターネット 図 5:6rd のアーキテクチャ ■ ネットワーク構成:IPv6( 端末 )←→ IPv4( ISP/アクセス回線 )←→ IPv6( 宛先 ) IPv6 クライアントのリクエストを ■ 通信手法:トンネル( IPv6 over IPv4) IPv4 サーバが処理 ■ 概要:この手法は DS-Liteと真逆のネットワーク構成で、宅内が IPv6 クライアント、アクセスライ IPv4⇔IPv6 SLB ンが IPv4、宛先が IPv6 のケースです。 つまりアクセスラインだけ IPv4 が残ってしまった場合に有効 な手法です。アクセスライン上は IPv6 over IPv4 でトンネリングを行い、対向の IPv6 ネットワークへ IPv4 クライアント 転送します。 IPv4 サーバ 宅内に IPv4クライアントも混在している場合には、IPv4アクセスライン経由でそのまま IPv4 ネッ トワークとの通信も可能です。 IPv6 クライアント IPv4 クライアントのリクエストを IPv6 サーバが処理 IPv6 サーバ IPv6 サーバ 6 IPv4 ネットワーク IPv4 インターネット AAAA? IPv6 クライアント SLB-PT で Web サーバをさくっと IPv6 対応に IPv4 IPv6 移行ソリューション導入時の注意点 IPv6 5 種類のソリューションについて説明しましたが、ここまで見てきたように、ネットワーク経路上 の IPv6 化されている場所によって、取り得るアプローチは異なってきます。 また、これらのソリューションにより、IPv4 ←→ IPv6 の IP アドレスの相互接続性は担保されます。 しかしながら、実際に通信を行ってみると問題が発生する場合があります。これは、IPv4 / IPv6 の プロトコル仕様やその実装、サーバでホストしているアプリケーションの実装などに依存する問題 があるためです。 以下のようなケースでは、通信経路上のデバイスでの対応が必要となる場合が考えられます。 ・ パケットのペイロードの部分にオリジナルの IP アドレスが埋め込まれているようなアプリ ケーションの通信で発生する問題( IPv4 / IPv6 アドレスを変換したとしても、ペイロード内 のアドレスがオリジナルのままであれば、通信エラーが発生するなど) → ALG( Application Layer Gateway)機能により、ペイロードの中の IPv4 / IPv6 アドレス も同じく変換することが必要です。変換できるアプリケーションの種類などは、ネットワー クデバイスにより異なります。 AAAA SLB-PT で Web サーバをさくっと IPv6 対応に NAT IPv6 サーバ SLB-PT で Web サーバをさく っとIPv6 対応に NAT64/DNS64 IPv6 ネットワーク IPv4 IPv6サーバに手を付けず IPv6 対応 Web IPv6 前回の記事では、さまざまな IPv4 / IPv6 移行ソリューションを紹介しました。今回は少し詳細 に入って、既存の IPv4 Web サーバの前に SLB-PT6対応 r d( IPv6 → IPv4 変換 )のロードバランサを配置 して、IPv4 Web サーバを “ さく っ ”とIPv6 対応にする方法を、 ネットワーク構成やコマンドを交えて IPv4トラフィック 紹介したいと思います。 IPv4 IPv4 インターネット 今回使 用する機材はIPv6 A10over ネットワークスの 「 AX シリーズ 」というADC ( Application Delivery IPv4 CPE Controller)で、マーケットでも広く実績のある機器です。 コマンドは業界標準ライクなものですの IPv4トンネル AXシリーズ 終端 で、ご覧になればどのような意味のコマンドであるか、想像できるかと思います。 IPv4バックボーン IPv6 ユーザ宅 IPv6 トラフィ は IPv6 → IPv4ックは の NAT-PT だ IPv4でトンネリング AX シ リ ー ズ で け で は な く、IPv4 → IPv6 や IPv4 ← → IPv4、 IPv6 インターネット IPv6 ←→ IPv6 のロードバランスも同時に提供可能ですが、ここでは IPv6 → IPv4 の NAT-PT に焦点 を絞ってお話をします。 ・ IPv4 / IPv6 のパケットの変換やカプセル化( トンネリングなどの手法の場合)などに起因 する MTU サイズの問題( 途中経路の最大 MTU を超えないように調整する手順 ) IPv6 クライアントのリクエストを IPv4 サーバが処理 → IPv4 / IPv6 Path MTU Discovery や MSS clamping などの機能で、パケットサイズの調 整を行います。 ・ NAT 変換( IPv4 ←→ IPv6、IPv4 ←→ IPv4、IPv6 ←→ IPv4)による通信ログ保存の問題( 犯 罪捜査などへ協力のためのアドレストレーサビリティが必要です) IPv6 インターネット IPv4⇔IPv6 SLB IPv4 クライアント IPv4 サーバ →ハイパフォーマンスなログ収集ソリューション/デバイスが必要となります。 こういった課題を考慮しながら移行ソリューションを実装していくことが重要です。 IPv6 クライアント IPv4 クライアントのリクエストを IPv6 サーバが処理 IPv6 サーバ IPv4 IPv6 どこから手を付けよう? さて、 IPv6 ここまでご紹介した内容に基づいて、どの手法で、どこからIPv6 に対応させようか?と思っていた だければ幸いです。 おそらく、この記事を読んでいる皆さんが一番先に検討したいことは、IPv6 クライアントとIPv4 サーバの相互接続ではないでしょうか。Windows 7や Mac OS X Lion などのクライアントOS はネイ ティブで IPv6 に対応しています。ユーザーの手元の端末はすでに IPv6 ready なのです。一方、すで に稼働中の Web サーバやアプリケーションサーバは、ほとんどが IPv4 ベースのままなのですから。 次回からは、先にご紹介した NAT64 / DNS64 や SLB-PTの実装方法を、実際のネットワークデザ インや設定も交えてご紹介していきたいと思います。NAT64 / DNS64 や SLB-PTの手法を活用すれ ば、IPv6 クライアントからIPv4 サーバへのアクセスなどが可能となります。この記事が、小さな環境 からIPv6 化を徐々に進めて、運用ノウハウを蓄積しながら移行を進める助けになれば幸いです。 7 . 図 1:SLB-PT のロードバランサによる IPv6 対応 . 実際に使用する際には、IPv4 ←→ IPv6 間のアドレス変換はもちろん、以下の点も考慮する必要があ ります。 検討事項 1:MTU( Maximum Transfer Unit ) に関連する考慮 検討事項 2:L7ヘッダやそのペイロード( データ部分)のリライト( 書き換え ) 検討事項 3:IPv4 ←→ IPv6 間の変換ログの保存 これらに関する対処方法に関しても、後半でお話したいと思います。では本題に入っていきましょう 8 I:H: L:M: SLB-PT で Web サーバをさくっと IPv6 対応に IPv4 4 7 DNS 8 2 SLB-PT で Web サーバをさくっと IPv6 対応に 6 1 IPv4 対象となるネットワーク IPv6 IPv6 K: 10 5 D: A: IPv6 NAT-PT の設定方法 IPv6 9 C: B: E: この記事の例では、2 台の IPv4 Web サーバ( サーバ 1とサーバ 2)に対してロードバランスを行い 12 11 ます。構成は図 2 のとおり、一般的なロードバランサと同じ配置です。 IPv4 ノード NAT Pool F: IPv6Host NAT Pool G: 14 www.example.com 13 VIP j: インターネット側の IPv6 端末は、ロードバランサの VIP に対して割り当てられた IPv6 アドレスに 対してアクセスしてきます。インターネット側の IPv6 端末には AX シリーズの VIP が見えていて、AX シリーズはその VIP に届いた IPv6 での Webアクセスを、2 台の IPv4 Web サーバにロードバランス します。そのロードバランスを行う際に、IP アドレスを IPv6 から IPv4 のアドレスに変換するという 流れです。 IPv6 クライアント VIP1:2001:db8:1:1:1 IPv6 ネットワーク IPv4 サーバー (1) s1: 192.168.0.1 Source NAT プール Pool: 192.168.0.254/24 SLB-PT AX シリーズ IPv4 サーバー (2) s2: 192.168.0.2 次に、実際にパケットの IP アドレスが、それぞれのリンク( IPv6 端末←→ AX シリーズ、AX シリー ズ←→ IPv4 Web サーバの中でどのように変換されて通信するかを図 3 に示します。 IPv4 サーバー VIP-v6 まず前準備として以下の作業が必要となります。 1. グローバル IPv6 アドレスを取得し、ドメイン名を登録する( もしもパブリックIPv6 ネットワー クに対してサーバを公開するのであれば必要な準備です。イントラネットの中であれば不要 です)。 2. DNSサーバで、AAAAレコードとPTRレコードを登録する( VIP に割り当てる IPv6 アドレスに対 して名前を付けます) 。 ■ AX シリーズでの設定例 AX シリーズでは以下の順に設定を行います。 . 2:今回の例のネットワーク論理構成 図 IPv6 ■ 前準備 IPv4 Client-IPv6@ ー> VIP-IPv6@ SNAT-IPv4@ ー>Server-IPv4@ VIP-IPv6@ ー> Client-IPv6@ Server-IPv4@ ー> SNAT-IPv4@ 1. IPv4 Source NAT Pool を作成する 2. IPv4 サーバを作成する 3. IPv4 サーバの Service Group を作成する 4. IPv6 Virtual Serverを、Service Group + IPv4 Source NAT Pool で作成する( 追加で他のオプ ション的な設定も可能です) 。 実際のコマンドは、以下の通りになります。 ! ip nat pool1 192.168.0.254 192.168.0.254 netmask /24……(1) ! slb server s1 192.168.0.1 ……(2) port 80 tcp ! slb server s2 192.168.0.2 ……(2) port 80 tcp ! slb service-group sg-80 tcp ……(3) member s1:80 member s2:80 ! slb virtual-server vip1 2001:db8:1:1::1 ……(4) port 80 http source-nat pool pool1 service-group sg-80 図 3:各リンクでの IP アドレス変換のイメージ IPv6 から IPv4 へアドレスが変換されるので、AX シリーズでは、ソース IP NAT が必須となります ( ソースの IP アドレスは、オリジナルそのままで使いません)。 では、実際の設定方法を紹介していきましょう。 I:H: L:M: が、実ネットワークで運用するには、前述の項目について検討していく必要があります。以下、詳 細に見ていきましょう。 3 DNS サーバー 4 7 IPv6 → IPv4 の NAT-PTの設定はこれだけです。おそらく 「 えっ、これだけ?」と思う方もいるので はないでしょうか。実際のところ、単なるアドレスの変換だけであれば、意外と簡単にできてしまい ます。 DNS 8 2 6 1 9 10 10 5 C: 9 SLB-PT で Web サーバをさくっと IPv6 対応に SLB-PT で Web サーバをさくっと IPv6 対応に IPv4 IPv6 検討事項 1:MTU に関連する考慮 IPv6 MTU は悩ましい問題です。IPv6 では、経路途中のルータでのフラグメントによる負荷をなくすと いう目的のため、経路上のルータでフラグメントせず、エンドツーエンドで経路上の最も小さいサイ ズの MTU に調整する実装となっています。 例えば、コンテンツ中のハイパーリンク先が以下の IPv4 Web サーバ( www.a10networks.com) になっていた場合、IPv6 Web サーバである ipv6.a10networks.com に書き換えます。 . <A href=http://www.a10networks.com/new.html> </A> ↓ <A href=http://ipv6.a10networks.com/new.html> </A> MTU や MTU の調整方法に関する IPv4 とIPv6 間の違いを、 表 1にまとめてみました。 IPv4 IPv6 規定なし(実質 576 バイト以上) 1280 バイト なお、例として挙げている AX シリーズでは、aFleX というTcl ベースのスクリプト言語をサポート しています。この aFleX を利用することで、コンテンツの中身を引っ掛けてリライトすることが可能 です。 可 不可 以下は、上記の場合の aFleX のサンプルです( ipv6link という名前でスクリプトを保存します) 。 MTU サイズ調整方法 ICMPv4 Path MTU Discovery ICMPv6 Packet Too Big DF ビットの有無 有 なし(途中でのフラグメントの概念がない) 最小 MTU サイズ 途中経路上ルータでの. フラグメント可/不可 AX シリーズのような SLB-PT を行うロードバランサは、IPv4 の世界とIPv6 の世界の間に立ち、両 方の世界の MTU のハンドリングを行います。基本的には ICMPv4 Path MTU Discovery や ICMPv6 により、デバイス側で自動的に調整してうまくやってくれるはずです。しかし機器の実装やネット ワーク環境( 例えば途中のルータで ICMP のフィルタがされているなど)によっては、問題が発生す る場合もあり得ます。 対応方法はそれぞれのケースに合わせて考える必要がありますが、問題が発生した場合の最終 手段としては、IPv6 の MTU サイズを最小の「 1280」にしてしまうという方法もあります。これにより 通信上のエラーは解決できますが、一度に送信できるデータ量が少なくなってしまうので、通信効 率は下がります。 when HTTP_RESPONSE { if {[HTTP::status] == 200} { HTTP::collect [HTTP::header Content-Length] } } when HTTP_RESPONSE_DATA { regsub -all "http://www" [HTTP::payload] "http://ipv6" newdata HTTP::payload replace 0 [HTTP::header Content-Length] $newdata HTTP::release } こうして作成したスクリプトを、Virtual Port の設定に追加します。 slb virtual-server vir2 2001:db8:1:1::1 port 80 http source-nat pool pool1 service-group sg-80 aFleX ipv6link IPv4 IPv6 検討事項 2:L7ヘッダやそのペイロードのリライト IPv6 今回紹介するケースでは、IPv4 の Web サーバに対して、IPv6 端末からロードバランサを介してア クセスしています。 もし、Web サーバが返信するコンテンツ中のハイパーリンク先が IPv4 サーバであった場合、その ハイパーリンクをクリックすると、IPv6 端末からIPv4 サーバに対してアクセスしようと試み、通信エ ラーが発生して結局リンク先に飛べなくなる、といった問題が発生します。これでは、一時的にアド レスが変換されたとしても、実用上は使えないに等しい状態です。 もしハイパーリンク先が IPv6サーバとなっているのであれば、何も気にすることはありません。し かしハイパーリンク先が IPv4 サーバであった場合には、間に立つ SLB-PT を行うロードバランサで、 ハイパーリンク先のホスト名のリライト( 書き換え )を行い、IPv6サーバの名前へ書き換えることで 対処が可能です。つまり、Web サーバのコンテンツを変更することなく対応できます。 11 こうすることで、Web サーバのコンテンツを直接編集する必要なく、前段の AX シリーズでハイ パーリンク先を IPv6サーバへ振り向けることが可能になります。 なお、オリジナルのコンテンツは IPv4 Web サーバで書かれていますから、IPv4 端末からのアク セスの場合には書き換えは不要です( aFleX は VIP にバインドしていますから、IPv4 の VIP にはこの aFleX をバインドしなければいいのです) 。 今回は Web サーバを例に挙げているため、このようなハイパーリンクのリライトが必要となりま した。しかし、例えば VoIP や仮想デスクトップのような他のアプリケーションには書き換えが不要 であったりします。逆に、特殊な ALG( Application Layer Gateway)機能により、アプリケーション ごとの特殊なヘッダやペイロードの書き換えが必要になることもあります。使用する機器により可 /不可がありますので、利用シーンに合わせて事前の機能確認が必要となるでしょう。 12 SLB-PT で Web サーバをさくっと IPv6 対応に IPv4 IPv6 検討事項 3:IPv4 ←→ IPv6 間の変換ログの保存 IPv6 通常の運用では、セキュリティの観点から、Web サーバに誰が、いつ、どこからアクセスしてきた かをトレースするためにアクセスログを取っているかと思います。 ところが SLB-PT では、Source NAT( ソースアドレスの書き換え )が必須になります。そのままで はログを取る対象は Source NAT された後のもので、すべてのソース IP が同一になってしまいます。 このままでは、アクセスしてきた端末を特定できません。 そこで SLB-PT では、何らかの手段でログを採取する機能を備えるようになっています。AXシリー ズの場合は、以下の方法を提供しています。 ( 1)Web サーバ側でアクセスログを取得する方法 ( 2 )Syslog サーバ側でアクセスログを取得する方法 ■( 1)Web サーバ側でアクセスログを取得する方法 AX シリーズでは、HTTP ヘッダ中の “X-ClientIP”というフィールドに、Source NAT 変換される前の オリジナルの IPv6 アドレスを格納して送信できます。これによりIPv4 Web サーバ側で、どの IPv6 端 末がアクセスしてきたかというログを採取できます。 slb template http clhttp insert-client-ip slb virtual-server vir2 2001:db8:1:1::1 port 80 http source-nat pool pool1 . service-group sg1 template http clhttp . ! この際、Web サーバ側にも設定が必要になります。Apache の場合、Httpd.conf 内の LogFormat ディレクティブに以下の内容を追加します。 . %{ ヘッダ名 }i . デフォルトでは「 X-ClientIP:」というヘッダが追加されるため、以下の赤字部分を追加します。な お下記の例では ( “ ダブルクォーテーション)で区切っているため、 「 \"」を両側に追記しています。 %{ ヘッダ名 "%h LogFormat }i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"{X-ClientIP}i\" " combined この結果、Web サーバ側で以下のようなログを取得できるようになります。 192.168.0.254 - - [15/Feb/2011:13:04:24 +0900] "GET / HTTP/1.1" 200 12 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)" "2001:db8:1:1::250" 192.168.0.254 - - [15/Feb/2011:13:04:27 +0900] "GET / HTTP/1.1" 200 12 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)" "2001:db8:1:1::250" SLB-PT で Web サーバをさくっと IPv6 対応に ■( 2)Syslog サーバ側でアクセスログを取得する方法 先に紹介した Webサーバ側でのアクセスログの記録が可能なのは、L7 でロードバランスを行って いる場合だけです。では、L4 でロードバランスを行う際にはログを取得する方法がないかというと、 そうではありません。L7ヘッダのリライトはできませんが、AX シリーズからSyslog サーバにログを 送信することで取得は可能です。 ! slb server logserver a.b.c.d ……(1) port 514 udp ! slb service-group group-syslog udp ……(2) member logserver:514 ! ip nat template logging logtemp ……(3) log port-mappings both service-group group-syslog ……(4) include-rip-rport ……(5) ! slb virtual-server vir2 2001:db8:1:1::1 template logging logtmp ……(6) port 80 tcp source-nat pool 各設定の意味は以下の通りです。 ( 1)ログサーバを SLB のリアルサーバのように作成します。 ( 2)サービスグループを作成します。 ( 3)ロギングテンプレートを作成します。ここで「 severity」 「 facility」などを設定できます。 default では local0、debuggingで送信されます。 ( 4)サービスグループを指定します。 ( 5) この include-rip-rport を設定すると、どの IPv4 サーバへ送信されたかをログに記録します。 ( 6)バーチャルサーバの配下にロギングテンプレートをバインドします。 AXシリーズの場合では、このような設定を行うと、Syslog サーバに次のようなログが送信されます。 Feb 16 12:39:26 ax19 NAT-TCP-C: [2001:db8:1:1::250]:58070 -> 192.168.0.254:2134 RS 192.168.0.1:80#015#012<135>Feb 16 12:39:28 ax19 NAT-TCP-F: [2001:db8:1:1::250]:58070 -> 192.168.0.254:2134#015 Feb 16 12:39:38 ax19 NAT-TCP-C: [2001:db8:1:1::250]:58071 -> 192.168.0.254:2135 RS 192.168.0.2:80#015#012<135> Feb 16 12:39:40 ax19 NAT-TCP-F: [2001:db8:1:1::250]:58071 -> 192.168.0.254:2135#015 このように、IPv6 端末の IPv6 アドレスがログとして残っていることが分かります。また別の方法と して、先に紹介した aFleX を使ってログを取得する方法もあります。 when SERVER_CONNECTED { log "Connected: [IP::client_addr] ([TCP::client_port]) -> [IP::server_addr] ([TCP::server_port])" } このルールを vPort にバインドします。 slb virtual-server vir2 2001:db8:1:1::1 port 80 http source-nat pool pool1 service-group sg1 aFleX ipv6-log すると AX シリーズ上のログとして、次のように表示されるようになります。 Dec 8 12:10:28 ax32 a10logd: [AFLEX]<6> Connected: 2001:398:2:1::114 (38634) -> 192.168.0.1 (80) 13 14 SLB-PT で Web サーバをさくっと IPv6 対応に IPv4 IPv6 端末に先を越される? サーバの IPv6 対応 IPv6 最近リリースされている PC では、OS の多くがネイティブで IPv6 対応となっています。またルー タや L3スイッチも、多くがデュアルスタック対応となってきています。そういう意味では、徐々にで すが、企業内イントラネットのユーザーデバイス/ネットワーク機器の更新に伴い、あらゆるものが IPv6 対応となっていくでしょう。 残すはサーバの IPv6 化です。しかし、技術的にはサーバ自身で IPv6 化はできたとしても、どうし てもホストしているアプリケーションの改変が必要であったりして、なかなか踏み込めないこともあ るかもしれません。 また、いきなりすべての端末が IPv6 になることもありません。どうしても IPv4 とIPv6 が共存する 期間というのが存在します。両方の端末からのアクセスに対応するために IPv4 とIPv6 対応のサー バを別々に用意するというのもナンセンスではないでしょうか。 今回ご紹介した SLB-PT は、既存の IPv4 サーバをうまく利用して、IPv4 / IPv6、両方の端末への サービスを一元的に提供する1つの手段にもなります。興味を持った方はぜひ試してみてください。 NAT64 で IPv6 端末を IPv4 サーバにつなげよう NAT64で IPv6 端末を IPv4サーバにつなげよう IPv4 IPv6 一台二役を果たす 「 NAT64/DNS64 」 IPv6 前回の記事では、SLB-PT( IPv6 → IPv4)という手法を用いて IPv6 端末からIPv4サーバにアクセスす る方法を説明しました。意外と簡単にIPv4サーバを IPv6 化できることを実感いただけたかと思います。 IPv4 サーバー ただ SLB-PTの場合、IPv4 サーバは SLB-PT をサポートしたロードバランサの配下に設置し、かつ SLB にサーバの IPv4アドレスを設定しなければなりません。 同時に、ロードバランサの VIP に設定す VIP-v6 IPv6 IPv4 る IPv6 アドレスは、AAAAレコードとして設定する必要があります。 こういった要因から、通信対象 となる IPv4 サーバも自組織の管理下に置く必要があります。 では、自組織管理下のサーバではなく、 「 The Internet」そのものと通信したい場合はどうすればい Client-IPv6@ ー> VIP-IPv6@ SNAT-IPv4@ ー>Server-IPv4@ いでしょうか。サーバの数は無数にあります。 また、 そのサーバもほとんどは他組織によって運営され ており、アドレス自体が変わる可能性もあります。この場合は、SLB-PT で対応するには無理があります。 VIP-IPv6@ ー> Client-IPv6@ Server-IPv4@ ー> SNAT-IPv4@ このようなケースに適しているのが、 NAT64/DNS64 という手法です。 「 NAT64」は IPv6 ネットワー クとIPv4 ネットワークの間に立って NAT( IPv6 → IPv4)を行い、同時に「 DNS64」で、DNS による名 前解決に関する IPv4/IPv6 の違いを吸収します。 そこで今回も、A10 ネットワークスの「 AX シリーズ 」を例に用い、NAT64/DNS64 の実装方法につ いて説明します。サンプルネットワーク構成は図 1の通りです。図の左側が IPv6 ネットワーク、右側 が IPv4 ネットワークと考えてください。 図 1:サンプル構成図 3 DNS サーバー I:H: L:M: 4 7 DNS 8 2 6 1 K: 10 5 D: 11 IPv6Host 15 14 A: C: 9 B: E: 12 NAT Pool F: NAT Pool G: VIP j: 13 IPv4 ノード www.example.com A: Ethernet18 / VLAN30 /IPv6:2001:db8:1:2::2/64 イントラネット側の AXインターフェイス (IPv6) B: Ethernet17 / VLAN10 / IPv4:10.111.0.2 インターネット側の AXインターフェイス (IPv4) C: Ethernet5 / VLAN20 / IPv4:10.20.20.2 / IPv6:2001:db8:1:1::2/64 DNS サーバ群への AXインターフェイス (IPv4/IPv6) D: 2001:db8:1:2::254 イントラネット側 IPv6 への NextHop ルータ(IPv6) E: 10.111.0.254 インターネット側 IPv4 へのデフォルトルータ NAT Pool F: 10.111.0.101-110&111-120 NAT64 を行う際の IPv4プールアドレス群 IPv4 IPv4プールアドレス群 サーバー (1) NAT Pool G: 10.20.20.200-220 DNS サーバへアクセスする際の s1: 192.168.0.1 H: IPv6:2001:db8:1:1::22 IPv6 DNS サーバ Source NAT プール IPv6 クライアント I: IPv4:10.20.20.22 IPv4 DNS サーバ Pool: 192.168.0.254/24 VIP1:2001:db8:1:1:1 VIP J: 2001:db8:1:2::100 DNS64 を行う際にアクセスするVIP IPv6 アドレス IPv6 K: 2001:db8:1:3::1 イントラネット内の IPv6 端末 ネットワーク L: 10.20.20.23 SLB-PT Log サーバ 1 AX M: 10.20.20.24 Logシリーズ サーバ 2 IPv4 サーバー (2) s2: 192.168.0.2 16 NAT64 で IPv6 端末を IPv4 サーバにつなげよう IPv4 IPv6 動作フロー IPv6 では、図 1 の環境で、どのように IPv6 端末から IPv4 サーバへのアクセスが可能になるのか、流れ を追ってみましょう。 1: IPv6 端末は www.example.com のアドレスを解決するため、IPv6 パケットで DNSリクエストを送信します。 www.example.com は IPv4 サーバです。DNSクエリの送信先アドレスは、AX に設定された IPv6 VIP です。 AX は、AAAA( IPv6 アドレスレコード)クエリを DNSサーバに送信します。DNSサーバは IPv6 でも IPv4 でも 2: 対応可能です。 3: DNSサーバは、www.example.com の AAAAレコードを探します。 www.example.com は IPv4 サーバですから、AAAAレコードは存在しません。DNSクエリの結果は、 「 DNS ア 4: ンサーがない」、または「 エラー」になります。 5: DNSサーバは、4.で受信した DNSレスポンスを AX に送信します。 6: AX は、A(IPv4 アドレスレコード ) クエリを DNSサーバに送信します。 7: DNSサーバは、www.example.com の Aレコードを探します。 8: www.example.com の Aレコードが解決され、IPv4 アドレス( ここでは 192.168.0.5)が返ってきます。 9: DNSサーバは、8.で受信した DNSレスポンスを AX に送信します。 10: AX は、IPv4 アドレスに IPv6プレフィックス(「 64:ff9b::」、デフォルト)を付与し、さらに IPv4 アドレス部分を16 進数に変換し、 「 64:ff9b::c0a8:5」を IPv6 端末に送信します。 11: IPv6 端末は www.example.com に到達するために、宛先アドレス 64:ff9b::c0a8:5 にパケットを送信します。 AX は、64:ff9b::c0a8:5 宛のパケットを、IPv4 アドレス192.168.0.5 に変換し送信します。また、IPv4 ネットワー 12: クへ出ていくパケットの送信元 IP は、AX に設定された IP NAT Pool の IPv4 アドレスに置き換えられます。 13: www.example.com は、AX に設定された IP NAT Pool の IPv4 アドレス宛にリプライのパケットを送信します。 14: AX はセッションエントリを確認し、192.168.0.5からのパケットを IPv6 に NAT 変換して、IPv6 端末へ送信します。 このように、IPv6 端末と IPv4 サーバの間に立つ AX が、DNS の名前解決を取り持ち、通信ステー タスを保持して NAT を行うことで、アクセスを可能にしています。 さて、NAT64/DNS64 を導入する場合も、前回紹介した SLB-PTと同様に、以下のような事柄につ いて検討しておく必要があります。それぞれの対処方法に関しては、前回同様、次ページでお話しし たいと思います。 検討事項 1:MTU( Maximum Transfer Unit ) に関連する考慮 検討事項 2:L7ヘッダやそのペイロード( データ部分)のリライト( 書き換え ) 検討事項 3:IPv4 ←→ IPv6 間の変換ログの保存 17 NAT64 で IPv6 端末を IPv4 サーバにつなげよう IPv4 IPv6 AXシリーズにおける NAT64/DNS64 の設定例 IPv6 まず、図 1の場合の AX のコンフィグ例を示しました。ここでは設定の意味を分かりやすくするた めに、NAT64 関係の設定をブルー、DNS64 関係の設定をレッド、ロギング関係の設定をグリーンで 色分けしています。 ■ AX コンフィグ例 vlan 10 tagged ethernet 17 router-interface ve 10 ! vlan 20 tagged ethernet 5 router-interface ve 20 ! vlan 30 tagged ethernet 18 router-interface ve 30 ! class-list c1 2001:db8::/32 lsn-lid 1 ! interface ve 10 ip address 10.111.0.2 255.255.255.0 ip nat outside ! interface ve 20 ip address 10.20.20.2 255.255.255.0 ipv6 address 2001:db8:1:1::2/64 ! interface ve 30 ipv6 address 2001:db8:1:2::2/64 ipv6 nat inside ! ip route 0.0.0.0 /0 10.111.0.254 ! ipv6 route 2001:db8:1:3::/64 2001:db8:1:2::254 ! ip nat pool p1 10.111.0.101 10.111.0.110 netmask /24 lsn ip nat pool p2 10.111.0.111 10.111.0.120 netmask /24 lsn ip nat pool source-nat-pool 10.20.20.200 10.20.20.220 netmask /24 ip nat pool-group pg1 p1 p2 ! ip nat lsn endpoint-independent-mapping enable ip nat lsn endpoint-independent-filtering enable ip nat lsn logging default-template nat64_logging ! nat64 prefix well-known nat64 alg ftp enable nat64 alg rtsp enable nat64 sip rtsp enable nat64 alg tftp enable nat64 inside source class-list c1 ! lsn-lid 1 source-nat-pool pg1 ! slb server ipv6_22 2001:db8:1:1::22 port 53 udp slb server ipv4_22 10.20.20.22 port 53 udp ! slb service-group sg-dns64 udp member ipv4_22:53 member ipv6_22:53 ! ! slb template dns dns-1 dns64 ! slb virtual-server vip-100 2001:db8:1:2::100 port 53 dns-udp source-nat pool source-nat-pool service-group sg-dns64 template dns dns-1 インターネット側 DNS サーバのある L2 スイッチ側 イントラネット側 NAT64 の設定……(1) NAT64 の設定……(1) Interface ve10 →インターネット接続 NAT64 の設定……(2) interface ve20 → DNS サーバ群に接続 interface ve30 →イントラネット接続 NAT64 の設定……(2) IPv4 のインターネット側へのデフォルトルート IPv6 イントラネット側へのルート IPv4 の NAT プール(NAT64 の設定)……(3) IPv4 で NAT プール(NAT64 の設定)……(3) DNS サーバへ NAT する際に利用(NAT64 の設定)……(4) p1 と p2 をグループ化(NAT64 の設定)……(3) (NAT64 の設定)……(5) (NAT64 の設定)……(5) (LSN Logging の設定)……(9) (NAT64 の設定)……(6) ……(6) ……(6) ……(6) ……(6) (NAT64 の設定)……(1)/(6) (NAT64 の設定)……(3) (NAT64 の設定)……(3) IPv6 DNS サーバのアドレス(DNS64 の設定)……(7) IPv4 DNS サーバのアドレス(DNS64 の設定)……(7) (DNS64 の設定)……(8) (DNS64 の設定)……(8) (DNS64 の設定)……(8) ……(4) slb server log1 10.20.20.23 port 514 udp slb server log2 10.20.20.24 port 514 udp ! slb service-group log:514 udp member log1:514 member log2:514 (ログサーバの設定)……(9) ip nat template logging nat64_logging facility local5 log port-mappings both log sessions include-destination service-group log:514 severity informational ! (ログテンプレートの設定)……(9) (ログサーバの設定)……(9) (ログサーバのサービスグループの設定)……(9) 18 NAT64 で IPv6 端末を IPv4 サーバにつなげよう 1: NAT64 で NAT させる IPv6 アドレスのリストを設定する 2: NAT64 で NAT する際の Insideと Outside のインターフェイスを指定する 3: NAT64 の際に使用する IPv4 のプールアドレスを指定する 4: DNSサーバへ NATしてアクセスする際に利用する IPv4 のプールアドレスを指定する 5: LSN 関連の設定を追加する 6: NAT64 関連の設定を追加する( ALG の有効化など) 7: DNSサーバのアドレスを追加する 8: DNS64 関連の設定を追加する 9: ログ関連の設定を追加する DNS64 において一番重要な点は、Aレコードと AAAAレコードの変換ロジックの部分です。どのよ うに変換を行っているかというと、次のように至ってシンプルなロジックとなります。 ご存じの通り、IPv4アドレス( Aレコード)の長さは 32ビットです。一方 IPv6 アドレス( AAAAレコー ド)は 128 ビットで、その差は 96 ビットあります。そこで、先頭の 96 ビットに「 64:ff9b::/96」 ( AX シ リーズのデフォルト設定 )のプレフィックスを挿入し、後半 32ビットに、Aレコードで教えてもらった IPv4アドレスを充当し( 表記上は16 進数に変換 )、IPv6 アドレスを生成しています。 こうして生成した IPv6 アドレスを、名前解決を要求した IPv6 端末に返すことで、IPv6 端末は擬似 的に生成された目的のサーバの IPv6 アドレスを知ることができます。 この後の通信は、どのように行われるのでしょうか。 NAT64 を提供する AX シリーズに、上記のようにして生成された IPv6 アドレス宛のパケットが到 達すると、AX シリーズは該当 IPv6 アドレスのうち後半 32ビットだけを抜き出して、それを IPv4 のあ て先アドレスとして利用をします。これにより、NAT されたパケットは目的の IPv4 サーバに到達でき ます。NAT された際のソースアドレスには、上記の設定の「 ip nat pool p1」と「 p2」で指定したプー ルから払い出された IPv4アドレスを使用します。 なお今回の例では、AX シリーズが NAT64 機能だけでなくDNS64 機能も提 供していますが、 Infoblox のような DNS64 をサポートしたアプライアンスと組み合わせることも可能です( ちなみに Infoblox は、A10 ネットワークスのテクニカルパートナーです)。 ここまでの設定で、NAT64/DNS64 が動作し、IPv6 とIPv4 の間で通信できる環境となりました。 NAT64 で IPv6 端末を IPv4 サーバにつなげよう IPv4 IPv6 フラグメンテーションのサポート IPv6 『 SLB-PT で Web サーバをさくっと IPv6 対応に 』で紹介したとおり、IPv6 では、経路上のルータ でフラグメンテーションは行わず、経路上の最も小さいサイズの MTU( Maximum Transmission Unit ) に調整する実装となっています。 対処は、基本的には SLB-PTの場合と同じです。一例としてAX シリーズでは、Inbound または Outbound インターフェイスで、MTU よりも大きいパケットに対するフラグメンテーションをサポー トしています。一般に、NAT64 におけるフラグメンテーションは下記のような場合に有効です。 ・ネットワークに MTU サイズが違うリンクが多数存在する場合 ・クライアントが MTU Path Discoveryを行わず、超過パケットをフラグメントしないといけない場合 AXでは、下記のフラグメンテーション(Fragmentation)オプションがデフォルトで有効になっています。 ・inbound - inbound IPv6 パケットのフラグメント ・outbound - outbound IPv4 パケットのフラグメント inbound IPv4 パケットのフラグメンテーションは、デフォルトでは無効( disable)です。DF bit が. セットされた Inbound IPv4 パケットはフラグメントされずに、ICMP unreachable message を送信 元へ返信します。 これらの動作は、以下のオプション設定で変更可能です。DF bit がセットされている場合の動作 を変更します。 nat64 fragmentation inbound {df-set send-icmp |[df-set] drop |[df-set] ipv6} df-set send-icmp:inbound のフラグメントされたパケットに対しては送信者へ ICMP unreachable Message を送信します。 :パケットをドロップさせます。 :IPv6 フラグメンテーションをします。 drop Ipv6 デフォルトでは、 ipv6 オプションとdf-set send-icmp オプションが有効となっています。 nat64 fragmentation outbound {drop |ipv4 |send-icmpv6} drop :フラグメントされたパケットをドロップさせます。 ipv4 :IPv4 パケットフラグメントします。 send-icmpv6:フラグメントされた IPv6 パケットに対して ICMPv6 Type 2 code 0(Packet Too Big)を送信します。 デフォルトでは、 ipv4 オプションが有効となっています。 ■ TCP mms-clamping による方法 TCP MSS( Maximum Segment Size) は送受信できる最大データ長を表し、端末間の TCPハンド シェイクによって決められます。TCP/IP の最大パケット長である MTU( Maximum Transfer Unit )か らTCP/IP ヘッダサイズの 40 バイト( IP ヘッダ 20 バイト、TCP ヘッダ 20 バイト)を引いた数値が MSS になります。 通常 IPv4 クライアントは、IPv4 ヘッダとTCP ヘッダを許容する値をとりますが、IPv6 ヘッダを許 容するのに十分な値にはなりません。そこで AX シリーズは、サーバからIPv6 ネットワーク側のクラ イアントへの返信に、サーバからの返信パケットが確実に入るよう調整します。 19 20 NAT64 で IPv6 端末を IPv4 サーバにつなげよう そのため、MSS の値を確認し、必要に応じてサーバ側にリクエストを送信する際の MSS を変更 します。この処理を「 MMS Clamping 」と呼んでいます。TCP のハンドシェイクによって決められる ので、UDP 通信では利用はできません。 AX シリーズでは、下記のオプションにより動作を変更できます。 nat64 tcp mss-clamp {none | fixed n | subtract s [min n]} none:AX シリーズは MSS を変更しません。 fixed:AX シリーズは指定の MSS に変更します。 Subtract:AX は下記の計算により特定のバイト数よりも大きい場合に MMS に減算します。 MSS - 40 バイトの値が 416 バイトよりも大きい場合、MSS から 40 バイトを減算します。 MMS - 40 バイトの値が 416 バイトに等しい、もしくは小さい場合 416 バイトを MSS に使用します。 IPv4 IPv6 HTTP ならばリンク先のリライトは原則不要に IPv6 SLB-PT では、 aFleX などの機能を利用して、コンテンツ中のリンク先のホスト名の書き換えなどを 行いました。例えば、コンテンツ中のリンク先として、 「 IPv4.example.com」 ( IPv4アドレスのサーバ ) といったホスト名が書かれていた場合、動的に ipv6.example.com( IPv6 アドレスのサーバ )といっ たホスト名に書き換えることで、IPv6 のサーバへリダイレクトさせることができます。たとえ、オリジ ナルのコンテンツでリンク先が IPv4 サーバになっていたとしても、これで大丈夫です。 NAT64 で IPv6 端末を IPv4 サーバにつなげよう IPv4 IPv6 NAT64 セッションログの保存 IPv6 安定運用の観点から、またセキュリティの観点からも、アクセスログの収集は必須の機能です。 AX シリーズでは、 NAT64 のセッションログを外部サーバに出力可能です。出力先として複数の外部 サーバを設定した場合は、ソース IP のハッシュを使用し、出力する外部サーバを決定します。よって、 特定のソース IP のセッションログを、毎回同じ外部サーバに出力させることもできます。 ログ関連の設定方法は、1ページ目に示したサンプル設定ファイルのグリーンの部分となります。. Ip nat template のオプションを変更することで、出力されるログの内容を変更させることもできます。 ■ 設定例 ip nat template logging lsn_logging log port-mappings both log sessions ■ 出力されるセッションログ例 Jul 9 08:19:49 ax6 NAT-TCP-N: [2001:240:6d4:40::44]:35100<-->[64:ff9b::40e9:b763]:80, 64.233.183.99:80<->10.111.0.102:35100 Jul 9 08:19:49 ax6 NAT-TCP-C: [2001:240:6d4:40::44]:35100 -> 10.111.0.102:35100 Jul 9 08:19:51 ax6 NAT-TCP-D: [2001:240:6d4:40::44]:35100<-->[64:ff9b::40e9:b763]:80, 64.233.183.99:80<->10.111.0.102:35100 Jul 9 08:19:51 ax6 NAT-TCP-F: [2001:240:6d4:40::44]:35100 -> 10.111.0.102:35100 日時 ホスト名 種別 変換前送信元 IPv6:Port <--> 宛先 IPv6:Port, 変換後宛先 IPv4 : Port <--> NAT 変換後送信元 IPv4 : Port <- NAT-TCP-N / NAT-TCP-D に関して 日時 ホスト名 種別 変換前送信元 IPv6:Port -> NAT 変換後送信元 IPv4 : Port <- NAT-TCP-C / NAT-TCP-F に関して NAT64/DNS64 の場合には、このような書き換えは不要となります。たとえ IPv4 サーバのホスト 名がリンク先として指定されていても、DNS64 の機能によって自動的にIPv6との違いを吸収する形 で名前解決を行い、目的の IPv4 サーバに対して NAT64 の機能を使ってアクセスできるからです。 C F N D このように、Web サーバへのアクセスに関しては問題ないのですが、他のアプリケーションにつ いては注意が必要です。アプリケーションの中には、ペイロードにアドレス情報を組み込んでいるも のや、コントロール用とデータ用で異なるポートを使用するものなども存在します。そういったアプ リケーションに関しては、 ALG( Application Layer Gateway) という特殊な機能が必要となります。 ALG はアプリケーションごとの特性も見て変換を行う機能です。 IPv4 なお、AX シリーズの場合は、現時点では以下のプロトコルに対してALG 機能を提供しています。 これはあくまで一例で、ALG 機能の有無は、お使いの NAT64 サポートデバイスにより異なります。 nat64 nat64 nat64 nat64 alg alg sip alg ftp enable rtsp enable rtsp enable tftp enable (FTP) (RTSP) (SIP) (TFTP) . ALG は、FTP や SIP のような標準的なプロトコルへのゲートウェイ機能を提供しますが、独自アプ リケーションなどは ALG でのカバーは不可能です。サーバアプリケーションに手を入れて、IPv4 に 依存しないコードへ変更するといった工数が必要になる場合もあります。 : : : : NAT Mapping Created NAT Mapping Freed Data Session Created Data session Deleted IPv6 当面続く 「 移行期 」への備えを IPv6 2012 年 6 月 6 日には、全世界的な取り組みである「 World IPv6 Launch」が始まります。全世界のメ ジャーな Web サイトが、恒久的な IPv6 対応を図るという取り組みで、いよいよ IPv4 とIPv6 が共存す る世界が始まります。われわれ A10 ネットワークスも、今回の連載で紹介した IPv4/IPv6 移行ソリュー ションや IPv6 ロードバランサを通じて、World IPv6 Launch の一翼を担っています。 より先進的なユーザーの中には、たとえ外の世界がまだ IPv4 だとしても、 「 これからのうちのインフ ラは IPv6 で作っていくぞ!」と考えている方もいらっしゃるでしょう。自社イントラネットの中だけであ れば、力技で、サーバやクライアントすべての IPv6 化は可能かと思います。 しかし「 The Internet」にアクセスしないネットワークは、よほど機密性の高いネットワークやラボ 環境などでもない限り、あり得ないでしょう。たとえイントラネットが IPv6 化されたとしても、これか らしばらく続くであろう移行期には、The Internet 上の IPv4 サーバへのアクセスも必要になります。そ ういう場合には、今回紹介した NAT64/DNS64 のようなソリューションが重要となります。 この連載では 3 回にわたって IPv6 への移行方法に関してお話させていただきました。IPv6 移行ソ リューションにはいろいろな種類があり、ネットワーク構成や目的に応じて使い分ける必要があると いうことがご理解いただけたかと思います。 繰り返しになりますが、IPv4アドレスの配布はすでに枯渇しました。もうIPv4だけのネットワークを考 える時代は終わりを迎えました。ネットワーク構成やお使いの機器によって選択できるソリューションは 21 異なると思いますが、まずは可能な部分から、移行策の検討を始められてはいかがでしょうか。 22
© Copyright 2024 ExpyDoc