キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
1685
閲覧回数
0
いいね!
4
返信

ルータのSNAT(static)の動きについて

uday68270312
Level 1
Level 1

NATが正しく動作しているか把握できないので、教えていただけたら幸いです。

構成としては下記の通りで、PC#1からL3SW#1内に設定したLoopback 1に向けてpingを打ちます。

ただし、ルータにてソースIPをNATします。現用系は想定通りに動作しますが、ルータ#1-L3SW#1間を抜線したときのNATが把握できません。

■NW構成

PC#1-[GE0/1]ルータ#1[GE0/0] ― [GE0/0]L3SW#1
       [GE0/3]         [GE0/3]
          |             |
       [GE0/3]         [GE0/3]
         ルータ#2[GE0/0] ― [GE0/0]L3SW#2

・ルータ#1,2およびL3SW#1,2間はiBGP、ルータ-L3SW間はeBGPで接続。

・各インターフェースのアドレスは仮に以下とします。

 -PC#1:100.100.100.1/24

 -ルータ#1
  =loopback0:200.200.200.21/30
  =GE0/1:100.100.100.100/24 (ip nat inside)
  =GE0/0:200.200.200.13/30 (ip nat outside)
  =GE0/3:200.200.200.9/30 (ip nat outside)

 -ルータ#2
  =loopback0:200.200.200.22/30
  =GE0/0:200.200.200.17/30 (ip nat outside)
  =GE0/3:200.200.200.10/30 (ip nat outside)

 -L3SW#1
  =loopback0:200.200.200.25/30
  =loopback1:300.300.300.1/32
  =GE0/0:200.200.200.14/30
  =GE0/3:200.200.200.29/30

 -L3SW#2
  =loopback0:200.200.200.26/30
  =GE0/0:200.200.200.18/30
  =GE0/3:200.200.200.30/30

 -NAT(source static):100.100.100.1 = 10.10.10.1

・スタティックNATの設定(上記)はルータ#1,2の両方に投入している。

・BGPの広告セグメントは下記の通り

  ルータ側はLoopback0アドレスのセグメントおよびNATセグメント(10.10.10.0/24)
  L3SW側はLoopback0アドレスのセグメントおよびLoopback1アドレス

・ルーティングは下記の通り(L3SWは無し)

 -ルータ#1
  =ip route 0.0.0.0 0.0.0.0 100.100.100.1
  =ip route 10.10.10.0 255.255.255.0 Gigabitethernet0/1

 -ルータ#2
  =ip route 100.100.100.0 255.255.255.0 200.200.200.9 ←★ルータ#1のGE0/3アドレス

■疑問
ルータ#1とL3SW#1間のケーブルを抜線したとき、PC#1からLoopback 1へは

PC#1⇒ルータ#1⇒ルータ#2⇒L3SW#2⇒L3SW#1⇒L3SW#1のLoopback 1

の経路で通信しますが、その際に

show ip nat translations

のコマンドをルータ#1,2で確かめると、ルータ#1,2の両方でNATがかかっているように見受けられます。

また、ルータ#2の★部分のルーティングを削除するとpingが到達しなくなります。

