ソースNAT outside source

スポンサーリンク
スポンサーリンク

4. 外部ローカルアドレスと外部グローバルアドレスを1対1で相互変換する

ciscoルータでは外部ローカルアドレスと外部グローバルアドレスを1対1で相互変換する場合は以下コマンドを使います。

(config)# ip nat outside source static 1.1.1.1 172.16.1.1 add-route

これもstatic NATに該当するため、前々回の記事で記載した通り、行きの通信、帰りの通信関係なく、どちらが先であってもNAT変換されます。つまり、outsideのインタフェースに入ってくる送信元1.1.1.1のIPパケットを、送信元172.16.1.1に変換しますし、insideからoutsideのインタフェースへ抜けていく宛先172.16.1.1のIPパケットを、宛先1.1.1.1に変換します。

上図にある通り、CiscoではNAT poolのアドレスへのARPに対し、Proxy ARPで応答するのがデフォルト設定になっています。

また、add-routeについては後述しますが、ip nat outside sourceコマンドを利用する場合はセットで覚えて下さい。

双方向NAT

ip nat inside source static と ip nat outside source static の2つのコマンドを同時に使うことによって、お互いが相手のIPアドレスを知ることなく、同セグメント内通信として通信ができるようになります。

具体的な例を下図に示します。

スポンサーリンク

下記で説明しますが、inside から outside に抜けるときはルーティングしてからNAT変換がなされます。それゆえ、このケースでは192.168.10.101がそのままルーティングされてしまいますが、そのままだとConnectedのルートなのでARPをGi 0/0に送出し、応答無しでパケット破棄されてしまいます。そうならないために、以下ルーティングを追加します。

(config)# ip route 192.168.10.101 255.255.255.255 gi 0/1

NextHopにインタフェースを指定します。インタフェース指定でEthernetを指定した場合、192.168.10.101がgi 0/1にConnectedであると仮定してgi 0/1からARP要求を出す、という動作になります。

このケースでの具体的なシーケンスは以下のようになります。

  1. ルーティングにより出力先がgi 0/1と決まる
  2. 宛先IPが192.168.10.101から10.1.1.2へNAT変換がされる
  3. 10.1.1.2のARP要求を出す
  4. ARP応答を受信し、L2通信を行う

NATとルーティングの処理の順番

NATはinsideからoutsideに抜ける必要はありますが、outsideから来る場合はoutsideのインタフェースに着信した時点でNATが発動します。これはNATとルーティングの処理の順番に関わる制約からくるものです。

insideからoutsideに抜ける通信は、ルーティングされてからNAT処理が行われますが、outsideからくる通信はNAT処理後にルーティングされます

先にルーティングされるのであればoutsideに抜けるのを確認してNATを掛けられますが、ルーティングが後の場合は、outsideからinsideに抜けるかどうかはルーティング次第になってしまいます

NATが発展したモチベーションはもともと、グローバルアドレス不足問題への解決であり、主眼は内部ローカルを内部グローバルに変換することなので、insideからoutsideの部分の整合性を優先したのかもしれません。

なので、前述の通り、以下ルーティングが必要となります。

(config)# ip route 192.168.10.101 255.255.255.255 gi 0/1

もしくは以下コマンドでも対応できます。

(config)# ip nat outside source static 10.1.1.2 192.168.10.101 add-route

これにより、自動的に帰りのルートが追加されます。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク