12
〒105-0001 東京都港区虎ノ門4-3-20 神谷町MTビル16階 TEL: 03-5777-1995 FAX: 03-5777-1997 Email: [email protected] http://www.a10networks.co.jp A10ネットワークス株式会社 ●仕様は予告無く変更することがあります。最新の情報は弊社WEBサイトでご確認下さい。●本書で使用した登録商標および商標はそれぞれの所有者の資産です。 ©2012 A10Networks, K.K. All rights reserved #IPv6_20120801 IPv6 移行ソリューション丸分かり A10ネットワークス株式会社 IPv4 IPv4 IPv6 IPv6

IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

〒105-0001 東京都港区虎ノ門4-3-20 神谷町MTビル16階 TEL: 03-5777-1995 FAX: 03-5777-1997 Email: [email protected] http://www.a10networks.co.jp

A10ネットワークス株式会社

●仕様は予告無く変更することがあります。最新の情報は弊社WEBサイトでご確認下さい。●本書で使用した登録商標および商標はそれぞれの所有者の資産です。©2012 A10Networks, K.K. All rights reserved #IPv6_20120801

IPv6 移行ソリューション丸分かり

A10ネットワークス株式会社

IPv4IPv4

IPv6IPv6

Page 2: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

索引

移行ソリューション、その選択肢を知る現実となったIPv6移行の日......................................................................................2さまざまなIPv4/ IPv6移行ソリューション....................................................2IPv4延命策の「LSN(CGN)」..................................................................................3アクセスラインが先にIPv6化しているなら「DS-Lite」...............................4それでも残るIPv4サーバへのアクセスを確保、「NAT64」.........................5ロードバランスとの一石二鳥、「SLB-PT」............................................................5アクセスラインが取り残された場合には「6rd」.............................................6移行ソリューション導入時の注意点.....................................................................7さて、どこから手を付けよう?.................................................................................7

SLB-PT で Web サーバをさくっとIPv6 対応にWebサーバに手を付けずIPv6対応.....................................................................8対象となるネットワーク..............................................................................................9NAT-PTの設定方法.....................................................................................................10検討事項1:MTUに関連する考慮......................................................................11検討事項2:L7ヘッダやそのペイロードのリライト....................................12検討事項3:IPv4←→IPv6間の変換ログの保存........................................13端末に先を越される?.サーバのIPv6対応......................................................15

NAT64で IPv6 端末を IPv4 サーバにつなげよう一台二役を果たす「NAT64/DNS64」..................................................................16動作フロー.......................................................................................................................17AXシリーズにおけるNAT64/DNS64の設定例.............................................18フラグメンテーションのサポート........................................................................ 20HTTPならばリンク先のリライトは原則不要に.............................................21NAT64セッションログの保存................................................................................ 22当面続く「移行期」への備えを............................................................................ 22

出典:@ IT『IPv6 移行ソリューション丸分かり』2012 年 3月~ 5月http://www.atmarkit.co.jp/fnetwork/index/index_transfer.html

IPv4IPv6IPv6

IPv4IPv6IPv6

移行ソリューション、その選択肢を知る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のサービスが混在する形となります。

 表 1に、ホームデバイス/ ISPやアクセス回線/宛先という、ネットワークを構成する3つの要素がIPv4なのかIPv6なのかによって、どのようなIPv4/ IPv6移行ソリューションが選択可能かを分類しました。

1 2

移行ソリューション、その選択肢を知る

表1

ホームデバイス ISP やアクセス回線 宛先 ソリューションIPv4 IPv4 IPv4 LSN(CGN)

IPv4 IPv6 IPv4 DS-Lite4rd

IPv6 IPv6 IPv4 NAT64SLB-PT

IPv6 IPv4 IPv6 6rdIPv6 IPv6 IPv6 Dual.Stack

Page 3: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6

IPv4IPv6IPv6

移行ソリューション、その選択肢を知る 移行ソリューション、その選択肢を知る

・User Quota( Fairness in sharing the resources)平等にグローバルIPを共有するため、各ユーザーが使用できるポート数に制限を設ける機能。TCP、UDP、ICMPそれぞれに最大使用可能セッション数を設定できる

・Sticky NAT( Internal IP to External IP mapping )NATセッション後も、一定の時間、同じ送信元の通信に対し同じグローバルIPを使用する機能

・LSN NAT LoggingLSN.NAT.session作成時と開放時にロギングする機能(変換前の送信元IPアドレス/ポート→変換後の送信元IPアドレス/ポート/あて先IPアドレス/ポート)

アクセスラインが先に IPv6 化しているなら「 DS-Lite 」

図2:DS-Liteのアーキテクチャ

■ ネットワーク構成:IPv4(端末)←→IPv6(ISP/アクセス回線)←→IPv4(宛先)■ 通信手法:トンネル(IPv4.over.IPv6)■ 概要:この手法は、宅内がIPv4(プライベート)、アクセスラインがIPv6、宛先がIPv4(パブリック)のケースに適用できます。つまりアクセスラインだけがすでに IPv6 化できている場合です。日本では、KDDIの「auひかり」などが該当します。 この場合、宅内のIPv4トラフィックをIPv4.over.IPv6でトンネリングを行い、キャリア内のトンネルを終端するデバイスで、IPv4(プライベート)/ IPv4(パブリック)のNAT変換を行ってインターネットへ転送します。

 宅内にIPv6端末があり、また宛先もIPv6対応している場合には、エンドツーエンドでIPv6通信ができているため、NATも何も行わず、そのまま転送することになります。

 このように、アクセスラインだけ先にIPv6化されたとしても、IPv4とIPv6が同時に使えるようになります。この場合、端末側とキャリア側の双方にDS-Liteをサポートしたデバイスが必要となります。

3 4

このようにIPv4/ IPv6移行ソリューションは1つしかないというものではなく、ネットワーク構成などにより、いくつかの選択肢があります。筆者が所属しているA10ネットワークスでも、そのいくつかを提供しています。

では以下に、各移行ソリューションの構成や特徴を簡単に紹介しましょう。

IPv4 延命策の「LSN(CGN)」

図1:LSN(CGN)のアーキテクチャ

■ ネットワーク構成:IPv4(端末)←→IPv4(ISP/アクセス回線)←→IPv4(宛先)■ 通信手法:.NAT■ 概要:.以前はLSN( Large Scale NAT )と呼んでいましたが、現在はCGN( Carrier Grade NAT )という呼び方をしています。この手法はIPv6への移行ではなく、IPv4 枯渇対策もしくは延命のための手法です。 この構成図では、宅内はIPv4(プライベート)、アクセス回線はIPv4(プライベート)、キャリアバックボーン内はIPv4(パブリック)の「NAT444」(IPv4←→IPv4変換を2度行うのでこのように書きます)構成です。

 IPv4インターネット側へ抜ける際には、1つのパブリックIPを複数のユーザーで共有することにより、必要なパブリックIPアドレスの数を削減します。それ自体は、従来のNATで行っている処理と何ら変わりないわけですが、“キャリアグレード”と呼んでいるからには理由があります。よりスケールし、キャリア側でサービスレベルをコントロールするため、以下のような付加機能がさらに備わっています。

・Full Cone NATセッション確立後、グローバル側のどのIP/ポートからでもアクセスを可能にする、透過性が最も高いNAT方式

・Hair-pinning同じNAT配下の端末同士が、NATのグローバルIPを経由して通信できる機能

IPv4 インターネットSP IPv4バックボーン

IPv4

キャリアグレードNAT

NATNAT

IPv4

NATNAT

プライベートIP

CGN網グローバルIP

プライベートIP

NATNAT

CGN網内もIPv4プライベートIPを使用

宅内の IPv4プライベート IP

複数のユーザでグローバルIPを共有

IPv6 インターネット

IPv4

IPv6

SP IPv6バックボーン

Dual-Stack Lite

IPv4 インターネット

グローバルIP

NATNAT

IPv4トラフィックはIPv6でトンネリング

IPv6トラフィックはそのまま転送

プライベートアドレスをNAT

プライベートIP

プライベートIP

プライベートIP

IPv6トンネル終端

IPv6トンネル終端

IPv4 over IPv6

IPv4サーバ

IPv6サーバ

DNSサーバ

AAAA?

A? A

NAT64/DNS64

IPv6クライアント

IPv6 インターネット

IPv4 インターネット

IPv6 ネットワーク

AAAA

IPv4 ネットワーク

NATNAT

IPv6 クライアント

IPv4 クライアント

IPv6 サーバ

IPv4 サーバ

IPv6クライアントのリクエストをIPv4サーバが処理

IPv4クライアントのリクエストをIPv6サーバが処理

IPv4⇔IPv6 SLB

IPv4

IPv6

IPv6 インターネット

IPv4 インターネット

6rd

AXシリーズ

IPv4バックボーン

IPv4トンネル終端

IPv6 over IPv4

IPv6トラフィックはIPv4でトンネリング

ユーザ宅

CPE

IPv4トラフィック

IPv4 インターネットSP IPv4バックボーン

IPv4

キャリアグレードNAT

NATNAT

IPv4

NATNAT

プライベートIP

CGN網グローバルIP

プライベートIP

NATNAT

CGN網内もIPv4プライベートIPを使用

宅内の IPv4プライベート IP

複数のユーザでグローバルIPを共有

IPv6 インターネット

IPv4

IPv6

SP IPv6バックボーン

Dual-Stack Lite

IPv4 インターネット

グローバルIP

NATNAT

IPv4トラフィックはIPv6でトンネリング

IPv6トラフィックはそのまま転送

プライベートアドレスをNAT

プライベートIP

プライベートIP

プライベートIP

IPv6トンネル終端

IPv6トンネル終端

IPv4 over IPv6

IPv4サーバ

IPv6サーバ

DNSサーバ

AAAA?

A? A

NAT64/DNS64

IPv6クライアント

IPv6 インターネット

IPv4 インターネット

IPv6 ネットワーク

AAAA

IPv4 ネットワーク

NATNAT

IPv6 クライアント

IPv4 クライアント

IPv6 サーバ

IPv4 サーバ

IPv6クライアントのリクエストをIPv4サーバが処理

IPv4クライアントのリクエストをIPv6サーバが処理

IPv4⇔IPv6 SLB

IPv4

IPv6

IPv6 インターネット

IPv4 インターネット

6rd

AXシリーズ

IPv4バックボーン

IPv4トンネル終端

IPv6 over IPv4

IPv6トラフィックはIPv4でトンネリング

ユーザ宅

CPE

IPv4トラフィック

Page 4: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6

IPv4IPv6IPv6

IPv4IPv6IPv6

移行ソリューション、その選択肢を知る 移行ソリューション、その選択肢を知る

ロードバランスとの一石二鳥、「 SLB-PT」

図4:SLB-PTのアーキテクチャ

■ ネットワーク構成: IPv6(端末)←→IPv6(ISP/アクセス回線)←→IPv4(宛先).. . ...IPv4(端末)←→IPv4(ISP/アクセス回線)←→IPv6(宛先)■ 通信手法:NAT■ 概要:この手法は、IPv4/ IPv6いずれのクライアントからも、IPv4/ IPv6のいずれのサーバに対しても、NATとロードバランスをさせて通信可能とするものです。NAT変換後の接続先は、NAT64/ DNS64の場合にはネットワーク(イントラネットもしくはインターネット)ですが、SLB-PTの場合は直結されたサーバ(群)となります。 この場合、DNS64のようなA/AAAAレコードの変換は不要です。SLB-PTを行うデバイスのバーチャルIP(VIP)のアドレスをA/AAAAレコードとして登録しておけば構いません。 自組織内の IPv4サーバを手っ取り早くIPv6 化するには便利な手法です。NATはもとより、ロードバランスも行うので、パフォーマンスや安定性の向上も同時に見込むことができます。

アクセスラインが取り残された場合には「 6rd 」

図5:6rdのアーキテクチャ

■ ネットワーク構成:IPv6(端末)←→IPv4(ISP/アクセス回線)←→IPv6(宛先)■ 通信手法:トンネル(IPv6.over.IPv4)■ 概要:この手法はDS-Liteと真逆のネットワーク構成で、宅内がIPv6クライアント、アクセスラインがIPv4、宛先がIPv6のケースです。つまりアクセスラインだけ IPv4 が残ってしまった場合に有効な手法です。アクセスライン上はIPv6.over.IPv4でトンネリングを行い、対向のIPv6ネットワークへ転送します。 宅内にIPv4クライアントも混在している場合には、IPv4アクセスライン経由でそのままIPv4ネットワークとの通信も可能です。

5 6

それでも残る IPv4 サーバへのアクセスを確保、「 NAT64」

図3:NAT64のアーキテクチャ

■ ネットワーク構成: IPv6(端末)←→IPv6(ISP/アクセス回線)←→IPv4(宛先)■ 通信手法:NAT■ 概要:この手法は、クライアントがIPv6、アクセスラインがIPv6、宛先が IPv4(パブリック/プライベート)のケースに適用できます。 いずれインターネットの世界がより進んでIPv6のネットワークが一般的になったとしても、ホストしているレガシーなアプリケーションの制約などから、依然としてIPv4のサーバは残るでしょう。この手法を使えば、DNSによる名前解決を行ったあとに、IPv6クライアントからIPv4サーバへ接続することが可能となります。 IPv4アドレスはAレコードとしてDNSサーバに登録されていますが、IPv6クライアントはAレコードのアドレスは理解できません。そのため、NAT64/DNS64対応機器で、AレコードからIPv6端末が理解できるAAAAレコードへ変換するなどの調整を行います。 こうしてIPv6のアドレス解決がされた後は、ユーザーからのパケットをIPv6からIPv4へNATして転送することで、通信可能となります。

IPv4 インターネットSP IPv4バックボーン

IPv4

キャリアグレードNAT

NATNAT

IPv4

NATNAT

プライベートIP

CGN網グローバルIP

プライベートIP

NATNAT

CGN網内もIPv4プライベートIPを使用

宅内の IPv4プライベート IP

複数のユーザでグローバルIPを共有

IPv6 インターネット

IPv4

IPv6

SP IPv6バックボーン

Dual-Stack Lite

IPv4 インターネット

グローバルIP

NATNAT

IPv4トラフィックはIPv6でトンネリング

IPv6トラフィックはそのまま転送

プライベートアドレスをNAT

プライベートIP

プライベートIP

プライベートIP

IPv6トンネル終端

IPv6トンネル終端

IPv4 over IPv6

IPv4サーバ

IPv6サーバ

DNSサーバ

AAAA?

A? A

NAT64/DNS64

IPv6クライアント

IPv6 インターネット

IPv4 インターネット

IPv6 ネットワーク

AAAA

IPv4 ネットワーク

NATNAT

IPv6 クライアント

IPv4 クライアント

IPv6 サーバ

IPv4 サーバ

IPv6クライアントのリクエストをIPv4サーバが処理

IPv4クライアントのリクエストをIPv6サーバが処理

IPv4⇔IPv6 SLB

IPv4

IPv6

IPv6 インターネット

IPv4 インターネット

6rd

AXシリーズ

IPv4バックボーン

IPv4トンネル終端

IPv6 over IPv4

IPv6トラフィックはIPv4でトンネリング

ユーザ宅

CPE

IPv4トラフィック

IPv4 インターネットSP IPv4バックボーン

IPv4

キャリアグレードNAT

NATNAT

IPv4

NATNAT

プライベートIP

CGN網グローバルIP

プライベートIP

NATNAT

CGN網内もIPv4プライベートIPを使用

宅内の IPv4プライベート IP

複数のユーザでグローバルIPを共有

IPv6 インターネット

IPv4

IPv6

SP IPv6バックボーン

Dual-Stack Lite

IPv4 インターネット

グローバルIP

NATNAT

IPv4トラフィックはIPv6でトンネリング

IPv6トラフィックはそのまま転送

プライベートアドレスをNAT

プライベートIP

プライベートIP

プライベートIP

IPv6トンネル終端

IPv6トンネル終端

IPv4 over IPv6

IPv4サーバ

IPv6サーバ

DNSサーバ

AAAA?

A? A

NAT64/DNS64

IPv6クライアント

IPv6 インターネット

IPv4 インターネット

IPv6 ネットワーク

AAAA

IPv4 ネットワーク

NATNAT

IPv6 クライアント

IPv4 クライアント

IPv6 サーバ

IPv4 サーバ

IPv6クライアントのリクエストをIPv4サーバが処理

IPv4クライアントのリクエストをIPv6サーバが処理

IPv4⇔IPv6 SLB

IPv4

IPv6

IPv6 インターネット

IPv4 インターネット

6rd

AXシリーズ

IPv4バックボーン

IPv4トンネル終端

IPv6 over IPv4

IPv6トラフィックはIPv4でトンネリング

ユーザ宅

CPE

IPv4トラフィック

IPv4 インターネットSP IPv4バックボーン

IPv4

キャリアグレードNAT

NATNAT

IPv4

NATNAT

プライベートIP

CGN網グローバルIP

プライベートIP

NATNAT

CGN網内もIPv4プライベートIPを使用

宅内の IPv4プライベート IP

複数のユーザでグローバルIPを共有

IPv6 インターネット

IPv4

IPv6

SP IPv6バックボーン

Dual-Stack Lite

IPv4 インターネット

グローバルIP

NATNAT

IPv4トラフィックはIPv6でトンネリング

IPv6トラフィックはそのまま転送

プライベートアドレスをNAT

プライベートIP

プライベートIP

プライベートIP

IPv6トンネル終端

IPv6トンネル終端

IPv4 over IPv6

IPv4サーバ

IPv6サーバ

DNSサーバ

AAAA?

A? A

NAT64/DNS64

IPv6クライアント

IPv6 インターネット

IPv4 インターネット

IPv6 ネットワーク

AAAA

IPv4 ネットワーク

NATNAT

IPv6 クライアント

IPv4 クライアント

IPv6 サーバ

IPv4 サーバ

IPv6クライアントのリクエストをIPv4サーバが処理

IPv4クライアントのリクエストをIPv6サーバが処理

IPv4⇔IPv6 SLB

IPv4

IPv6

IPv6 インターネット

IPv4 インターネット

6rd

AXシリーズ

IPv4バックボーン

IPv4トンネル終端

IPv6 over IPv4

IPv6トラフィックはIPv4でトンネリング

ユーザ宅

CPE

IPv4トラフィック

