【NATの概要につい て】


このHPはNATの概要についてまとめたものです。


1-1 NATとNAPT(IPマスカレード/PAT/オーバーロード変換)

NATとは、ローカルネットワークのプライベートIPアドレスを、インター ネットへ接続する時にはグローバルIPアドレスに変換(プライベートアドレス同士、グローバルアドレス同士のアドレス変換も可)する技術。

NATによるアドレス変換を行う場合は、どのアドレスをどのアドレスに変換 したかを記録しておく必要がある。
記録がないと、送信先のホストから返ってきたパケットが、どのホスト宛のパケットかわからなくなってしまう。このアドレス変換を記録しておくテーブルをNATテーブルという。








またTCPやUDPのポート番号も付け替え、1つのグローバルIPアドレスで複数のホスト間の通信を可 能にする技術をNAPT(IPマスカレード/PAT/オーバーロード変換)という。

【※参考】

TCPやUDPではIPアドレを含めて チェックサムを計算するため、TCPやUDPのヘッダの変更も必要になる。






CiscoではNATを使用する際、特殊な用語が多くある。以下にその用語の意味を記す。






1-2 インサイドとアウトサイド

●インサイド(内部)ネットワークとアウトサイド(外部)ネットワーク

NATでは、ネットワークの内部と外部、アドレスのローカルとグローバルを明確に区別する。例えば、NAT経由でLANをインターネットに接続しているとすれば、LAN側が内部、インターネット側が外部のネットワークになる。

●アドレスのローカルとグローバ ル

ローカルアドレスとは直接外部との接続がないネ ットワークで使用されるアドレス。プライベートアドレスを 使用。
グローバルアドレスとは、ISPから正規に割り当てを受けて いるアドレスになる。


★【インサイド(内部)ローカル アドレス】

インサイド(内部)ローカルアドレスとは、イ ンサイド(内部)ネットワークに割り当てられたIPアドレス。 通常LAN内のプライベートアドレ ス。

★【インサイド(内部)グローバ ルアドレス】

内部ネットワークから外部ネットワークにアクセスする ときに内部ローカルアドレスを変換する ために使用されるグローバルアドレス。アウトサイド側で 使用できるアドレス。このIPアドレスはISPから割り 当てられるグローバルアドレス。

★【アウトサイド(外部)グロー バルアドレス】

アウトサイド(外部)グローバルアドレスとは、 外部ネットワークに割り当てられたアドレス。インターネッ ト上のホストアドレスがこれに当たる。インサイドからアウト サイドへのパケット送信時には送信先のアドレ スになる。

★【アウトサイド(外部)ローカ ルアドレス】

アウトサイド(外部)ローカルアドレスとは、内部ネット ワークから外部ネットワークにアクセスするときに 外部ホストのグローバルアドレスに対応付けられるアドレ ス。
例えばイ ンサイド側とアウトサイド側でアドレスが重複している場 合など。
通常はアドレスの重複がないためアウトサイドグローバルアドレスとアウトサイドローカルアドレスは、同じアドレスが使用される。


※NATやPATの基本はイ ンサイドローカルアドレスとインサイド グローバルアドレスの変換









1-3 インサイド(内部)とアウトサイド(外部)の設定

インサイド(内部)とアウトサイド(外部)の指定は、NATや NAPTに必要な設定になる。

インサイド(内部)の設定は変換させるインターフェイスで【ip nat inside】コマンドを入力する。これにより、 そのインターフェイスがインサイド(内部)のネットワークに属していることを設定する。


アウトサイド(外部)の設定は、インターフェイスで【ip nat outside】コマンドを入力する。これにより、 そのインターフェイスがアウトサイド(外部)のネットワークに属していることを設定する。

【インサイド(内部)の指定コマンド】
(config-if)#ip nat inside

【アウトサイド(外部)の指定コマンド】
(config-if)#ip nat outside









1-4 スタティックNATとダイナミックNATの設定

NATには、
●アドレスの対応をあらかじめ設定しておく「スタティックNAT」
●登録しておいたグローバルIPアドレスの範囲から自動的にローカルIPアドレスに割り当てる「ダイナミックNAT」
がある。
PATはダイナミックNATの一種。


■スタティックNAT設定

スタティックNATの設定はインサイド(内部)ローカルアドレスとインサイド(内部)グローバルアドレスの「1対1」の変換で固定的に変換する場合に使用する。
スタティックNAT変換の設定は次のコマンド・手順が必要になる。


●【設定手順】

@スタティックNATの設定
プライベートIPアドレスとグローバルIPアドレスの対応を定義する。グローバルコンフィグレーションモードで次のコマンドを実行する。


【スタティックNATの設定】
(config)ip nat inside source static 【インサイドローカルIPアドレス】【インサイドグローバルIPアドレス】

Aインターフェイスの設定

インターフェイスがインサイド(内部)ネットワーク側にあるか、アウトサイド(外部)ネットワーク側にあるかを設定。

★インターフェイスをインサイド(内部)ネットワークとして設定
(config-if)#ip nat inside

★インターフェイスをアウトサイド(外部)ネットワークとして設定
(config-if)#ip nat outside






■ダイナミックNATの設定

