プライベートIPアドレスをグローバルIPアドレスに変換するNAT/PATは,グローバルIPアドレスの不足を補う技術として一般的に利用されています。今回は,CiscoルータでのNAT/PATの設定と,その確認方法を理解しましょう。

NATの設定

 前回(IPアドレス編の第6回)で解説したように,NATには静的NAT,動的NAT,そしてPATの3種類があります。まず,この3種類で共通する設定として,「ローカルとグローバル」の設定があります。つまり,ルータのどのインタフェースが「ローカル」側であり,どのインタフェースが「グローバル」側であるかという指定を行います(図1)。

  • (config)# interface [タイプ] [ポート]
  • (config-if)# ip nat [inside | outside]
    • [inside | outside]
      • インタフェースのローカル/グローバル設定

図1●ip nat inside/outside
図1●ip nat inside/outside

 ip natコマンドをインタフェース設定モードで行うことにより,ルータがローカル側とグローバル側を識別します。insideを設定したインタフェースのネットワークがローカル,outsideを設定したインタフェースのネットワークがグローバルになります。NAT/PATではローカルからグローバルへ出て行くパケットとその応答パケットがアドレス変換の対象になります。

 まず,静的NATの設定です。静的NATでは1つの内部ローカルIPアドレスと,それに対応した内部グローバルIPアドレスを設定することになります。これは先ほどと同じip natコマンドをグローバルコンフィギュレーションモードで行うことにより,設定します(図2・図3)。

  • (config)# ip nat inside source static [内部ローカルアドレス] [内部グローバルIPアドレス]

図2●設定ネットワーク例
図2●設定ネットワーク例

図2●設定ネットワーク例
図2●設定ネットワーク例

 次は動的NATの設定です。動的NATは指定した範囲の内部ローカルアドレスを,アドレスプール(複数の内部グローバルアドレス)内のアドレスに変換します。そのため,アドレスプールと,変換される内部ローカルアドレスを設定する必要があります。まず,アドレスプールの設定は次のようになります。

  • (config)# ip nat pool [プール名] [最初のアドレス] [最後のアドレス] netmask [サブネットマスク]
    • [プール名]
      • アドレスプール名。任意
    • [最初/最後のアドレス]
      • 内部グローバルの範囲の最初と最後のアドレス
    • [サブネットマスク]
      • 変換後のアドレスのサブネットマスク

 さらに,変換される内部ローカルアドレスの範囲は,アクセスリストで設定します。アドレスプールと,アクセスリストを設定後,動的NATの設定を行います。動的NATの設定はip nat inside source list poolで行います(図4・図5)。

  • (config)# ip nat inside source list [ACL番号] pool [プール名]

図4●設定ネットワーク例
図4●設定ネットワーク例

図5●ip nat inside source list pool
図5●ip nat inside source list pool

PATの設定

 PATの設定は,動的NATの設定と基本的には同じです。まず,アドレスプールと変換される内部ローカルアドレスをACLで設定します。その後,ip nat inside source list poolコマンドを使用しますが,最後にoverloadというキーワードを入れる必要があります(図6・図7)。

  • (config)# ip nat inside source list [ACL番号] pool [プール名] overload

図6●設定ネットワーク例
図6●設定ネットワーク例

図7●ip nat inside source list pool overload
図7●ip nat inside source list pool overload

 つまり,NAT/PATの設定コマンドであるip natコマンドは,次のような構造になっていることがわかります。

  • (config)# ip nat inside source [内部ローカルアドレス] [内部グローバルアドレス] {overload}
  • [内部ローカルアドレス]
    • 静的NAT ・・・ static IPアドレス
    • 動的NAT/PAT ・・・ list ACL番号
  • [内部グローバルアドレス]
    • 静的NAT ・・・ IPアドレス
    • 動的NAT/PAT ・・・ アドレスプール名
  • {overload}
    • PATのみ使用

 NAT/PAT設定手順としては,次の通りになります(静的NATの場合,3と4は省略)。

  1. ローカルネットワークのインタフェースにip nat inside
  2. グローバルネットワークのインタフェースにip nat outside
  3. ip nat poolコマンドでアドレスプール設定
  4. 内部ローカルアドレスをACLで範囲設定
  5. ip nat inside sourceコマンドで設定

NATの確認

 NATの確認には,show ip natコマンドを使用します。show ip natコマンドには2種類あります。

  • # show ip nat [translations | statistics]
    • [translations]
      • NATテーブルの確認
    • [statistics]
      • 統計情報の確認

 show ip natの表示結果は,静的NATの場合と,それ以外の場合では多少異なります。静的NATの場合,NATテーブルがコマンドにより作成されるので,次の図のようになります(図8)。

図8●show ip nat(静的NAT)
図8●show ip nat(静的NAT)

 動的NATの場合,NATテーブルは実際にパケットをルータが受け取って,アドレスを変換するまで表示されません(図9)。

図9●show ip nat(動的NAT)
図9●show ip nat(動的NAT)

 PATは動的NATと基本的に同じですが,ポート番号の表示が行われます(図10)。

図10●show ip nat(PAT)
図10●show ip nat(PAT)

 アドレスの変換はdebugコマンドでリアルタイムに確認することができます。

  • # debug ip nat ・・・ NAT/PATによるアドレス変換の表示

 また,動的NAT/PATで現在変換中のアドレステーブルを消去するには次のコマンドを使用します。

  • # clear ip nat translation [アドレス]
    • [アドレス]
      • 消去するNATテーブルのアドレス。「*」ですべて消去

(改定履歴)
・「WANプロトコル編」にあった内容を「IPアドレス編」に移動しました。(2008/7/24)

■変更履歴
NAT/PATのアドレステーブルを消去するコマンドを「ip nat translation」としていましたが、正しくは「clear ip nat translation」です。お詫びして訂正します。本文は修正済みです。[2010/05/12 19:30]