Page 5: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6Web サーバに手を付けず IPv6 対応

 前回の記事では、さまざまなIPv4/ IPv6移行ソリューションを紹介しました。今回は少し詳細に入って、既存のIPv4.Webサーバの前にSLB-PT対応(IPv6→IPv4変換)のロードバランサを配置して、IPv4.Webサーバを“さくっ”とIPv6対応にする方法を、ネットワーク構成やコマンドを交えて紹介したいと思います。

 今回使用する機材はA10ネットワークスの「AXシリーズ」というADC(Application.Delivery.Controller)で、マーケットでも広く実績のある機器です。コマンドは業界標準ライクなものですので、ご覧になればどのような意味のコマンドであるか、想像できるかと思います。

 AXシリーズ で は IPv6 → IPv4 のNAT-PTだ け で は なく、IPv4→ IPv6や IPv4← → IPv4、IPv6←→IPv6のロードバランスも同時に提供可能ですが、ここではIPv6→ IPv4のNAT-PTに焦点を絞ってお話をします。

.

.実際に使用する際には、IPv4←→IPv6間のアドレス変換はもちろん、以下の点も考慮する必要があります。

....検討事項1:MTU( Maximum Transfer Unit )に関連する考慮

....検討事項2:L7ヘッダやそのペイロード(データ部分)のリライト( 書き換え)

....検討事項3:IPv4←→IPv6間の変換ログの保存

これらに関する対処方法に関しても、後半でお話したいと思います。では本題に入っていきましょう

SLB-PT で WebサーバをさくっとIPv6 対応に

IPv4IPv6IPv6

IPv4IPv6IPv6

SLB-PTでWebサーバをさくっとIPv6対応に SLB-PTでWebサーバをさくっとIPv6対応に

移行ソリューション導入時の注意点

 5種類のソリューションについて説明しましたが、ここまで見てきたように、ネットワーク経路上のIPv6化されている場所によって、取り得るアプローチは異なってきます。

 また、これらのソリューションにより、IPv4←→IPv6のIPアドレスの相互接続性は担保されます。しかしながら、実際に通信を行ってみると問題が発生する場合があります。これは、IPv4/ IPv6のプロトコル仕様やその実装、サーバでホストしているアプリケーションの実装などに依存する問題があるためです。

 以下のようなケースでは、通信経路上のデバイスでの対応が必要となる場合が考えられます。

・. パケットのペイロードの部分にオリジナルのIPアドレスが埋め込まれているようなアプリケーションの通信で発生する問題(IPv4/ IPv6アドレスを変換したとしても、ペイロード内のアドレスがオリジナルのままであれば、通信エラーが発生するなど)

→ALG( Application Layer Gateway)機能により、ペイロードの中のIPv4/ IPv6アドレスも同じく変換することが必要です。変換できるアプリケーションの種類などは、ネットワークデバイスにより異なります。

・..IPv4/ IPv6のパケットの変換やカプセル化(トンネリングなどの手法の場合)などに起因するMTUサイズの問題(途中経路の最大MTUを超えないように調整する手順)

→ IPv4 / IPv6 Path MTU Discovery や MSS clampingなどの機能で、パケットサイズの調整を行います。

・..NAT変換(IPv4←→IPv6、IPv4←→IPv4、IPv6←→IPv4)による通信ログ保存の問題(犯罪捜査などへ協力のためのアドレストレーサビリティが必要です)

→ハイパフォーマンスなログ収集ソリューション/デバイスが必要となります。

 こういった課題を考慮しながら移行ソリューションを実装していくことが重要です。

さて、どこから手を付けよう?

 ここまでご紹介した内容に基づいて、どの手法で、どこから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化を徐々に進めて、運用ノウハウを蓄積しながら移行を進める助けになれば幸いです。

図1:SLB-PTのロードバランサによるIPv6対応

7 8

IPv4 インターネットSP IPv4バックボーン

IPv4

キャリアグレードNAT

NATNAT

IPv4

NATNAT

プライベートIP

CGN網グローバルIP

プライベートIP

NATNAT

CGN網内もIPv4プライベートIPを使用

宅内の IPv4プライベート IP

複数のユーザでグローバルIPを共有

IPv6 インターネット

IPv4

IPv6

SP IPv6バックボーン

Dual-Stack Lite

IPv4 インターネット

グローバルIP

NATNAT

IPv4トラフィックはIPv6でトンネリング

IPv6トラフィックはそのまま転送

プライベートアドレスをNAT

プライベートIP

プライベートIP

プライベートIP

IPv6トンネル終端

IPv6トンネル終端

IPv4 over IPv6

IPv4サーバ

IPv6サーバ

DNSサーバ

AAAA?

A? A

NAT64/DNS64

IPv6クライアント

IPv6 インターネット

IPv4 インターネット

IPv6 ネットワーク

AAAA

IPv4 ネットワーク

NATNAT

IPv6 クライアント

IPv4 クライアント

IPv6 サーバ

IPv4 サーバ

IPv6クライアントのリクエストをIPv4サーバが処理

IPv4クライアントのリクエストをIPv6サーバが処理

IPv4⇔IPv6 SLB

IPv4

IPv6

IPv6 インターネット

IPv4 インターネット

6rd

AXシリーズ

IPv4バックボーン

IPv4トンネル終端

IPv6 over IPv4

IPv6トラフィックはIPv4でトンネリング

ユーザ宅

CPE

IPv4トラフィック

Page 6: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6IPv4IPv6IPv6対象となるネットワーク

 この記事の例では、2台のIPv4.Webサーバ(サーバ1とサーバ2)に対してロードバランスを行います。構成は図 2のとおり、一般的なロードバランサと同じ配置です。

 インターネット側のIPv6端末は、ロードバランサのVIPに対して割り当てられたIPv6アドレスに対してアクセスしてきます。インターネット側のIPv6端末にはAXシリーズのVIPが見えていて、AXシリーズはそのVIPに届いたIPv6でのWebアクセスを、2台のIPv4.Webサーバにロードバランスします。そのロードバランスを行う際に、IPアドレスをIPv6.からIPv4のアドレスに変換するという流れです。