ダイナミックNATを変換する場合は、変換するグローバルIPアドレスの範囲(アドレスプール)の設定と、 アドレス変換の対象を指定するアクセスリストの定義が必要。

●【設定手順】

@グローバルIPアドレスの範囲を設定

グローバルIPアドレスの範囲をグローバルIPアドレスプールに設定する。 設定は、グローバルコンフィグレーションモードで【ip nat pool】コマンド を入力し、引数に【IPアドレスプール名】続けて、【プールの開始IPアドレス】【プールの終了IPアドレス】を指定する。
【netmask】の後にプールしたアドレスのサブネットマスクを指定する。
【netmask】は【prefix-length<ビット数>】と指定することもできる。


【グローバルIPアドレスプールの設定】
(config)# ip nat pool【IPアドレスプール名】【プールの開始IPアドレス】【プールの終了IPアドレス】netmask 【サブネットマスク】またはprefix-length 【プレフィクス長】

A標準IPアクセスリストの定義

アドレス変換が必要なパケットを標準IPアクセスリストとして定義する。

(config)# ip nat pool【IPアドレスプール名】【プールの開始IPアドレス】【プールの終了IPアドレス】netmask 【サブネットマスク】またはprefix-length 【プレフィクス長】

【標準IPアクセスリストの定義】
(config)# access-list【アクセスリスト番号】permit 【送信元IPアドレス】 【ワイルドカードマスク】

Bアクセスリストをアドレスプールに指定する

アクセスリストをダイナミックNAT変換する対象のプールに指定する。グローバルコンフィグレーションモードで【ip nat inside source list】コマンドを入力する。

引数に【アクセスリスト番号】を指定し、【pool】に続けて【IPアドレスプール名】を指定する。

【アクセスリストをダイナミックNAT変換する対象のプールに指定】
(config)# ip nat inside source list 【アクセスリスト番号】pool【IPアドレスプール名】

Cインターフェイスの設定

インターフェイスがインサイド(内部)ネットワークにあるか、アウトサイド(外部)ネットワーク側にあるかを設定。。

★インターフェイスをインサイド(内部)ネットワークとして設定
(config-if)#ip nat inside
★インターフェイスをアウトサイド(外部)ネットワークとして設定
(config-if)#ip nat outside









1-5 オーバーロード変換(PAT)の設定

PATはダイナミックNATにポート番号を付加して多重化を行っている。これにより複数のローカルIPアドレスを1つのグローバルIPアドレスにマップすることが可能になり、アドレスを効率よく利用できる様になる。
従って、設定の基本はダイナミックNATと同様に「NAT変換許可の設定」、「アドレスプールの設定」を行う。 ダイナミックNATと異なる点は必ず「overload」を指定することと、 アドレス変換用にプールしたアドレスが1個(開始と終点アドレスが同じ)であること。
設定手順は以下のとおり


●【設定手順】

@NAT変換許可の設定

NATを許可するアドレス「10.1.1.0」をアクセスリスト番号「5」で作成する。

Aアドレスプールの設定

アドレスプール名「pat-table」に「1.1.1.1/24」のアドレスを指定する

Boverloadの指定

NATの変換設定の最後に「overload」を指定し、PATの設定を行う。

Cインターフェイスの設定

インターフェイスがインサイド(内部)ネットワークにあるか、アウトサイド(外部)ネットワーク側にあるかを設定。

★インターフェイスをインサイド(内部)ネットワークとして設定
(config-if)#ip nat inside
★インターフェイスをアウトサイド(外部)ネットワークとして設定
(config-if)#ip nat outside


【PAT(オーバーロード変換)の設定】
(config)# ip nat inside source list 【アクセスリスト番号】pool【IPアドレスプール名】overload










1-6 NATテーブルの表示

NATテーブルを表示させるには、特権モードで【show ip nat translations】コマンドを入力する。

【NATテーブルの表示】
#show ip nat translations

●スタティックNATの表示

インサイドグローバルアドレスとインサイドローカルアドレスを固定して表示。





●ダイナミックNATの表示

インサイドグローバルとインサイドローカルアドレスの変換が行われたときに表示される。





●PAT(オーバーロード)の表示

インサイドグローバルアドレスとインサイドローカルアドレスの変換がポート番号付きで表示される。またアウトサイドローカルアドレスとアウトサイドグローバルアドレスには同じアドレス情報が表示される。




●NATの統計情報の表示

NAT変換を実行したアドレスについての統計情報を表示することができる。
【NAT統計情報を表示】
♯ show ip nat statistics






1-7 NATテーブルの削除

NATテーブルの削除はclear ip nat translationsで、削除する情報の種類には次の3つを指定できる。

【全てのエントリを削除】
♯clear ip nat translations *

【特定のダイナミックNAT変換を削除】
♯clear ip nat translations inside 【グローバルIPアドレス】【ローカルIPアドレス】

【特定のオーバーロード変換を削除】
♯clear ip nat translations 【プロトコル名】inside 【グローバルIPアドレス】【ローカルIPアドレス】【ローカルポート番号】




1-8 NATのデバッグコマンド

NATによるアドレス変換の状況を確認するには特権モードで【debug ip nat】コマンドを入力する。

【NATのデバッグコマンド】
♯debug ip nat