packet-tracer コマンドの結果「nat-no-xlate-to-pat-pool」で Drop
Firepower (ASA OS) や ASA にて NAT の設定をしている場合、意図せずに通信が Drop される場合があります。またその際に packet-tracer コマンドで通信テストしてみると、
Drop-reason: (nat-no-xlate-to-pat-pool) Connection to PAT address without pre-existing xlate, Drop-location: frame snp_sp_ingress:6979 flow (NA)/NA
と表示されることに気付くでしょう。
本記事ではこの事象の原因と回避策について解説します。
動作確認環境
- Firepower 1010
- ASA Version 9.22(2)14
用語の確認
- 一般的なネットワーク用語
- Twice NAT (トゥワイス・ナット)
- 同一の通信について、送信元と宛先の両方を変換するような NAT のこと
- Twice NAT (トゥワイス・ナット)
- Cisco ASA における用語
- ネットワークオブジェクトNAT (オートNAT)
- ネットワークオブジェクトの中で設定される NAT 設定
- Twice NAT (マニュアルNAT)
- ASA コンフィグのグローバルにて設定される形式の NAT 設定
- 送信元・宛先を同時変換する場合はマニュアルNATで設定されることが多い
- ネットワークオブジェクトNAT (オートNAT)
以下では、ASA における Twice NAT (マニュアルNAT) については一般的なネットワーク用語との混同を避けるために「マニュアルNAT」と記載します。
本記事で対象にする事象は、マニュアルNAT を設定している場合に発生する可能性があります。
「nat-no-xlate-to-pat-pool」の原因と回避策
原因① Service指定有りのマニュアルNATを設定している
以下のような要件があるとします。
- inside 側機器の実 IP は 10.1.150.10、NAT IP は 172.16.1.1
- outside 側機器の実 IP は 192.168.179.10、NAT IP は 172.16.2.1、TCPポート 80 でアクセスを待ち受ける
- inside 側の機器から outside 側の機器にアクセスする際は、172.16.2.1 の TCPポート 8888 宛にアクセスさせ、Firepower にて送信元NAT及び宛先 NAPT を行う

この要件を ASA のマニュアルNAT で実現する場合、以下のように destination 及び service オプションを指定することで実現できます。
#マニュアルNAT ※長いので横にスクロールしてください
nat (inside,outside) source static ip-10.150.1.10 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10 service tcp-8888 tcp-80
#オブジェクトの設定内容
object network ip-10.150.1.10
host 10.150.1.10
object network ip-172.16.1.1
host 172.16.1.1
object network ip-172.16.2.1
host 172.16.2.1
object network ip-192.168.179.10
host 192.168.179.10
object service tcp-80
service tcp destination eq www
object service tcp-8888
service tcp destination eq 8888
これで指定の要件については実現できるのですが、このような Service オプション有りのマニュアルNATを設定した場合、仕様上以下のような動作になります。
- マニュアルNATで指定した送信元アドレスから宛先アドレス宛の通信について、指定したポート以外の通信は Drop される
- マニュアルNATで指定した送信元アドレス以外の送信元アドレスから宛先アドレス宛の通信について、宛先ポートに関わらずすべて Drop される
Drop される通信について packet-tracer コマンドでテストを行うと Drop-reason は以下の内容になる。
Drop-reason: (nat-no-xlate-to-pat-pool) Connection to PAT address without pre-existing xlate, Drop-location: frame snp_sp_ingress:6979 flow (NA)/NA
例えば上に記載の要件例において inside 側機器からの宛先ポートをoutside側機器の実待ち受けポートである 80 に変えてアクセスしようとした場合、Firepower にて「(nat-no-xlate-to-pat-pool)」の理由で Drop されます。

また、NAT 設定で指定していない送信元アドレスである 10.1.150.20 から outside 側機器の NAT IP 172.16.2.1 宛にアクセスした場合についても、Firepower にて「(nat-no-xlate-to-pat-pool)」の理由で Drop されます。この場合はアクセス時の宛先ポートが何であっても Drop されます。