.

 次に、実際にパケットのIPアドレスが、それぞれのリンク(IPv6端末←→AXシリーズ、AXシリーズ←→IPv4.Webサーバの中でどのように変換されて通信するかを図3に示します。

 IPv6からIPv4へアドレスが変換されるので、AXシリーズでは、ソースIP.NATが必須となります(ソースのIPアドレスは、オリジナルそのままで使いません)。

 では、実際の設定方法を紹介していきましょう。

NAT-PTの設定方法

■ 前準備

 まず前準備として以下の作業が必要となります。

....1...グローバルIPv6アドレスを取得し、ドメイン名を登録する(もしもパブリックIPv6ネットワークに対してサーバを公開するのであれば必要な準備です。イントラネットの中であれば不要です)。

....2...DNSサーバで、AAAAレコードとPTRレコードを登録する(VIPに割り当てるIPv6アドレスに対して名前を付けます)。

■ AXシリーズでの設定例

 AXシリーズでは以下の順に設定を行います。

1...IPv4.Source.NAT.Poolを作成する2...IPv4サーバを作成する3...IPv4サーバのService.Groupを作成する4...IPv6.Virtual.Serverを、Service.Group+IPv4.Source.NAT.Poolで作成する(追加で他のオプション的な設定も可能です)。

 実際のコマンドは、以下の通りになります。

 IPv6→ IPv4のNAT-PTの設定はこれだけです。おそらく「えっ、これだけ?」と思う方もいるのではないでしょうか。実際のところ、単なるアドレスの変換だけであれば、意外と簡単にできてしまいます。

 が、実ネットワークで運用するには、前述の項目について検討していく必要があります。以下、詳細に見ていきましょう。

SLB-PTでWebサーバをさくっとIPv6対応に SLB-PTでWebサーバをさくっとIPv6対応に

図 2:今回の例のネットワーク論理構成

図 3:各リンクでの IP アドレス変換のイメージ

9 10

!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

IPv6クライアント

K:

I:H:L:M:

D: A: B: E:C:10

1

11

14 13

12

9

3

74

86

5

2

IPv6Host

IPv6 IPv4VIP-v6

NAT Pool F:NAT Pool G:VIP j:

IPv4ノードwww.example.com

Client-IPv6@ ー> VIP-IPv6@

VIP-IPv6@ ー> Client-IPv6@

SNAT-IPv4@ ー>Server-IPv4@

Server-IPv4@ ー> SNAT-IPv4@

DNS サーバー

IPv6ネットワーク

DNS

AXシリーズ

VIP1:2001:db8:1:1:1

Source NATプールPool: 192.168.0.254/24

IPv4 サーバー(2)s2: 192.168.0.2

IPv4 サーバー(1)s1: 192.168.0.1

IPv4 サーバー

SLB-PT

IPv6クライアント

K:

I:H:L:M:

D: A: B: E:C:10

1

11

14 13

12

9

3

74

86

5

2

IPv6Host

IPv6 IPv4VIP-v6

NAT Pool F:NAT Pool G:VIP j:

IPv4ノードwww.example.com

Client-IPv6@ ー> VIP-IPv6@

VIP-IPv6@ ー> Client-IPv6@

SNAT-IPv4@ ー>Server-IPv4@

Server-IPv4@ ー> SNAT-IPv4@

DNS サーバー

IPv6ネットワーク

DNS

AXシリーズ

VIP1:2001:db8:1:1:1

Source NATプールPool: 192.168.0.254/24

IPv4 サーバー(2)s2: 192.168.0.2

IPv4 サーバー(1)s1: 192.168.0.1

IPv4 サーバー

SLB-PT

Page 7: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6

IPv4IPv6IPv6検討事項 1:MTU に関連する考慮

 MTUは悩ましい問題です。IPv6では、経路途中のルータでのフラグメントによる負荷をなくすという目的のため、経路上のルータでフラグメントせず、エンドツーエンドで経路上の最も小さいサイズのMTUに調整する実装となっています。

 MTUやMTUの調整方法に関するIPv4とIPv6間の違いを、表1にまとめてみました。

 AXシリーズのようなSLB-PTを行うロードバランサは、IPv4の世界とIPv6の世界の間に立ち、両方の世界のMTUのハンドリングを行います。基本的にはICMPv4.Path.MTU.DiscoveryやICMPv6により、デバイス側で自動的に調整してうまくやってくれるはずです。しかし機器の実装やネットワーク環境(例えば途中のルータでICMPのフィルタがされているなど)によっては、問題が発生する場合もあり得ます。

 対応方法はそれぞれのケースに合わせて考える必要がありますが、問題が発生した場合の最終手段としては、IPv6のMTUサイズを最小の「1280」にしてしまうという方法もあります。これにより通信上のエラーは解決できますが、一度に送信できるデータ量が少なくなってしまうので、通信効率は下がります。

検討事項 2:L7ヘッダやそのペイロードのリライト

 今回紹介するケースでは、IPv4のWebサーバに対して、IPv6端末からロードバランサを介してアクセスしています。

 もし、Webサーバが返信するコンテンツ中のハイパーリンク先がIPv4サーバであった場合、そのハイパーリンクをクリックすると、IPv6端末からIPv4サーバに対してアクセスしようと試み、通信エラーが発生して結局リンク先に飛べなくなる、といった問題が発生します。これでは、一時的にアドレスが変換されたとしても、実用上は使えないに等しい状態です。

 もしハイパーリンク先がIPv6サーバとなっているのであれば、何も気にすることはありません。しかしハイパーリンク先がIPv4サーバであった場合には、間に立つSLB-PTを行うロードバランサで、ハイパーリンク先のホスト名のリライト(書き換え)を行い、IPv6サーバの名前へ書き換えることで対処が可能です。つまり、Webサーバのコンテンツを変更することなく対応できます。

 例えば、コンテンツ中のハイパーリンク先が以下のIPv4.Webサーバ(www.a10networks.com)になっていた場合、IPv6.Webサーバであるipv6.a10networks.comに書き換えます。

.

 なお、例として挙げているAXシリーズでは、aFleXというTclベースのスクリプト言語をサポートしています。このaFleXを利用することで、コンテンツの中身を引っ掛けてリライトすることが可能です。

 以下は、上記の場合のaFleXのサンプルです(ipv6linkという名前でスクリプトを保存します)。

こうして作成したスクリプトを、Virtual.Portの設定に追加します。

 こうすることで、Webサーバのコンテンツを直接編集する必要なく、前段のAXシリーズでハイパーリンク先をIPv6サーバへ振り向けることが可能になります。

 なお、オリジナルのコンテンツはIPv4.Webサーバで書かれていますから、IPv4端末からのアクセスの場合には書き換えは不要です(aFleXはVIPにバインドしていますから、IPv4のVIPにはこのaFleXをバインドしなければいいのです)。

 今回はWebサーバを例に挙げているため、このようなハイパーリンクのリライトが必要となりました。しかし、例えばVoIPや仮想デスクトップのような他のアプリケーションには書き換えが不要であったりします。逆に、特殊なALG(Application.Layer.Gateway)機能により、アプリケーションごとの特殊なヘッダやペイロードの書き換えが必要になることもあります。使用する機器により可/不可がありますので、利用シーンに合わせて事前の機能確認が必要となるでしょう。

SLB-PTでWebサーバをさくっとIPv6対応に SLB-PTでWebサーバをさくっとIPv6対応に

11 12

IPv4 IPv6

最小MTUサイズ 規定なし(実質576バイト以上) 1280バイト

途中経路上ルータでの.フラグメント可/不可

可 不可

MTUサイズ調整方法 ICMPv4.Path.MTU.Discovery ICMPv6.Packet.Too.Big

DFビットの有無 有 なし(途中でのフラグメントの概念がない)

<A href=http://www.a10networks.com/new.html> </A> ↓<A href=http://ipv6.a10networks.com/new.html> </A>

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 }

slb virtual-server vir2 2001:db8:1:1::1 port 80 http source-nat pool pool1 service-group sg-80 aFleX ipv6link

Page 8: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6検討事項 3:IPv4 ←→ 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端末がアクセスしてきたかというログを採取できます。

.

.

 この際、Webサーバ側にも設定が必要になります。Apacheの場合、Httpd.conf内のLogFormatディレクティブに以下の内容を追加します。

.

. デフォルトでは「X-ClientIP:」というヘッダが追加されるため、以下の赤字部分を追加します。なお下記の例では“(ダブルクォーテーション)で区切っているため、「\"」を両側に追記しています。

 この結果、Webサーバ側で以下のようなログを取得できるようになります。

■( 2)Syslog サーバ側でアクセスログを取得する方法 先に紹介したWebサーバ側でのアクセスログの記録が可能なのは、L7でロードバランスを行っている場合だけです。では、L4でロードバランスを行う際にはログを取得する方法がないかというと、そうではありません。L7ヘッダのリライトはできませんが、AXシリーズからSyslogサーバにログを送信することで取得は可能です。

 各設定の意味は以下の通りです。....(1)ログサーバをSLBのリアルサーバのように作成します。....(2)サービスグループを作成します。....(3)ロギングテンプレートを作成します。ここで「severity」「facility」などを設定できます。   ........defaultではlocal0、debuggingで送信されます。....(4)サービスグループを指定します。....(5)..このinclude-rip-rportを設定すると、どのIPv4サーバへ送信されたかをログに記録します。....(6)バーチャルサーバの配下にロギングテンプレートをバインドします。

 AXシリーズの場合では、このような設定を行うと、Syslogサーバに次のようなログが送信されます。

 このように、IPv6端末のIPv6アドレスがログとして残っていることが分かります。また別の方法として、先に紹介したaFleXを使ってログを取得する方法もあります。

 このルールをvPortにバインドします。

 するとAXシリーズ上のログとして、次のように表示されるようになります。

SLB-PTでWebサーバをさくっとIPv6対応に SLB-PTでWebサーバをさくっとIPv6対応に

13 14

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 !

! 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

%{ ヘッダ名 }i

%{ ヘッダ名 }i

%{ ヘッダ名 }i

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"{X-ClientIP}i\" " combined

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"

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

Dec 8 12:10:28 ax32 a10logd: [AFLEX]<6> Connected: 2001:398:2:1::114 (38634) -> 192.168.0.1 (80)

slb virtual-server vir2 2001:db8:1:1::1 port 80 http source-nat pool pool1 service-group sg1 aFleX ipv6-log

when SERVER_CONNECTED { log "Connected: [IP::client_addr] ([TCP::client_port]) -> [IP::server_addr] ([TCP::server_port])" }

Page 9: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6端末に先を越される? サーバの IPv6 対応

 最近リリースされているPCでは、OSの多くがネイティブでIPv6対応となっています。またルータやL3スイッチも、多くがデュアルスタック対応となってきています。そういう意味では、徐々にですが、企業内イントラネットのユーザーデバイス/ネットワーク機器の更新に伴い、あらゆるものがIPv6対応となっていくでしょう。

 残すはサーバのIPv6化です。しかし、技術的にはサーバ自身でIPv6化はできたとしても、どうしてもホストしているアプリケーションの改変が必要であったりして、なかなか踏み込めないこともあるかもしれません。

 また、いきなりすべての端末がIPv6になることもありません。どうしてもIPv4とIPv6が共存する期間というのが存在します。両方の端末からのアクセスに対応するためにIPv4とIPv6対応のサーバを別々に用意するというのもナンセンスではないでしょうか。

 今回ご紹介したSLB-PTは、既存のIPv4サーバをうまく利用して、IPv4/ IPv6、両方の端末へのサービスを一元的に提供する1つの手段にもなります。興味を持った方はぜひ試してみてください。

15 16

IPv4IPv6IPv6一台二役を果たす「 NAT64/DNS64」 前回の記事では、SLB-PT(IPv6→IPv4)という手法を用いてIPv6端末からIPv4サーバにアクセスする方法を説明しました。意外と簡単にIPv4サーバをIPv6化できることを実感いただけたかと思います。

 ただSLB-PTの場合、IPv4サーバはSLB-PTをサポートしたロードバランサの配下に設置し、かつSLBにサーバのIPv4アドレスを設定しなければなりません。同時に、ロードバランサのVIPに設定するIPv6アドレスは、AAAAレコードとして設定する必要があります。こういった要因から、通信対象となるIPv4サーバも自組織の管理下に置く必要があります。

 では、自組織管理下のサーバではなく、「The.Internet」そのものと通信したい場合はどうすればいいでしょうか。サーバの数は無数にあります。また、そのサーバもほとんどは他組織によって運営されており、アドレス自体が変わる可能性もあります。この場合は、SLB-PTで対応するには無理があります。

 このようなケースに適しているのが、NAT64/DNS64という手法です。「NAT64」はIPv6ネットワークとIPv4ネットワークの間に立ってNAT(IPv6→IPv4)を行い、同時に「DNS64」で、DNSによる名前解決に関するIPv4/IPv6の違いを吸収します。

 そこで今回も、A10ネットワークスの「AXシリーズ」を例に用い、NAT64/DNS64の実装方法について説明します。サンプルネットワーク構成は図 1の通りです。図の左側がIPv6ネットワーク、右側がIPv4ネットワークと考えてください。

