【NW】IPv6 - NATPTとは 
またまたIPv6ネタです。しかも今回は概要を理解しないとかなり混乱するというか分かりづらいです。今回も検証にはGR2000を使っています。




ここに来てGR大活躍ですよ最近。実験には最適なルーターですね。NAT処理もHWでやってくれれば家庭内で実用最強ルーターなんですが(まだ言う

GRを使うので、一番確実なのは本家日立のGR2000の「解説書 Vol.1」と「構成定義ガイド CLI編 -CLIタイプ1階層入力形式」を読むことですが、それだけだとちょっと分かりづらかったので砕いて説明してみようと思います。

GR2000Bモデルを持っていて、なおかつRoute-OS8.4(8.3もコマンド類は同じようですが手元にないので未確認)を持ってる人の参考にでもなればと思います←対象者がコアすぎる
まあそのレベルの人はおそらくこんな説明不要だと思いますがw

ところで、上の「解説書 Vol.1」はオライリーではないですが、概要説明を何となく読んでいるだけでもかなり勉強になるのでおすすめです。結構真剣に。
…あまり宣伝してしまうと日立から怒られそうなのでこの辺にしておきます

そもそもNATPTとは




Network Address Translation - Protocol Translationの略で、相互に互換性のないv4とv6を互換させ、現在のIPv4体系を変更せずにIPv6を導入できるというメリットを持っています。v4-v6トンネルとは違い外から見るとネイティブv6環境に見えるのが特徴です。これから需要増えるのではないですかね?
GRの場合、IPv6の/64と言う広大なサブネットの中から/96分のアドレスを使用してv4-v6対応をさせます。
IPv6 1111:1111:1111:1111 :2222:2222:FFFF:FFFF/64

1111=グローバルアドレスPrefix
2222=/64でアドレスをもらった場合に自分で自由に使えるグローバルアドレス
FFFF=その中からNATPT用に割り当てるアドレス

IPv6では理論上65535^4個もグローバルアドレスがもらえるよ!やったね!全マシンを同一サブネットで繋いだらスイッチが血を吐くよ!
個人的には/96でもいいのでは…とか思ってしまいますが。それでもIPv4が使える全てのIP数と同じですからね…

NATPTではv6でv4のアドレスにアクセスするために 192 168 1 1をそれぞれ16進法に変換します。
192=c0
168=a8
1=01
1=01
となるので、1234:0:0:0 :0:0:0:0/96のアドレスからNATPTで変換すると
1234::c0a8:101
となります。(最後は0101が正しいのですが先頭の0は省略されるというv6の特徴でこうなります。)
ちなみに、Windows7(WinVistaも?)からはping 1234::192.168.1.1とやると

C:\Users\owner>ping 1234::192.168.1.1
1234::c0a8:101 に ping を送信しています 32 バイトのデータ:


と、自動で変換してくれます。UNIX系でもPing6なら同じように使えます。


GR2000でのNATPTの動き




まずはネットワーク図です。前回の使い回しですが。




前回との違いはGR2のNIF2/1がIPv6ではなくてIPv4であることです。v6アドレスを割り当ててもいいんですが必要ないので省きます。

先に特徴を書いておくと、v6ネットワークからv4ネットワークへは一対一でIPを使えるがv4ネットワークからv6ネットワークへは1対1NATを1つ or 1対N NAPTになる、と言うことです
まあ、これはGR2kでの動きになるので、他のベンダ(CISCOとか)でどう動くかは分かりません。

そして、NATPT-prefixと言うのが上で説明したNATPTの時に使うアドレスで、v6アドレスネットワークからv4アドレスネットワークにアクセスするときには2345::xxxx:xxxxと言うアドレスになります。1234:1:1:2:1:1::/96とかに設定してしまうとGR1のサブネットと被るので「どこにあるのか分からない」という状態になってしまい、ルーティング不可になります
なので、v6ネットワーク上でユニークな(被らない)サブネットを持つ必要があります。この場合なら1234:1:1:4::でもよかったのですがわかりやすくするためにあえて大きく変えてあります



まずGR1の設定

GR-Red(config)# sho
#Last modified by operator at Mar 5 02:29:03 2011 with version 08-04-/D
!
router name "GR-Red"
router remote_access 0.0.0.0/0
router remote_access 1234:1:1:1::/64
router telnet enable
!
line f0 ethernet 2/0
ip 1234:1:1:1::1/64
!
line f1 ethernet 2/1
ip 1234:1:1:2::1/64
!
static
2345::/96 gateway 1234:1:1:2::2


本当はこの下にDHCP6とかの設定がだらだら続くのですが今回は不要なので省略します
特徴としてはNATPT PrefixをGR2へ向けることくらいですね。

GR2の設定

!GR-Green(config)# sho
#Last modified by operator at Mar 8 23:37:34 2011 with version 08-04-/D
!
router name "GR-Green"
router remote_access 0.0.0.0/0
router ftp enable
!
line f0 ethernet 2/0
ip 1234:1:1:2::2/64
!
line f1 ethernet 2/1
ip 192.168.1.1/24
!
natpt
①natpt natptprefix 2345::
②natpt rule napt any auto
③natpt rule static_napt 1234:1:1:1::15 auto port 80 80 protocol tcp
④natpt rule static_napt 1234:1:1:1::15 auto port 22 22
⑤natpt rule static_napt 1234:1:1:1::15 auto port 22 25
⑥natpt interface f1
⑦natpt interface f0
!
static
1234:1:1:1::/64 gateway 1234:1:1:2::1
!


①などの文字はこちら側で説明のため入れました。

まず①のルールでGR2側でNAT-PTを使用する際に2345::/96プレフィックスを使うように設定します。
次に、②でNATPTで変換するプロトコルの対象を全てにし、その際のルールはNAPTによって動的に作られるようにします。
③- ⑤のルールはIPv4側のためのルールで、この場合はルーターのIPが192.168.1.1なので192.168.1.1:80にアクセスした際に IPv6の赤いサブネットにある1234:1:1:1::15:80にNAPTさせる、と言うルールです。ここが最初は意味が分からなくて中々うまくいきませんでした。

1234:1:1:1::15ではdefaultGWを1234:1:1:1::1にしてあります。

autoというのは自動的にインターフェースのアドレスを使用するという意味(=natpt rule static_napt 1234:1:1:1::15 192.168.1.1 port 80 80 protocol tcp)ですが、ここで
natpt rule static_napt 1234:1:1:1::15 192.168.1.128 port 80 80 protocol tcp
とインターフェース以外のIPを設定してもそのIPあてにアクセスは出来ませんでした。

⑤はテスト的に作ったルールで、192.168.1.1::25にSSHすると1234:1:1:1::15:22にNAPTされますよ、と言うルールですがうまく動きました。

解説書 Vol.1に書いてありますが、v4->v6にアクセスした際にはアクセスログに残るIPはprefixである2345::IPv4アドレスとなります。

つまり、自分が192.168.1.2で192.168.1.1へSSHを飛ばすと1234:1:1:1::15に2345::c0a8:102からアクセスが来ます。

逆に、1234:1:1:1::/64から2345::c0a8:102へSSHを飛ばすとルーターにNATされて192.168.1.1(ソースポートは NAPTされる)からのアクセスが来ます。つまりHTTPだとアクセスログが全て192.168.1.1で埋まります。まあ、HTTPに関してはよっぽどのことをしていない限りv6対応にそこまで苦労しないのでv6移行しろとも思いますが。

そして⑥と⑦でどのインタフェースをNAT対象にするか指定します。ここに指定したインターフェース以外はNATされません。

文字ばかりになってしまいましたが、これで今のところ期待した動きをしてくれています。
最大の問題はNATPTはRM(CPUでSW)処理になると言うことです。知っての通りGR君はNATで10Mbps程度しか出せないという問題を持っているので、あくまでも試験的な目的以外では使えないと思います。これがHW処理だったら本当に最強v6ルーターなんですが。

もっとも、このルーターそのもの相当前のものですし、解説書なんて2005年発行ですからね。その当時からこれらの機能が使えたというのは大いに評価されるべきだと思います。さすがKAMEはAlaxalaの中の人たちが作っただけはあります。

IPv6が注目されている今、GR2kはもう一度NAT周りを強化して出すべきルーターだと思います。

BSD系だとNATPT-Dが使えるみたいなのでこの辺もいつか試してみたいですね。
現在はFTP、HTTP等の主要アプリケーションが試した限りではわずかな設定でv6に対応できるので本当に必要かどうかと言われると結構微妙だったりしますが…。


コメントを書く
必要事項とコメントを入力して下さい。









タグの挿入