tracerouteは2ホップ目(100.100.100.100(ルータ#1のPC#1側アドレス))以降、3 * * *と続きます。

このとき、ルータ#1ではソースNATされずにルータ#2へパケットが飛ばされるのでしょうか?

仮にそうであるとしてもルータ#2で経由するインターフェースはoutside⇒outsideなのでNATされるとは思えないのですが。。。

1 件の受理された解決策

受理された解決策

t.higashimura
Level 1
Level 1

uday68270312さん

これはデザインの問題のような気がします。現在の設定では、

のコマンドをルータ#1,2で確かめると、ルータ#1,2の両方でNATがかかっているように見受けられます。

これは現在の設定上で期待される動作ですね。ルータ#1では行きのsource変換が行われ、ルータ#2では戻りのdestination変換が行われていると想定します。Static NAT 変換では常時NATエントリがあるため、行きのNATエントリが無くとも、戻りのNAT変換をしてしまうと思います。outside->outsideでも。

たぶん合ってると思いますが、正確なところが知りたい場合は Cisco TAC へ問い合わせてみてください。
outsideからのパケットの処理は inside からとは異なるため実装かと思います。

参考:http://www.cisco.com/cisco/web/support/JP/100/1008/1008335_5-j.html

で、行きと戻りとも同じルータで NAT 変換させたいというデザインであれば、ルータ#1<->ルータ#2間のインタフェースを ip nat inside に変えればいいのではないかと思います。そうすれば、上記障害想定時においてもルータ#1では NAT 変換されず、ルータ#2のみで行きと戻りの両方がNAT変換されるかと思います。

ちなみに誤字だと思いますが、L3SW#1 の loopback1:300.300.300.1/32 は設定できませんよ。。。

元の投稿で解決策を見る

4件の返信4

t.higashimura
Level 1
Level 1

uday68270312さん

これはデザインの問題のような気がします。現在の設定では、

のコマンドをルータ#1,2で確かめると、ルータ#1,2の両方でNATがかかっているように見受けられます。

これは現在の設定上で期待される動作ですね。ルータ#1では行きのsource変換が行われ、ルータ#2では戻りのdestination変換が行われていると想定します。Static NAT 変換では常時NATエントリがあるため、行きのNATエントリが無くとも、戻りのNAT変換をしてしまうと思います。outside->outsideでも。

たぶん合ってると思いますが、正確なところが知りたい場合は Cisco TAC へ問い合わせてみてください。
outsideからのパケットの処理は inside からとは異なるため実装かと思います。

参考:http://www.cisco.com/cisco/web/support/JP/100/1008/1008335_5-j.html

で、行きと戻りとも同じルータで NAT 変換させたいというデザインであれば、ルータ#1<->ルータ#2間のインタフェースを ip nat inside に変えればいいのではないかと思います。そうすれば、上記障害想定時においてもルータ#1では NAT 変換されず、ルータ#2のみで行きと戻りの両方がNAT変換されるかと思います。

ちなみに誤字だと思いますが、L3SW#1 の loopback1:300.300.300.1/32 は設定できませんよ。。。

t.higashimuraさん

早速のご返信ありがとうございます。

これは現在の設定上で期待される動作ですね。

実際の動作となります。

ルータ#1では行きのsource変換が行われ、ルータ#2では戻りのdestination変換が行われていると想定します。Static NAT 変換では常時NATエントリがあるため、行きのNATエントリが無くとも、戻りのNAT変換をしてしまうと思います。 outside->outsideでも。

大変勉強になります。

つまりStatic NATの場合、インターフェースにNATの設定がされていれば、たとえパケットが入る口と出る口がinside⇒insideでもoutside⇒outsideでも関係なく、入った口の設定に従ってNAT変換されるということなんですね。

で、行きと戻りとも同じルータで NAT 変換させたいというデザインであれば、ルータ#1<->ルータ#2間のインタフェースを ip nat inside に変えればいいのではないかと思います。そうすれば、上記障害想定時においてもルータ#1では NAT 変換されず、ルータ#2のみで行きと戻りの両方がNAT変換されるかと思います。

おっしゃる通りでした。ルータ#1<->ルータ#2間のインターフェースをip nat insideに変更して確認したところルータ#2のみでNAT変換されているように見えました。

★もし仮に同障害時、ルータ#1のみで行きも戻りもNATさせ、ルータ#2はただの土管役にすることは可能なのでしょうか。

私が理解した限りだと無理のような気がしますが、可能でしたらどのインターフェースにどういう設定をすればよいか教えていただきたいです。

ちなみに誤字だと思いますが、L3SW#1 の loopback1:300.300.300.1/32 は設定できませんよ。。。

完全に誤字ですね。。。申し訳ありません。

uday68270312さん

つまりStatic NATの場合、インターフェースにNATの設定がされていれば、たとえパケットが入る口と出る口がinside⇒insideでもoutside⇒outsideでも関係なく、入った口の設定に従ってNAT変換されるということなんですね。

若干補足すると、設定変更後に、R1 で inside->inside の時はNAT変換されないですよね。なので、inside と outside での処理は前回提示したページにある通り、処理順序が異なるため実装が異なるのでしょうね。outside->outside で変換されるのは、実装上の動作な気もしますが、念のため Cisco TAC へ確認してみてください。

★もし仮に同障害時、ルータ#1のみで行きも戻りもNATさせ、ルータ#2はただの土管役にすることは可能なのでしょうか。

ご認識の通り、それは難しいかと思います。

t.higashimuraさん

若干補足すると、設定変更後に、R1 で inside->inside の時はNAT変換されないですよね。なので、inside と outside での処理は前回提示したページにある通り、処理順序が異なるため実装が異なるのでしょうね。outside->outside で変換されるのは、実装上の動作な気もしますが、念のため Cisco TAC へ確認してみてください。

おっしゃる通り、inside->insideではNAT変換されませんでした。

in->outとout->inで実装上の動作が異なる可能性が高いということで了解しました。

社内でTACへ確認できそうでしたら確認してみます。ありがとうございました。

土管役はやはり無理がありますか。。。改めて設計を見直してみます。