NAT64で IPv6 端末をIPv4サーバにつなげよう

図 1:サンプル構成図

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プールアドレス群NAT Pool G: 10.20.20.200-220 DNSサーバへアクセスする際のIPv4プールアドレス群

H: IPv6:2001:db8:1:1::22.. IPv6.DNSサーバI: IPv4:10.20.20.22. IPv4.DNSサーバ

VIP J: 2001:db8:1:2::100. DNS64を行う際にアクセスするVIP.IPv6アドレスK: 2001:db8:1:3::1 イントラネット内のIPv6端末L: 10.20.20.23 Logサーバ1M: 10.20.20.24 Logサーバ2

IPv6クライアント

K:

I:H:L:M:

D: A: B: E:C:10

1

11

14 13

12

9

3

74

86

5

2

IPv6Host

IPv6 IPv4VIP-v6

NAT Pool F:NAT Pool G:VIP j:

IPv4ノードwww.example.com

Client-IPv6@ ー> VIP-IPv6@

VIP-IPv6@ ー> Client-IPv6@

SNAT-IPv4@ ー>Server-IPv4@

Server-IPv4@ ー> SNAT-IPv4@

DNS サーバー

IPv6ネットワーク

DNS

AXシリーズ

VIP1:2001:db8:1:1:1

Source NATプールPool: 192.168.0.254/24

IPv4 サーバー(2)s2: 192.168.0.2

IPv4 サーバー(1)s1: 192.168.0.1

IPv4 サーバー

SLB-PT

NAT64でIPv6端末をIPv4サーバにつなげようSLB-PTでWebサーバをさくっとIPv6対応に

Page 10: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6AXシリーズにおける NAT64/DNS64 の設定例

 まず、図1の場合のAXのコンフィグ例を示しました。ここでは設定の意味を分かりやすくするために、NAT64関係の設定をブルー、DNS64関係の設定をレッド、ロギング関係の設定をグリーンで色分けしています。

■ AX コンフィグ例

 さて、NAT64/DNS64を導入する場合も、前回紹介したSLB-PTと同様に、以下のような事柄について検討しておく必要があります。それぞれの対処方法に関しては、前回同様、次ページでお話ししたいと思います。

....検討事項1:MTU( Maximum Transfer Unit )に関連する考慮

....検討事項2:L7ヘッダやそのペイロード(データ部分)のリライト( 書き換え)

....検討事項3:IPv4←→IPv6間の変換ログの保存

IPv4IPv6IPv6動作フロー

 では、図1の環境で、どのように IPv6 端末から IPv4サーバへのアクセスが可能になるのか、流れを追ってみましょう。

 このように、IPv6 端末と IPv4サーバの間に立つAXが、DNSの名前解決を取り持ち、通信ステータスを保持してNAT を行うことで、アクセスを可能にしています。

1: IPv6端末はwww.example.comのアドレスを解決するため、IPv6パケットでDNSリクエストを送信します。www.example.comはIPv4サーバです。DNSクエリの送信先アドレスは、AXに設定されたIPv6.VIPです。

2: AXは、AAAA(IPv6アドレスレコード)クエリをDNSサーバに送信します。DNSサーバはIPv6でもIPv4でも対応可能です。

3: DNSサーバは、www.example.comのAAAAレコードを探します。

4: www.example.comはIPv4サーバですから、AAAAレコードは存在しません。DNSクエリの結果は、「DNSアンサーがない」、または「エラー」になります。

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にパケットを送信します。

12: AXは、64:ff9b::c0a8:5宛のパケットを、IPv4アドレス192.168.0.5に変換し送信します。また、IPv4ネットワークへ出ていくパケットの送信元IPは、AXに設定されたIP.NAT.Poolの IPv4アドレスに置き換えられます。

13: www.example.comは、AXに設定されたIP.NAT.Poolの IPv4アドレス宛にリプライのパケットを送信します。

14: AXはセッションエントリを確認し、192.168.0.5からのパケットをIPv6にNAT変換して、IPv6端末へ送信します。

NAT64でIPv6端末をIPv4サーバにつなげよう NAT64でIPv6端末をIPv4サーバにつなげよう

17 18

vlan 10 インターネット側 tagged ethernet 17 router-interface ve 10!vlan 20 DNSサーバのあるL2スイッチ側 tagged ethernet 5 router-interface ve 20!vlan 30 イントラネット側 tagged ethernet 18 router-interface ve 30!class-list c1 NAT64の設定……(1) 2001:db8::/32 lsn-lid 1 NAT64の設定……(1)!interface ve 10 Interface ve10→インターネット接続ip address 10.111.0.2 255.255.255.0ip nat outside NAT64の設定……(2)!interface ve 20 interface ve20→ DNSサーバ群に接続 ip address 10.20.20.2 255.255.255.0ipv6 address 2001:db8:1:1::2/64!interface ve 30 interface ve30→イントラネット接続 ipv6 address 2001:db8:1:2::2/64 ipv6 nat inside NAT64の設定……(2)!ip route 0.0.0.0 /0 10.111.0.254 IPv4のインターネット側へのデフォルトルート!ipv6 route 2001:db8:1:3::/64 2001:db8:1:2::254 IPv6イントラネット側へのルート!ip nat pool p1 10.111.0.101 10.111.0.110 netmask /24 lsn IPv4の NATプール(NAT64の設定)……(3)ip nat pool p2 10.111.0.111 10.111.0.120 netmask /24 lsn IPv4で NATプール(NAT64の設定)……(3)ip nat pool source-nat-pool 10.20.20.200 10.20.20.220 netmask /24 DNSサーバへ NATする際に利用(NAT64の設定)……(4)ip nat pool-group pg1 p1 p2 p1と p2をグループ化(NAT64の設定)……(3)!ip nat lsn endpoint-independent-mapping enable (NAT64の設定)……(5)ip nat lsn endpoint-independent-filtering enable (NAT64の設定)……(5)ip nat lsn logging default-template nat64_logging (LSN Loggingの設定)……(9)!nat64 prefix well-known (NAT64の設定)……(6)nat64 alg ftp enable ……(6)nat64 alg rtsp enable ……(6)nat64 sip rtsp enable ……(6)nat64 alg tftp enable ……(6)nat64 inside source class-list c1 (NAT64の設定)……(1)/(6)!lsn-lid 1 (NAT64の設定)……(3) source-nat-pool pg1 (NAT64の設定)……(3)!slb server ipv6_22 2001:db8:1:1::22 IPv6 DNSサーバのアドレス(DNS64の設定)……(7) port 53 udpslb server ipv4_22 10.20.20.22 IPv4 DNSサーバのアドレス(DNS64の設定)……(7) port 53 udp!slb service-group sg-dns64 udp (DNS64の設定)……(8) member ipv4_22:53 member ipv6_22:53!!slb template dns dns-1 (DNS64の設定)……(8) dns64!slb virtual-server vip-100 2001:db8:1:2::100 (DNS64の設定)……(8) port 53 dns-udp source-nat pool source-nat-pool ……(4) service-group sg-dns64 template dns dns-1

