これは、内部NWと外部NWでお互いにIPアドレスを見せたくない場合に使う事が多い。
今回はCiscoルータで実施した場合、どのようにConfigを作るのかという点に注目したい。
まずは簡単な図にしてみる。
図のようにinsideからoutsideに通信するときも、outsideからinsideへ通信するときも、
両方共送信元アドレスと宛先アドレスが変換されるようにしたい。
ネットで調べれば色々と出て来るが、忘れないように自分なりにまとめてみた。
Configのサンプル
それでは、実際にConfigの設定をしていくに当たり、下記のようなパラメータで進めていく。
inside natもoutside natもNAT変換後は宛先と同一セグメントになるようにしていく。
ファイアウォールのようにdestination natなどが設定できれば楽なのだが、
ルータではsource natの設定しか基本は使えない。
その為、insideもoutsideも両方source natにて静的(一対一)NATの設定をし、
NATの戻り通信(逆通信)をうまく利用することがポイントになる。
通常の静的NATであれば、[元アドレス]→[NATアドレス]というように変換される。
戻り通信はこの逆になるので、[NATアドレス]→[元アドレス]に戻る変換処理がなされる。
実際に図のような通信が出来るよう、Configを作成してみる。
まずは、インターフェースの設定をする。
insideとoutsideが逆にならないよう、忘れずに設定する。
int fa0
ip address 10.0.0.254 255.255.255.0
ip nat inside
no shutdown
exit
int fa1
ip address 172.16.1.254 255.255.255.0
ip nat outside
no shutdown
exit
次に静的NATを双方向で設定する。
ip nat inside source static 10.0.0.1 172.16.1.1
ip nat outside source static 172.16.1.10 10.0.0.10
最後にoutside localのIPアドレスをoutside側へ向けてあげる必要がある為、
スタティックルートを追加する。
今回はインターフェースに紐付けているが、もちろんNextHopアドレスでも問題ない。
ip route 10.0.0.10 255.255.255.255 fa1
最後のスタティックルートはNAT処理順序の関係から設定をしないと通信ができなくなる。
構築時に抜けることが多い為、忘れずに設定するようにしなければならない。
まとめるとこんな感じ。
conf t
int fa0
ip address 10.0.0.254 255.255.255.0
ip nat inside
no shutdown
exit
int fa1
ip address 172.16.1.254 255.255.255.0
ip nat outside
no shutdown
exit
ip nat inside source static 10.0.0.1 172.16.1.1
ip nat outside source static 172.16.1.10 10.0.0.10
ip route 10.0.0.10 255.255.255.255 fa1
exit
NATテーブルを確認してみるとこんな感じ。
Router# show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 10.0.0.10 172.16.1.10
--- 172.16.1.1 10.0.0.1 --- ---
このように、insideとoutsideにそれぞれ静的NATが設定されたので、
実際にPINGなどを打ってみると下記のように表示される。
Router# show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 10.0.0.10 172.16.1.10
--- 172.16.1.1 10.0.0.1 --- ---
icmp 172.16.1.1:1 10.0.0.1:1 10.0.0.10:1 172.16.1.10:1
一行のNATエントリーの中にinsideもoutsideも両方エントリーされているのが分かる。
これで、双方向でNATされているという確認ができるのである。
個人的な意見だが、show ip nat translationsの表示順序が気に入らない・・・。
なぜ、一番左にInside globalがあるのか。
なぜ、Inside global、Inside localときて、次がOutside localなのか。
この表示のせいで意外と混乱したりする・・・。
どのような意図があるのかは計り知れないが、
Inside globalとInside local逆にした方が絶対見やすいと思う。
add-routeを使ったサンプル
もう一つ、add-routeを使用したConfigを記載しておく。
これはスタティックルートを設定する代わりに、
outside source natの設定でadd-routeオプションを使うやり方である。
conf t
int fa0
ip address 10.0.0.254 255.255.255.0
ip nat inside
no shutdown
exit
int fa1
ip address 172.16.1.254 255.255.255.0
ip nat outside
no shutdown
exit
ip nat inside source static 10.0.0.1 172.16.1.1
ip nat outside source static 172.16.1.10 10.0.0.10 add-routeip route 10.0.0.10 255.255.255.255 fa1
exit
add-routeにて必要なルーティングがインストールされるので、
個別にスタティックルートを設定しなくても良くなるのが利点である。
しかし、構成によっては想定したルーティングがうまくインストールされない場合がある。
add-routeを使う場合は、ちゃんと想定したルーティングがインストールされているかを
show ip routeにて確認することが必須となってくる。
うまく行かない場合は、さっさとadd-routeは諦めて、
通常通りスタティックルートを入れた方が良い。

徹底攻略Cisco CCNP Routing & Switching ROUTE教科書[300-101J]対応