CiscoのNAT用語 簡易NAT変換エントリと完全拡張NATエントリ

Cisco Systems - NAT

Cisco SystemsのNATコマンドは歴史的に徐々に機能が追加されてきた経緯もあってか、やや複雑な構文だったりステータス表示だったりします。

基本的には下位互換の仕様になっているのですが、どうしても他の機能との実装上の都合により挙動が変わってしまうこともありました。比較的使用頻度の少ないNATの機能と、先進的な機能の実装とどちらを取るのかという問題だったりするので仕方ないとも言えますが、比較て古いそれもサポート期間の関係で仕方なくバージョンアップする場合などは注意が必要です。

そんな古くからある機能と比較的新し目の機能とが同居しているNATの用語について少し解説してみます。

show ip nat translationsコマンドはNATの変換テーブルを確認するために必須のコマンドですが、見方が少々ややこしいと感じることも少なくありません。

例えばスタティックNATを設定していると以下のようなエントリができあがります。

R1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 10.2.2.30          10.1.1.10          ---                ---

実際に通信は行われていないのに、スタティックNATを設定しただけでエントリが作成されています。この場合は、Inside globalとInside localのみでOutside側は何も表示されていません。
このエントリを簡易NAT変換エントリ(Simple NAT translation entry)と言います。簡易変換エントリと書かれている場合も多いです。
実際に通信が始まるとNAT機能が動作して新たなエントリが作成されます。

R1#show ip nat translations  
Pro Inside global      Inside local       Outside local      Outside global
icmp 10.2.2.30:1       10.1.1.10:1        10.2.2.20:1        10.2.2.20:1
--- 10.2.2.30          10.1.1.10          ---                ---

この場合はICMPによって簡易NAT変換エントリからInside側とOutside側の両方に情報のある完全拡張NAT変換エントリ(Fully extended NAT translation entry)が作成されています。完全拡張変換エントリと記載されている場合も多いようです。
このBlogでも用語がバラバラになってしまっていますので、気が向いたら修正するかもしれません。

それにしても簡易NAT変換エントリとか完全拡張NAT変換エントリとか名前が長すぎます。Cisco Systems社はマーケティング戦略なのか特別新しい事でもないのに機能の組合せなどに名前を付けることが多いように感じますね。この〇〇NAT変換エントリというのも比較的新しいのではないでしょうか。ちょっと調べた限りではわかりませんでしたが、数年前まではこのような表現はしていなかったように感じます。

それはそれとして、スタティックNATでは簡易NAT変換エントリができますが、ダイナミックNATではできません。

R1#show ip nat translations

実際の通信が行われると完全拡張NAT変換エントリが作成されます。

R1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 10.1.1.100:23      10.1.1.10:23       10.2.2.20:18991    10.2.2.20:18991

ダイナミックNATでは事前にNATエントリに載せられるような情報が決定していないためエントリができないので当然と言えば当然です。

ただし、ここで少し疑問が生じます。

IPデータグラムをNATする時には既にNATエントリがある場合、そのエントリに従って変換するはずです。そうしないと同様のエントリが都度できてしまい機能的に破綻してしまうからです。つまり、完全拡張NAT変換エントリがあればそのエントリの内容に従うという事ですね。

では完全拡張NAT変換エントリが無い場合にはどのように処理するのでしょうか?

考えられるのは簡易NAT変換エントリ(スタティックNAT設定)から完全拡張NATエントリを作成する方法、またはダイナミックNAT設定に従って完全拡張NATエントリを作成するのかのどちらかでしょう。

実は既にNAT変換テーブルに存在する簡易NAT変換エントリに従ってしまいます。そのため、スタティックNATとダイナミックNATを組み合わせて使う場合には注意しないと意図しないNATが行われる場合があります。仕様上避けられないので、簡易NAT変換エントリは使わないようにするのが安全ですね。

この辺りの問題についてはそのうち検証して記事にしたいと思います。

コメント

タイトルとURLをコピーしました