slb server log1 10.20.20.23 (ログサーバの設定)……(9) port 514 udpslb server log2 10.20.20.24 (ログサーバの設定)……(9) port 514 udp!slb service-group log:514 udp (ログサーバのサービスグループの設定)……(9) member log1:514 member log2:514

ip nat template logging nat64_logging (ログテンプレートの設定)……(9) facility local5 log port-mappings both log sessions include-destination service-group log:514 severity informational!

Page 11: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6フラグメンテーションのサポート

 『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がセットされている場合の動作を変更します。

 デフォルトでは、ipv6 オプションとdf-set send-icmp オプションが有効となっています。

 デフォルトでは、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ネットワーク側のクライアントへの返信に、サーバからの返信パケットが確実に入るよう調整します。

NAT64でIPv6端末をIPv4サーバにつなげよう NAT64でIPv6端末をIPv4サーバにつなげよう

19 20

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 fragmentation inbound {df-set send-icmp |[df-set] drop |[df-set] ipv6}

  df-set send-icmp:inbound のフラグメントされたパケットに対しては送信者へ ICMP unreachable Message を送信します。  drop :パケットをドロップさせます。  Ipv6 :IPv6 フラグメンテーションをします。

nat64 fragmentation outbound {drop |ipv4 |send-icmpv6}

  drop :フラグメントされたパケットをドロップさせます。  ipv4 :IPv4 パケットフラグメントします。  send-icmpv6:フラグメントされた IPv6 パケットに対して ICMPv6 Type 2 code 0(Packet Too Big)を送信します。

Page 12: IPv4 IPv6 - A10ネットワークス ロードバランサ ... · ipv4(端末)←→ipv4(isp/アクセス回線)←→ipv6(宛先) 通信手法:nat 概要:この手法は、ipv4/ipv6いずれのクライアントからも、ipv4/ipv6のいずれのサーバに

IPv4IPv6IPv6

IPv4IPv6IPv6NAT64 セッションログの保存

 安定運用の観点から、またセキュリティの観点からも、アクセスログの収集は必須の機能です。AXシリーズでは、NAT64 のセッションログを外部サーバに出力可能です。出力先として複数の外部サーバを設定した場合は、ソースIPのハッシュを使用し、出力する外部サーバを決定します。よって、特定のソースIPのセッションログを、毎回同じ外部サーバに出力させることもできます。

 ログ関連の設定方法は、1ページ目に示したサンプル設定ファイルのグリーンの部分となります。.Ip nat templateのオプションを変更することで、出力されるログの内容を変更させることもできます。

■ 設定例

■ 出力されるセッションログ例

当面続く「 移行期 」への備えを

 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だけのネットワークを考える時代は終わりを迎えました。ネットワーク構成やお使いの機器によって選択できるソリューションは異なると思いますが、まずは可能な部分から、移行策の検討を始められてはいかがでしょうか。

IPv4IPv6IPv6

 そのため、MSSの値を確認し、必要に応じてサーバ側にリクエストを送信する際のMSSを変更します。この処理を「MMS Clamping」と呼んでいます。TCPのハンドシェイクによって決められるので、UDP通信では利用はできません。

 AXシリーズでは、下記のオプションにより動作を変更できます。

HTTP ならばリンク先のリライトは原則不要に

 SLB-PTでは、aFleXなどの機能を利用して、コンテンツ中のリンク先のホスト名の書き換えなどを行いました。例えば、コンテンツ中のリンク先として、「IPv4.example.com」(IPv4アドレスのサーバ)といったホスト名が書かれていた場合、動的にipv6.example.com(IPv6アドレスのサーバ)といったホスト名に書き換えることで、IPv6のサーバへリダイレクトさせることができます。たとえ、オリジナルのコンテンツでリンク先がIPv4サーバになっていたとしても、これで大丈夫です。

 NAT64/DNS64の場合には、このような書き換えは不要となります。たとえIPv4サーバのホスト名がリンク先として指定されていても、DNS64の機能によって自動的にIPv6との違いを吸収する形で名前解決を行い、目的のIPv4サーバに対してNAT64の機能を使ってアクセスできるからです。

 このように、Webサーバへのアクセスに関しては問題ないのですが、他のアプリケーションについては注意が必要です。アプリケーションの中には、ペイロードにアドレス情報を組み込んでいるものや、コントロール用とデータ用で異なるポートを使用するものなども存在します。そういったアプリケーションに関しては、ALG( Application Layer Gateway)という特殊な機能が必要となります。ALGはアプリケーションごとの特性も見て変換を行う機能です。

 なお、AXシリーズの場合は、現時点では以下のプロトコルに対してALG機能を提供しています。これはあくまで一例で、ALG機能の有無は、お使いのNAT64サポートデバイスにより異なります。

. ALGは、FTPやSIPのような標準的なプロトコルへのゲートウェイ機能を提供しますが、独自アプリケーションなどはALGでのカバーは不可能です。サーバアプリケーションに手を入れて、IPv4に依存しないコードへ変更するといった工数が必要になる場合もあります。

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 に使用します。

nat64 alg ftp enable (FTP)nat64 alg rtsp enable (RTSP)nat64 sip rtsp enable (SIP)nat64 alg tftp enable (TFTP)

NAT64でIPv6端末をIPv4サーバにつなげよう NAT64でIPv6端末をIPv4サーバにつなげよう

21 22

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:35100Jul 9 08:19:49 ax6 NAT-TCP-C: [2001:240:6d4:40::44]:35100 -> 10.111.0.102:35100Jul 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:35100Jul 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に関して

C : NAT Mapping CreatedF : NAT Mapping FreedN : Data Session CreatedD : Data session Deleted