ソースNAT static NATとdynamic NAT

ソースNATには以下の種類があります。

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

1番と4番がstatic NAT、2番と3番がdynamic NATに該当します。

この記事では1番と2番について解説します。3番、4番は次以降の記事で解説します。

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

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

ciscoルータでは以下コマンドを使います。

(config)# ip nat inside source static 192.168.1.1 200.1.1.1

Static NATの場合は行きの通信、帰りの通信関係なく、どちらが先であってもNAT変換されます。つまり、insideのインタフェースに入ってくる送信元192.168.1.1のIPパケットを、送信元200.1.1.1に変換しますし、outsideのインタフェースに入ってきてinsideから出ていく宛先200.1.1.1を192.168.1.1に変換します。なので実質、inside destination NATと同義になります。

Dynamic NATの場合はそうではなく、必ずinsideからoutsideに抜ける必要があります。このあたりを比較するには以下コマンドでNATテーブルを見ると分かり易いです。

# show ip nat translations
ProInside globalInside localOutside localOutside global
200.1.1.1192.168.1.1

static NATの場合は設定した時点でNATテーブルに1エントリ生成されます。これは雛形としてのNATエントリであり、実際の通信はこのテーブルには表示されません。通信の起点がinsideであろうがoutsideであろうが、inside側で200.1.1.1と192.168.1.1の変換が行われます。

変換が行われないOutsideには—が入ります。そしてポート番号は表示されません。

2. 内部ローカルアドレスを内部グローバルアドレスに多対多で変換する

ciscoルータでは以下コマンドを使います。

(config)# access-list 1 192.168.1.0 0.0.0.255
(config)# ip nat pool NATPOOL 200.1.1.31 200.1.1.70 netmask 255.255.255.0
(config)# ip nat inside source list 1 pool NATPOOL

なお、NATPOOLのnetmask(もしくはprefix-length)はチェック機能としてあるだけで、設定上は意味がありません。

設定を入れた直後に以下コマンドを打つと

# show ip nat translations

何も表示されません。dynamic NATの場合は、実際に通信が発生してからエントリができます。そのため、outsideから発信される通信はNAT変換されません。

192.168.1.101の端末が送出したパケットが、insideからoutsideに抜けるときに、送信元IPが192.168.1.101から192.0.2.31に変換され、それと同時にエントリが生成されます。戻りのパケットはそのエントリを元に宛先IPが192.0.2.31から192.168.1.101に変換されます。

# show ip nat translations
ProInside globalInside localOutside localOutside global
tcp200.1.1.31:5001192.168.1.11:500011.1.1.1:801.1.1.1:80

dynamic NATの場合のNATテーブルは雛形ではなく実際の通信がテーブルに入るため、通信が増えればNATテーブルの行数が増えていきます。

また、雛形ではないため、実際には変換されないOutside local/globalやポート番号まで全て表示されます。

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

シェアする

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

フォローする

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