- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
2015-04-19
02:33 AM
- 最終編集日:
2023-12-20
04:28 PM
、編集者:
JapanTAC_CSC
- 1. サポートするNATルールタイプと処理順序
- 2. NAT構成例と、NATルールタイプ別の設定例
- 2.1. NAT構成例
- 2.2. Twice NATのみ利用時
- 2.3. Network Object NATのみ利用時
- 2.4. Twice NATと Network Object NATを利用時
- 2.5. 全セクションを利用時
- 3. Network Object NAT(Auto NAT)の自動整列ルール
- 4. Twice NAT(Manual NAT)の設定例
- 4.1. Twice NAT(Manual NAT)の柔軟なNATルールの定義
- 4.2. Twice NAT(Manual NAT)の宛先別のアドレス変換
- 4.3. Twice NAT(Manual NAT)の 新規NATルールの挿入方法
- 5. show nat detailのカウンタについて
- 6. まとめ
- 7. ベストプラクティス
- 7.1 TwiceNAT利用時は、極力 送信元と宛先を両方設定しレンジを絞る
- 7.2. TwiceNAT利用時は、より狭いレンジのルールを上部に設定すること
- 8. 参考情報: 有用なサイト
本ドキュメントでは、ASAバージョン 8.3以降の、NATルールタイプ別の処理の違いと 設定例について紹介します。
1. サポートするNATルールタイプと処理順序
ASAは以下2種類のNATルールタイプをサポートします。アドレス変換を実現する上で、これらNATルールタイプの任意1つを利用、もしくは組み合わせ利用する事ができます。
NATルールタイプ | 特徴 |
Twice NAT (別名:Manual NAT) |
- 上から順番にNATルールチェック その為、手動(Manual)でNAT設定順序の管理・調整が必要 - アドレスやサービスは、オブジェクトで指定 - 一行で 送信元と宛先の 計2つの変換(Twice)が定義可能 - 複雑だが、柔軟な定義が可能 |
Network Object NAT (別名:Auto NAT) |
- 自動整列(Auto)されたNATルールを、上から順番にチェック - アドレスやサービスは、実IP・ポートで指定可能 - 送信元の変換のみ定義可能 - 任意 Network Object内に、NATコマンドを1つ定義可能 - シンプルで、管理が容易 |
ASAは新規パケットを処理時、以下の順序で 各NATルールタイプのチェックを行います。NATルールがマッチすると、そのNATルールが該当パケットに適用され、以降のNATルールとNATポリシーのチェックは行いません。 Twice NATは、after-autoキーワードを付与する事で、処理順序を Network Object NATの後に変更できます。
多くの場合、Twice NAT、もしくは Network Object NATの、どちらを用いても、想定のアドレス変換を実現できます。
2. NAT構成例と、NATルールタイプ別の設定例
ASAは、NAT構成に合わせ、柔軟なNAT設定が可能です。本項では、NAT構成例と、そのアドレス変換を実現するためのNATルールタイプ別の設定例、及び、show nat detailの出力結果を紹介します。
2.1. NAT 構成例
2.2. Twice NATのみ利用時
2.3. Network Object NATのみ利用時
2.4. Twice NATと Network Object NATを利用時
2.5. 全セクションを利用時
2.1. NAT構成例
番号 | NATタイプ | 変換内容 |
1 | Static NAT | Internetから1.0.0.1:80宛通信を、HTTP Server(192.168.1.1:80)宛に Static NAT |
2 | Static NAT | Internetから1.0.0.1:443宛通信を、SSL Server(192.168.1.2:443)宛に Static NAT |
3 | Dynamic PAT | DMZ-01サーバ群(192.168.1.0/24)からInternet宛通信を、Interface PAT |
4 | Dynamic PAT | 全DMZサーバ(192.168.0.0/16)からInternet宛通信を、Interface PAT |
2.2. Twice NATのみ利用時
以下は、"2.1. NAT構成例"を、以下方針で設定した場合の、設定とshow nat detail出力例です。事前のオブジェクト定義が必要ですが、NAT設定行がコンパクトに纏まるのが特徴です。IOSルータや ASA8.2未満の NAT設定に慣れている方には、理解しやすい設定かと思います。
設定方針:
番号 | NATタイプ | テーブルセクション | NATルールタイプ |
1 | Static NAT | 1 | Twice NAT (Manual NAT) |
2 | Static NAT | 1 | Twice NAT (Manual NAT) |
3 | Dynamic PAT | 1 | Twice NAT (Manual NAT) |
4 | Dynamic PAT | 1 | Twice NAT (Manual NAT) |
設定:
object network ip-192.168.1.1 host 192.168.1.1 ! object network ip-192.168.1.2 host 192.168.1.2 ! object network ip-1.0.0.1 host 1.0.0.1 ! object network net-192.168.1.0 subnet 192.168.1.0 255.255.255.0 ! object network net-192.168.0.0 subnet 192.168.0.0 255.255.0.0 ! object service src-http service tcp source eq 80 ! object service src-https service tcp source eq 443 ! nat (dmz,outside) source static ip-192.168.1.1 ip-1.0.0.1 service src-http src-http nat (dmz,outside) source static ip-192.168.1.2 ip-1.0.0.1 service src-https src-https nat (dmz,outside) source dynamic net-192.168.1.0 interface nat (dmz,outside) source dynamic net-192.168.0.0 interface
設定確認:
ASA# show nat detail Manual NAT Policies (Section 1) 1 (dmz) to (outside) source static ip-192.168.1.1 ip-1.0.0.1 service src-http src-http translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.1/32, Translated: 1.0.0.1/32 Service - Origin: tcp source eq www , Translated: tcp source eq www 2 (dmz) to (outside) source static ip-192.168.1.2 ip-1.0.0.1 service src-https src-https translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.2/32, Translated: 1.0.0.1/32 Service - Origin: tcp source eq https , Translated: tcp source eq https 3 (dmz) to (outside) source dynamic net-192.168.1.0 interface translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24 4 (dmz) to (outside) source dynamic net-192.168.0.0 interface translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.0.0/16, Translated: 1.0.0.7/24
2.3. Network Object NATのみ利用時
以下は、"2.1. NAT構成例"を、以下方針で設定した場合の、設定とshow nat detail出力例です。アドレスやサービスの事前オブジェクト定義が不要であり、設定量が少なくなります。また、NAT処理順序はASAが自動整列しますので、簡便です。
設定方針:
番号 | NATタイプ | テーブルセクション | NATルールタイプ |
1 | Static NAT | 2 | Network Object NAT (Auto NAT) |
2 | Static NAT | 2 | Network Object NAT (Auto NAT) |
3 | Dynamic PAT | 2 | Network Object NAT (Auto NAT) |
4 | Dynamic PAT | 2 | Network Object NAT (Auto NAT) |
設定:
object network ip-192.168.1.1 host 192.168.1.1 nat (dmz,outside) static 1.0.0.1 service tcp http http ! object network ip-192.168.1.2 host 192.168.1.2 nat (dmz,outside) static 1.0.0.1 service tcp https https ! object network net-192.168.1.0 subnet 192.168.1.0 255.255.255.0 nat (dmz,outside) dynamic interface ! object network net-192.168.0.0 subnet 192.168.0.0 255.255.0.0 nat (dmz,outside) dynamic interface
設定確認:
ASA(config)# show nat detail Auto NAT Policies (Section 2) 1 (dmz) to (outside) source static ip-192.168.1.1 1.0.0.1 service tcp www www translate_hits = 0, untranslate_hits = 1 Source - Origin: 192.168.1.1/32, Translated: 1.0.0.1/32 Service - Protocol: tcp Real: www Mapped: www 2 (dmz) to (outside) source static ip-192.168.1.2 1.0.0.1 service tcp https https translate_hits = 0, untranslate_hits = 1 Source - Origin: 192.168.1.2/32, Translated: 1.0.0.1/32 Service - Protocol: tcp Real: https Mapped: https 3 (dmz) to (outside) source dynamic net-192.168.1.0 interface translate_hits = 1, untranslate_hits = 0 Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24 4 (dmz) to (outside) source dynamic net-192.168.0.0 interface translate_hits = 1, untranslate_hits = 0 Source - Origin: 192.168.0.0/16, Translated: 1.0.0.7/24
2.4. Twice NATと Network Object NATを利用時
以下は、"2.1. NAT構成例"を、以下方針で設定した場合の、設定とshow nat detail出力例です。処理順序は、Twice NAT(Section 1)のNATルールを上から順に処理後、Network Object NAT(Section 2)の自動整列されたNATルールを上から順に処理します。
Twice NATは最優先で処理される為、優先しアドレス変換処理したいNATルール(例:特定ホストのStatic変換や、 NAT Exemption[VPNの対向拠点宛通信のアドレス変換除外]など)の定義に向きます。
設定方針:
番号 | NATタイプ | テーブルセクション | NATルールタイプ |
1 | Static NAT | 1 | Twice NAT (Manual NAT) |
2 | Static NAT | 1 | Twice NAT (Manual NAT) |
3 | Dynamic PAT | 2 | Network Object NAT (Auto NAT) |
4 | Dynamic PAT | 2 | Network Object NAT (Auto NAT) |
設定:
object network ip-192.168.1.1 host 192.168.1.1 ! object network ip-192.168.1.2 host 192.168.1.2 ! object network ip-1.0.0.1 host 1.0.0.1 ! object service src-http service tcp source eq 80 ! object service src-https service tcp source eq 443 ! nat (dmz,outside) source static ip-192.168.1.1 ip-1.0.0.1 service src-http src-http nat (dmz,outside) source static ip-192.168.1.2 ip-1.0.0.1 service src-https src-https ! object network net-192.168.1.0 subnet 192.168.1.0 255.255.255.0 nat (dmz,outside) dynamic interface ! object network net-192.168.0.0 subnet 192.168.0.0 255.255.0.0 nat (dmz,outside) dynamic interface !
設定確認:
ASA# show nat detail Manual NAT Policies (Section 1) 1 (dmz) to (outside) source static ip-192.168.1.1 ip-1.0.0.1 service src-http src-http translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.1/32, Translated: 1.0.0.1/32 Service - Origin: tcp source eq www , Translated: tcp source eq www 2 (dmz) to (outside) source static ip-192.168.1.2 ip-1.0.0.1 service src-https src-https translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.2/32, Translated: 1.0.0.1/32 Service - Origin: tcp source eq https , Translated: tcp source eq https Auto NAT Policies (Section 2) 1 (dmz) to (outside) source dynamic net-192.168.1.0 interface translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24 2 (dmz) to (outside) source dynamic net-192.168.0.0 interface translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.0.0/16, Translated: 1.0.0.7/24
2.5. 全セクションを利用時
以下は、"2.1. NAT構成例"を、以下方針で設定した場合の、設定とshow nat detail出力例です。処理順序は、Twice NAT(Section 1)のNATルールを上から順に処理後、Network Object NAT(Section 2)の自動整列されたNATルールを上から順に処理し、その後 after-autoキーワード付きのTwice NAT(Section 3)のNATルールを上から順に処理します。
After-autoキーワード付きのTwice NATは 最後に処理されるNATポリシーとなる為、最も範囲の広いネットワークセグメントのアドレス変換の定義などに向きます。
設定方針:
番号 | NATタイプ | テーブルセクション | NATルールタイプ |
1 | Static NAT | 1 | Twice NAT (Manual NAT) |
2 | Static NAT | 2 | Network Object NAT (Auto NAT) |
3 | Dynamic PAT | 2 | Network Object NAT (Auto NAT) |
4 | Dynamic PAT | 3 | Twice NAT (Manual NAT) with after-auto |
設定:
object network ip-192.168.1.1
host 192.168.1.1
!
object network ip-1.0.0.1
host 1.0.0.1
!
object service src-http
service tcp source eq 80
!
object network net-192.168.0.0
subnet 192.168.0.0 255.255.0.0
!
nat (dmz,outside) source static ip-192.168.1.1 ip-1.0.0.1 service src-http src-http
!
object network ip-192.168.1.2
host 192.168.1.2
nat (dmz,outside) static 1.0.0.1 service tcp https https
!
object network net-192.168.1.0
subnet 192.168.1.0 255.255.255.0
nat (dmz,outside) dynamic interface
!
nat (dmz,outside) after-auto source dynamic net-192.168.0.0 interface
設定確認:
ASA(config)# show nat detail Manual NAT Policies (Section 1) 1 (dmz) to (outside) source static ip-192.168.1.1 ip-1.0.0.1 service src-http src-http translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.1/32, Translated: 1.0.0.1/32 Service - Origin: tcp source eq www , Translated: tcp source eq www Auto NAT Policies (Section 2) 1 (dmz) to (outside) source static ip-192.168.1.2 1.0.0.1 service tcp https https translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.2/32, Translated: 1.0.0.1/32 Service - Protocol: tcp Real: https Mapped: https 2 (dmz) to (outside) source dynamic net-192.168.1.0 interface translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24 Manual NAT Policies (Section 3) 1 (dmz) to (outside) source dynamic net-192.168.0.0 interface translate_hits = 10, untranslate_hits = 0 Source - Origin: 192.168.0.0/16, Translated: 1.0.0.7/24
3. Network Object NAT(Auto NAT)の自動整列ルール
Network Object NATは、NATルールの処理順序を自動的(Auto)に最適な形に並び替えますので、簡便、かつ トラブル減を期待できます。Network Object NATは、以下ルールに基づき、NAT設定を自動整列してから、処理テーブルにNATルールを挿入します。
1番目 | Static NAT - より狭いレンジを優先 - レンジが同じの場合、より小さなIPアドレスを優先 (第1オクテットから評価) - アドレスが同じの場合、アルファベット順 |
2番目 | Dynamic NAT - より狭いレンジを優先 - レンジが同じの場合、より小さなIPアドレスを優先 (第1オクテットから評価) - IPアドレスが同じの場合、アルファベット順 |
例えば、以下のIPアドレスの、Network Object NATを定義時は・・・
192.168.1.0/24 (Static NAT)
192.168.1.0/24 (Dynamic NAT)
10.1.1.0/24 (Static NAT)
192.168.1.1/32 (Static NAT)
以下順序に自動整列され、NATテーブルに格納されます。
192.168.1.1/32 (Static NAT)
10.1.1.0/24 (Static NAT)
192.168.1.0/24 (Static NAT)
192.168.1.0/24 (Dynamic NAT)
以下は、実際の設定例と、show nat detailでの確認例です。
設定:
object network net-192.168.1.0 subnet 192.168.1.0 255.255.255.0 nat (dmz,outside) static 1.1.1.0 object network net-192.168.1.0-dyn subnet 192.168.1.0 255.255.255.0 nat (dmz,outside) dynamic interface object network net-10.1.1.0 subnet 10.1.1.0 255.255.255.0 nat (inside,dmz) static 192.168.3.0 object network ip-192.168.1.1 host 192.168.1.1 nat (dmz,outside) static 1.1.2.1
設定確認:
ASA# show nat detail Auto NAT Policies (Section 2) 1 (dmz) to (outside) source static ip-192.168.1.1 1.1.2.1 translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.1/32, Translated: 1.1.2.1/32 2 (inside) to (dmz) source static net-10.1.1.0 192.168.3.0 translate_hits = 2, untranslate_hits = 0 Source - Origin: 10.1.1.0/24, Translated: 192.168.3.0/24 3 (dmz) to (outside) source static net-192.168.1.0 1.1.1.0 translate_hits = 3, untranslate_hits = 0 Source - Origin: 192.168.1.0/24, Translated: 1.1.1.0/24 4 (dmz) to (outside) source dynamic net-192.168.1.0-dyn interface translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24
上記設定の場合、例えば、dmzの192.168.1.0/24から、outside宛の通信は、上から順にNATルールを確認し、No.3の192.168.1.0/24 (Static NAT)にマッチします。NATルールがマッチすれば、その NATルールが適用され、それ以降のNATルールはチェックされません。結果、No.4の192.168.1.0/24 (Dynamic NAT)は、実行されないNATルールとなってしまいます。
以下は、dmzの特定サーバ(192.168.1.4:1234)から、outsideのWEBサーバ(1.0.0.101:80)への疑似通信を、packet-tracerユーティリティを用いて実行した場合の出力結果です。(packet-tracerユーティリティ使用方法詳細はコチラを参照ください。)
ASA# packet-tracer input dmz tcp 192.168.1.4 1234 1.0.0.101 80
Phase: 1
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
found next-hop 1.0.0.101 using egress ifc outside
--- snip ---
Phase: 4
Type: NAT
Subtype:
Result: ALLOW
Config:
object network net-192.168.1.0
nat (dmz,outside) static 1.1.1.0
Additional Information:
Static translate 192.168.1.4/1234 to 1.1.1.4/1234
4. Twice NAT(Manual NAT)の設定例
Twice NATは、定義されたNATルールを上から順にチェックしますので、想定したアドレス変換を実現し続けるには、NATルールの設定順序を 常に正しく維持する必要があります。その為、Network Object NATに比べ、NATルールの管理が難しくなります。
しかし、Twice NATは より柔軟なNATルールの定義が可能です。また、NATの処理順序を完全にコントロールしたい時も、Twice NATの利用が向いています。
以下に、Twice NATでのみ可能な設定例と、新規NATルールの挿入方法について紹介します。
4.1. Twice NAT(Manual NAT)の 柔軟なNATルールの定義
4.2. Twice NAT(Manual NAT)の 宛先別のアドレス変換
4.3. Twice NAT(Manual NAT)の 新規NATルールの挿入方法
4.1. Twice NAT(Manual NAT)の 柔軟なNATルールの定義
Twice NATは、送信元と宛先の 両方のアドレス変換を 1行で定義できます。そのため、送信元→宛先のNATルールでも、宛先→送信元のNATルールでも、同じアドレス変換を実現できます。
例えば、以下の指定した送信元(1.0.0.101)から 宛先 1.0.0.1の HTTP80宛通信を、送信元を192.168.1.101に 宛先を192.168.1.1に変換するNAT構成の場合、2通りのNATルールの書き方が可能です。各NATルールとも、同じアドレス変換を実現します。
NAT構成:
nat (dmz,outside)でNATルール設定時:
nat (dmz,outside) source static ip-192.168.1.1 ip-1.0.0.1 destination static ip-192.168.1.101 ip-1.0.0.101 service src-http src-http ASA(config)# show nat detail Manual NAT Policies (Section 1) 1 (dmz) to (outside) source static ip-192.168.1.1 ip-1.0.0.1 destination static ip-192.168.1.101 ip-1.0.0.101 service src-http src-http translate_hits = 0, untranslate_hits = 0 Source - Origin: 192.168.1.1/32, Translated: 1.0.0.1/32 Destination - Origin: 192.168.1.101/32, Translated: 1.0.0.101/32 Service - Origin: tcp source eq www , Translated: tcp source eq www
nat (outside,dmz)でNATルール設定時:
nat (outside,dmz) source static ip-1.0.0.101 ip-192.168.1.101 destination static ip-1.0.0.1 ip-192.168.1.1 service dst-http dst-http ASA(config)# show nat detail Manual NAT Policies (Section 1) 1 (outside) to (dmz) source static ip-1.0.0.101 ip-192.168.1.101 destination static ip-1.0.0.1 ip-192.168.1.1 service dst-http dst-http translate_hits = 0, untranslate_hits = 0 Source - Origin: 1.0.0.101/32, Translated: 192.168.1.101/32 Destination - Origin: 1.0.0.1/32, Translated: 192.168.1.1/32 Service - Origin: tcp destination eq www , Translated: tcp destination eq www
4.2. Twice NAT(Manual NAT)の 宛先別のアドレス変換
Twice NATは、宛先に応じたアドレス変換を実現できます。
例えば、以下の 192.168.1.0/24から1.0.0.101宛は 送信元IP 1.0.0.2のDynamic PATを利用、それ以外の宛先の場合は Interface PATを利用するNAT構成の場合、以下の設定例で実現可能です。
当例では、No.2のNATルールの destination staticの指定に オブジェクト"any-0.0.0.0"を用いてる事に注目してください。宛先アドレスを厳密に指定する事で、より厳密なマッチングと 宛先インターフェイスの決定が可能となります。
NAT構成:
設定:
object network net-192.168.1.0 subnet 192.168.1.0 255.255.255.0 object network ip-1.0.0.2 host 1.0.0.2 object network ip-1.0.0.101 host 1.0.0.101 object network any-0.0.0.0 subnet 0.0.0.0 0.0.0.0 nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0
設定確認:
ASA(config)# show nat detail Manual NAT Policies (Section 1) 1 (dmz) to (outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 translate_hits = 1, untranslate_hits = 1 Source - Origin: 192.168.1.0/24, Translated (PAT): 1.0.0.2/32 Destination - Origin: 1.0.0.101/32, Translated: 1.0.0.101/32 2 (dmz) to (outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 translate_hits = 1, untranslate_hits = 1 Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24 Destination - Origin: 0.0.0.0/0, Translated: 0.0.0.0/0
Packet-tracerユーティリティを用いた動作確認:
1. 192.168.1.0/24内の任意Hostから、1.0.0.1のWEBポート宛通信の生成確認
ASA# packet-tracer input dmz tcp 192.168.1.1 1234 1.0.0.101 80 Phase: 1 Type: UN-NAT Subtype: static Result: ALLOW Config: nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 Additional Information: NAT divert to egress interface outside Untranslate 1.0.0.101/80 to 1.0.0.101/80 --- snip --- Phase: 4 Type: NAT Subtype: Result: ALLOW Config: nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 Additional Information: Dynamic translate 192.168.1.1/1234 to 1.0.0.2/1234 --- snip --- Result: input-interface: dmz input-status: up input-line-status: up output-interface: outside output-status: up output-line-status: up Action: allow
2. 192.168.1.0/24内の任意Hostから、1.0.0.1以外宛の通信の生成確認
ASA# packet-tracer input dmz tcp 192.168.1.1 1234 1.0.0.102 80 Phase: 1 Type: UN-NAT Subtype: static Result: ALLOW Config: nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 Additional Information: NAT divert to egress interface outside Untranslate 1.0.0.102/80 to 1.0.0.102/80 --- snip --- Phase: 4 Type: NAT Subtype: Result: ALLOW Config: nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 Additional Information: Dynamic translate 192.168.1.1/1234 to 1.0.0.7/1234 --- snip --- Result: input-interface: dmz input-status: up input-line-status: up output-interface: outside output-status: up output-line-status: up Action: allow
4.3. Twice NAT(Manual NAT)の 新規NATルールの挿入方法
既存のTwice NAT設定に、新しいNATルールを挿入する場合は、"show nat"で順番を確認してから、新しいNATルールの挿入位置を指定してください。
設定変更前:
ASA# show run nat nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 ASA# show nat Manual NAT Policies (Section 1) 1 (dmz) to (outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 translate_hits = 2, untranslate_hits = 2 2 (dmz) to (outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 translate_hits = 2, untranslate_hits = 2
追加設定例:
nat (dmz,outside) 2 source dynamic net-192.168.1.0 pat-pool ip-1.0.0.3 destination static ip-1.0.0.102 ip-1.0.0.102
設定追加後:
ASA# show run nat nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.3 destination static ip-1.0.0.102 ip-1.0.0.102 nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 ASA# ASA# sh nat Manual NAT Policies (Section 1) 1 (dmz) to (outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 translate_hits = 2, untranslate_hits = 2 2 (dmz) to (outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.3 destination static ip-1.0.0.102 ip-1.0.0.102 translate_hits = 0, untranslate_hits = 0 3 (dmz) to (outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 translate_hits = 2, untranslate_hits = 2
なお、挿入位置を指定しない場合は、一番最後にNATルールが追加されます。その為、設定追加後は、例えば 追加した新規NATルールにマッチを想定している 192.168.1.xx/24 から 1.0.0.102宛の通信が発生しましても、上から順番にNATルールはチェックされますので、No.2にマッチしてしまい、想定したアドレス変換の結果を得れません。
設定変更前:
ASA(config)# show run nat
nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101
nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0
設定追加例:
nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.3 destination static ip-1.0.0.102 ip-1.0.0.102
設定追加後:
ASA(config)# show run nat nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 nat (dmz,outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 nat (dmz,outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.3 destination static ip-1.0.0.102 ip-1.0.0.102 ASA(config)# show nat Manual NAT Policies (Section 1) 1 (dmz) to (outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.2 destination static ip-1.0.0.101 ip-1.0.0.101 translate_hits = 2, untranslate_hits = 2 2 (dmz) to (outside) source dynamic net-192.168.1.0 interface destination static any-0.0.0.0 any-0.0.0.0 translate_hits = 2, untranslate_hits = 23 (dmz) to (outside) source dynamic net-192.168.1.0 pat-pool ip-1.0.0.3 destination static ip-1.0.0.102 ip-1.0.0.102 translate_hits = 0, untranslate_hits = 0
5. show nat detailのカウンタについて
"show nat detail"コマンド内の、各NATルールの translate_hitsカウンタ、もしくは untranslate_hitsカウンタのカウントアップを確認する事で、各NATルールの使用状況を確認できます。これらカウンタは、そのNATルールを利用し新規コネクションが1つ生成される毎に1つカウントアップします。 Packet-Tracerユーティリティを用いたNATルールの動作確認時にも、マッチしたNATルールのカウンタがカウントアップします。
translateは、実アドレス(Real)から 定義したアドレス(Mapped address)への変換を示します。untranslateは、定義したアドレス(Mapped address)から実アドレス(Real)への変換を示します。
例えば、以下NATルール設定で、以下の新規コネクションが1つ発生時、送信元の実アドレス(192.168.1.1)が インターフェイスPATされますので、該当NATルールのtranslate_hitsカウンタが 1つカウントアップします。
[NATルール設定]
object network net-192.168.1.0
subnet 192.168.1.0 255.255.255.0
nat (dmz,out) dynamic interface
[show nat detail出力]
2 (dmz) to (outside) source dynamic net-192.168.1.0 interface
translate_hits = 1, untranslate_hits = 0
Source - Origin: 192.168.1.0/24, Translated: 1.0.0.7/24
例えば、以下NATルール設定で、以下の新規コネクションが1つ発生時、宛先アドレス(1.0.0.1: 443)が 実アドレス(192.168.1.2: 443)に変換されますので、該当NATルールのuntranslate_hitsカウンタが 1つカウントアップします。
[NATルール設定]
object net ip-192.168.1.2
host 192.168.1.2
nat (dmz,out) static 1.0.0.1 service tcp https https
[show nat detail出力]
Auto NAT Policies (Section 2)
1 (dmz) to (outside) source static ip-192.168.1.2 1.0.0.1 service tcp https https
translate_hits = 0, untranslate_hits = 1
Source - Origin: 192.168.1.2/32, Translated: 1.0.0.1/32
Service - Protocol: tcp Real: https Mapped: https
6. まとめ
シンプルなNAT構成の場合、どのNATルールタイプ(Twice NAT or Network Object NAT)を利用しても、想定のアドレス変換を実現できます。
複雑、かつ大規模なNAT構成になる程、各NATルールタイプの特徴と 処理順序を理解し 使い分ける事で、長期的なNATの管理性の向上と、トラブルシューティング効率の向上、及び トラブル減少につながります。
ご利用の構成と運用に合わせ、より最適な NATルールタイプの選択と設定を して頂ければと思います。
7. ベストプラクティス
7.1 TwiceNAT利用時は、極力 送信元と宛先を両方設定しレンジを絞る
Twice NATは本来、送信元と宛先変換を1行で同時に実行するためのNATルールタイプです。また、上から順にNATルールをチェックする First Match 方式のため、想定外のルールに途中でマッチし そのルールより下の本来処理して欲しいルールに非マッチになることを防ぐため、送信元と宛先は両方設定し、かつ可能な限り送信元と宛先は範囲を正しく設定してください。
例えば、1.176.100.0/24から 10.10.0.0/16宛通信を ASAでPATをしたい場合、以下のどちらかの設定を利用しても動作します。
[設定例① (宛先を明示してない)] ※曖昧であまり好ましくない設定
object network IN-1.176.100.0-24 subnet 1.176.100.0 255.255.255.0 ! object network OUT-10.0.0.0-8 subnet 10.0.0.0 255.0.0.0 ! nat (inside,outside) source dynamic IN-1.176.100.0-24 interface
[設定例② (宛先を明示している)] ※マッチ範囲が明瞭で好ましい設定
object network IN-1.176.100.0-24 subnet 1.176.100.0 255.255.255.0 ! object network OUT-10.0.0.0-8 subnet 10.0.0.0 255.0.0.0 ! nat (inside,outside) source dynamic IN-1.176.100.0-24 interface destination static OUT-10.10.0.0-16 OUT-10.10.0.0-16
しかし、設定例①の場合、宛先が未定義のため 設定例①は宛先が暗黙的に「Any」として処理します。つまり、設定例①の場合、1.176.100.0/24から 10.20.0.0/16や 172.16.0.0/16 など別の宛先の通信もマッチしてしまう曖昧な設定です。仮に設定例①を実施した後に、設定例①の下に 1.176.100.0/24から 10.20.0.0/16 や 172.16.0.0/16 宛の別のStaticやDyanmicNATのTwiceNATを設定しても 設定例①が先にHITしてしまいその後 NAT処理が止まってしまうため、その下に設定したルールは動作しなくなります。
そのため、Twice NATを利用時は、極力 送信元と宛先を明示的に設定し、また可能な範囲で最大限レンジを指定するようにするのがお勧めです。
何等か理由で宛先を明示できない場合は、Network Object NATは「送信元」と「宛先」を分けて設定と動作が可能なため、Network Object NAT の利用を検討してください。逆に、Twice NATは「送信元」と「宛先」をセットで同時に処理したい時に向くNATルールタイプです。
7.2. TwiceNAT利用時は、より狭いレンジのルールを上部に設定すること
TwiceNATは 上から順にNATルールをチェックする First Match 方式です。そのため、NATルールの設定個所によって同じNATルールを設定してもマッチするNATルールが変わることがあります。想定のNATルールにマッチしない問題をさけるため、TwiceNATのテーブルの上部に より狭いレンジの Twice NATルールの設定をすることをお勧めします。
例えば、1.176.0.0/16 (Object=IN-1.176.0.0-16)からと 1.176.100.0/24 (object=IN-1.176.100.0-24) からの それぞれのPATを実施する以下2つのルールを設定した場合、1.176.0.0/16の通信が発生した場合 上位のNATルールにまずマッチしてしまうため、レンジのより狭い IN-1.176.100.0-24 のNATルールは動作することがなくなります。(以下例の場合は 設定をシンプルにするという点では、1行目のルール設定だけで十分ですが、1.176.xx.0/24の送信元の細かい制御を行いたい場合、そのNATルールの上部に IN-1.176.0.0-16のNATルールがあると それに通信がマッチしてしまい、その下部の より狭いレンジにマッチするルールが動作しない問題につながる恐れがあります。)
[設定例① (より広いレンジが上部にある)]
nat (inside,outside) source dynamic IN-1.176.0.0-16 interface destination static OUT-10.10.0.0-16 OUT-10.10.0.0-16 nat (inside,outside) source dynamic IN-1.176.100.0-24 interface destination static OUT-10.10.0.0-16 OUT-10.10.0.0-16
両方のNATルールを動作させたりHITカウンタを見るようにするには、レンジのより狭いルールを上部に
[設定例① (より狭いレンジが上部にある)]
nat (inside,outside) source dynamic IN-1.176.100.0-24 interface destination static OUT-10.10.0.0-16 OUT-10.10.0.0-16 nat (inside,outside) source dynamic IN-1.176.0.0-16 interface destination static OUT-10.10.0.0-16 OUT-10.10.0.0-16
なお、狭いレンジを優先してマッチさせる処理は Network Object NATを利用時はシステムが自動で実施するため、Network Object NAT利用時は上記の設定順を考慮する必要はありません。
8. 参考情報: 有用なサイト
ASA 8.3+ パケット処理順序と 処理負荷概要と、パケットトレーサ
https://community.cisco.com/t5/-/-/ta-p/3155834
ASA ネットワークアドレス変換 設定トラブルシューティング:
http://www.cisco.com/cisco/web/support/JP/111/1119/1119731_116388-technote-nat-00.html
ASA9.1: NATに関する情報:
http://www.cisco.com/cisco/web/support/JP/docs/SEC/Firewall/ASA5500NextGenerationFire/CG/003/nat_overview.html?bid=0900e4b183273703
ASA9.1: ネットワーク オブジェクトNATの設定:
http://www.cisco.com/cisco/web/support/JP/docs/SEC/Firewall/ASA5500NextGenerationFire/CG/003/nat_objects.html?bid=0900e4b183273703
ASA9.1: Twice NATの設定:
http://www.cisco.com/cisco/web/support/JP/docs/SEC/Firewall/ASA5500NextGenerationFire/CG/003/nat_rules.html?bid=0900e4b183273703
基本的な ASA NAT コンフィギュレーション: ASA バージョン 8.3 以降の DMZ の Web サーバ:
http://www.cisco.com/cisco/web/support/JP/111/1118/1118281_asa-config-dmz-00-j.html
Cisco Secure ASA ファイアウォール構成例の NAT および PAT の設定例 使用:
http://www.cisco.com/cisco/web/support/JP/100/1002/1002228_19.html
Cisco ASA 5500 Migration to Version 8.3 and Later - NAT Exemption:
http://www.cisco.com/c/en/us/td/docs/security/asa/asa83/upgrading/migrating.html#wp60183
ファイアウォール トラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161736
Firepower System and FTDトラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161733