6.11.2011

IPv6 NATの設定

図のような構成があります。
IPv6RIPのとこはもう出来上がってるとします。


R4のIPv6 addressからR1のIPv4 addressに対してPingしたいとします。
で、ipv6 static routeは禁止です。
使っていいアドレスとして、172.16.123.10 と3555::35:3が与えられています。
R4のIPv6アドレスからR1のIPv4アドレスにPingできるようにしたいと。

まず問題の意味がよくわかりません。
ムカついてしまうくらい不親切です。
でも、設定するしかありません。

じゃあどうすればR4からR1にpingできるかとゆっくり考えてみます。
R4のipv6 interfaceからプロトコルの違うipv4 interfaceにpingして、
レスポンスをもらわなければなりません。

ここで登場するのがipv4-ipv6のNAT変換です。
ipv6アドレスからipv4アドレスに直接Pingを打つのは無理ですので、
どこかでipv6アドレスから、ipv4アドレスに変換してあげる必要があるわけですね。

トポロジをみてみると、ちょうどトランジットポイントにR3があります。
というわけで、こいつにipv6 natを設定していきます。

まず、与えられているアドレスである172.16.123.10と3555::35:3/96。
じーっと考えてみると、こいつらが実は結構なヒントであることがわかります。
こいつらはアドレスとして自由に使っていい訳ですから、
都合良くnat変換後のアドレスとして使ってやる訳ですね。

つまり、ipv6へのアクセス時はsourceアドレスを3555:35:3にします。
で、ipv4へのアクセス時はsourceアドレスを172.16.123.10にします。
こいつらを相互で変換してやれば、v4からv6への通信が成立するはずです。

まず、NAT用のprefixを登録してやる必要があります。
v6 natで使用するprefixを定義してやるわけですね。
ipv6 nat prefix 3555::/96

次にR3にNATの設定を入れていきます。
v4をv6に変換します。
ipv6 nat v4v6 source 172.16.123.1 3555::35:3
V4のsourceをV6に変換するので、ipv6 nat v4v6ですね。

これだけだと、R1からR4までは行けますが、R4から戻ってこれません。
もう一つipv6 natを設定します。
ipv6 nat v6v4 source 3555:35:5 172.16.123.10
V6のsourceをV4に変換ですね。

これでNATテーブルはどうなっているでしょうか。

R3#sh ipv6 nat tra          
Prot  IPv4 source              IPv6 source
      IPv4 destination         IPv6 destination
---   ---                      ---
      172.16.123.1             3555::35:3

---   172.16.123.10            3500::35:5
      ---                      ---

いい感じに変換されてます。

さて、R3とR4の間は地味にRIPngなので、
R4にはnat用のprefix 3555::/96を通知してやる必要がありますね。
何で通知してやるのがいいでしょう。
routing tableでもみてみましょう。

R3#sh ipv6 route
IPv6 Routing Table - 5 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
C   3500::/96 [0/0]
     via ::, FastEthernet0/0
L   3500::35:3/128 [0/0]
     via ::, FastEthernet0/0
C   3555::/96 [0/0]
     via ::, Null0
L   FE80::/10 [0/0]
     via ::, Null0
L   FF00::/8 [0/0]
     via ::, Null0

該当するウンコマンはconnectedで乗っかってますね。
じゃあ適当にconnectedでもredistしてやります。
redistしてからタバコにでも火をつけて、
R4の経路情報を確認します。

R4#sh ipv6 rou rip
IPv6 Routing Table - 5 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
R   3555::/96 [120/2]
     via FE80::C003:16FF:FE9D:0, FastEthernet0/0

ほー、もらってきてますなー。
いいですね。
ナイスゲットです。

では、R3に戻って、natをinterfaceに適用しておきましょう。
s0/0とf0/0の両方にipv6 natを適用します。

と、ココまで来たら成功するはずですから、
さっさとR4からpingを打ってみます。
verify!


R4#ping 3555::35:3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3555::35:3, timeout is 2 seconds:
.....

飛ばないんですよ。
何故なら。
R1が172.16.123.10に対してFRのmappingを書いてないんですね。
というわけで、いそいそとS0/0に対してstaticのマッピングを設定します。

そーすると...


R4#ping 3555::35:3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3555::35:3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/22/40 ms

飛びますね。
いいですね。
じゃあせっかくだし、R3でdebugでもしながらpingしてみます。

R3#debug ipv6 nat 
IPv6 NAT-PT debugging is on

それではR4からPingしてみます。

R3#
*Mar  1 03:10:57.747: IPv6 NAT: icmp src (3500::35:5) -> (172.16.123.10), dst (3555::35:3) -> (172.16.123.1)
*Mar  1 03:10:57.783: IPv6 NAT: icmp src (172.16.123.1) -> (3555::35:3), dst (172.16.123.10) -> (3500::35:5)

実際は5発分同じメッセージが出てきてだいぶうざいですが、
いいですね。いい感じに変換されています。
さらにせっかくかくかくなので、R1からも打っときますか。

R3#
*Mar  1 03:12:55.919: IPv6 NAT: icmp src (172.16.123.1) -> (3555::35:3), dst (172.16.123.10) -> (3500::35:5)
*Mar  1 03:12:55.971: IPv6 NAT: icmp src (3500::35:5) -> (172.16.123.10), dst (3555::35:3) -> (172.16.123.1)

今度はちゃんと逆方向で変換されてますねー。
完成です!


0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...