IPv6 移行ソリューション丸分かり - A10ネットワークス

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