原因①の回避策
原因①の Drop 対象となる通信を Dropさせないようにするための回避策としては以下の通りです。
- マニュアルNATで指定した送信元アドレスから宛先アドレス宛の通信について、指定したポート以外の通信は Drop される場合の回避策
- →原因となるマニュアルNAT設定の後の適用順序の位置に、Service指定をしていないマニュアルNAT設定を追加する
- マニュアルNATで指定した送信元アドレス以外の送信元アドレスから宛先アドレス宛の通信について、宛先ポートに関わらずすべて Drop される場合の回避策
- →原因となるマニュアルNAT設定の後の適用順序の位置に、送信元アドレスのみを指定したアドレス無変換のマニュアルNAT設定(=アイデンティティNAT)を追加する
①の場合については、要件で設定したマニュアルNAT設定は以下でした。
#マニュアルNAT ※長いので横にスクロールしてください
nat (inside,outside) source static ip-10.150.1.10 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10 service tcp-8888 tcp-80
回避策として設定するマニュアルNAT設定は以下の通りです。
#回避策のマニュアルNAT ※Service移行を削除した内容
nat (inside,outside) source static ip-10.150.1.10 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10
結果としてNAT設定全体としては以下の内容・順序になります。
#マニュアルNAT全体 ※長いので横にスクロールしてください
nat (inside,outside) source static ip-10.150.1.10 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10 service tcp-8888 tcp-80
nat (inside,outside) source static ip-10.150.1.10 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10
これにより 10.150.1.10 から 172.16.2.1 の任意のポート宛の通信が Drop されなくなります。
②の場合については、設定されているマニュアルNATの送信元アドレスとして指定されていない 10.1.150.20 からマニュアルNAT設定の宛先アドレスである 172.16.1.1 宛の通信を Drop させないようにする場合は、以下のアイデンティティNAT を設定します。
#回避策のアイデンティテNAT
nat (inside,outside) source static ip-10.150.1.20 ip-10.150.1.20
#オブジェクトの設定内容
object network ip-10.150.1.20
host 10.150.1.20
結果としてNAT設定全体としては以下の内容・順序になります。
#マニュアルNAT全体 ※長いので横にスクロールしてください
nat (inside,outside) source static ip-10.150.1.10 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10 service tcp-8888 tcp-80
nat (inside,outside) source static ip-10.150.1.20 ip-10.150.1.20
これにより 10.1.150.20 から 172.16.2.1 の任意のポート宛の通信が Drop されなくなります。
原因② ダイナミックNAT の NAT IP 宛にアクセスしている
以下のような要件があるとします。
- inside 側機器の実 IP は 10.1.150.10~10.1.150.20 の範囲で複数あり、これらを対象にダイナミックNATを行う。NAT IP は 172.16.1.1
- outside 側機器の実 IP は 192.168.179.10、NAT IP は 172.16.2.1
- inside 側の機器から outside 側の機器にアクセスする際は、172.16.2.1 宛にアクセスさせ、Firepower にて送信元ダイナミック NAT 及び宛先 NAT を行う

この要件を ASA のマニュアルNAT で実現する場合、以下のようにダイナミック NAT の形式で destination オプションを指定することで実現できます。
#マニュアルNAT ※長いので横にスクロールしてください
nat (inside,outside) source dynamic ip-10.150.1.10-20 ip-172.16.1.1 destination static ip-172.16.2.1 ip-192.168.179.10
#オブジェクトの設定内容
object network ip-10.150.1.10-20
range 10.150.1.10 10.150.1.20
object network ip-172.16.1.1
host 172.16.1.1
object network ip-172.16.2.1
host 172.16.2.1
object network ip-192.168.179.10
host 192.168.179.10
ここで、もしダイナミック NAT で指定している NAT IP を実 IP として持つ機器が inside 側にあり、outside 側からその実 IP 宛の通信要件があったとします。

この場合、ダイナミック NAT で使用する NAT IP 宛の通信になるため、Firepower にて原則 Drop されます。
- ダイナミック NAT の NAT IP 宛の通信は原則 Drop される
Drop される通信について packet-tracer コマンドでテストを行うと Drop-reason は以下の内容になる。
Drop-reason: (nat-no-xlate-to-pat-pool) Connection to PAT address without pre-existing xlate, Drop-location: frame snp_sp_ingress:6979 flow (NA)/NA
原因②の回避策
原因②の Drop 対象となる通信を Dropさせないようにするための回避策としては以下の通りです。
- 対象のマニュアルNAT設定よりも前に適用順序の位置に、宛先アドレス側をアイデンティNATとしたマニュアルNAT設定を追加する
原因①の要件例では、outside 側の 192.168.179.10 から inside 側の NAT IP 兼 実 IP の 172.16.1.1 宛に通信する必要があります。この場合は、以下のマニュアルNAT 設定を追加します。
#回避策のマニュアルNAT ※長いので横にスクロールしてください
nat (outside,inside) source static obj-192.168.179.10 obj-172.16.2.1 destination static obj-172.16.1.1 obj-172.16.1.1
送信元側は NAT する必要があるため、通常通りスタティックNATの形式で設定します。宛先側については実 IP宛の通信をしたいため、NATをしないアイデンティNATの形式で設定します。この NAT 設定をダイナミックNAT用のマニュアルNAT よりも前に適用される位置に追加します。ダイナミックNAT よりも先に適用させることで、ダイナミックNAT に起因する Drop を回避します。
結果としてNAT設定全体としては以下の内容・順序になります。
#マニュアルNAT全体 ※長いので横にスクロールしてください
nat (outside,inside) source static obj-192.168.179.10 obj-172.16.2.1 destination static obj-172.16.1.1 obj-172.16.1.1
nat (inside,outside) source dynamic obj-10.150.1.10-20 obj-172.16.1.1 destination static obj-172.16.2.1 obj-192.168.179.10
これにより 192.168.179.1 から 172.16.1.1 宛の通信が Drop されなくなります。
なお、送信元側で NAT 要件が無い場合、原因①の回避策②と同様に送信元側のみを指定したアイデンティNATをダイナミックNATよりも後の適用順序の位置に追加することでも問題ありません。
まとめ
- Firepower (ASA) にて NAT を設定している場合、「nat-no-xlate-to-pat-pool」の理由で Drop する場合がある
- 「nat-no-xlate-to-pat-pool」の原因としては、Service 指定のマニュアルNATを設定している場合と、ダイナミックNAT を設定している場合の2つがある
- いずれの原因も特定のマニュアルNAT設定を追加することで Drop を回避することができる
参考資料
Cisco Firepower (ASA OS) 関連記事一覧
Amazon で買えるおすすめアイテム
以下は Amazon アフィリエイトリンクです。ネットワーク作業向けにそこそこおすすめなアイテムです。
ブログ始めるなら 【アフィリエイトリンク】
note メンバーシップへの参加もお待ちしています!

コメント