この記事は、 「ネットワーク中級編|構築・検証・障害切り分けを身につける」 の第23回です。
NATの設定を眺めるだけではなく、パケットがどこまで進み、どの時点で変換されていないのかを確認して原因を絞り込みます。
NAT障害の切り分け|変換テーブル・ACL・ルーティングの確認手順を図解
NAT障害は、NAT設定そのものだけでなく、送信元が変換条件に一致していない、inside・outsideの指定がない、外向き経路がない、戻り通信が届かないなど、複数の原因で発生します。この記事では、変換前と変換後のパケットを追いながら、確認順序を体系的に整理します。
「インターネットへ出られないからNATが原因だ」と決めつけると、調査が遠回りになります。 NAT機器へパケットが到着していない場合や、外向きの経路がない場合は、変換テーブルを何度確認しても原因は見つかりません。
NAT障害では、変換前のパケットが届いたか、変換エントリーが作られたか、変換後のパケットが出ていったか、戻り通信が到着したかを順番に確認することが重要です。
この記事を読み終えるとできること
- NAT通信の正常な往復を説明できる
- inside・outsideと変換対象を確認できる
- NAT変換テーブルの有無から原因を絞れる
- ACL・経路・戻り通信まで含めて調査できる
- Cisco IOS形式の確認コマンドを読み取れる
- 調査結果を根拠とともに報告できる
NAT障害とは何か
NAT障害とは、通信に必要なアドレスまたはポートの変換が行われない、誤った内容で変換される、あるいは変換後の通信が正しく往復できない状態です。
NATは、プライベートIPアドレスをグローバルIPアドレスへ変換するためによく使われます。 ただし、NAT機器が行うのはアドレスやポートの書き換えです。通信を成立させるには、次の条件も必要です。
- 端末からNAT機器までパケットが届く
- NAT機器に宛先への経路がある
- パケットがNATの変換条件に一致する
- 変換後のパケットが外部へ送信される
- 外部からの応答が変換後アドレスへ戻る
- NAT機器が戻り通信を元の端末へ逆変換する
- ACLやファイアウォールで通信が拒否されない
NAT設定だけを確認して終わらないことが重要です。
NATはルーティング、ACL、ファイアウォール、インターフェース、上位回線と連携して動作します。原因を切り分けるときは、通信経路全体を追います。
正常時のNAT通信を理解する
まず、社内PCから外部WebサーバーへHTTPS通信する例を確認します。 ここでは、複数端末が1つのグローバルIPアドレスを共有するNAPT、Cisco IOSの表現ではPATやoverloadと呼ばれる構成を想定します。
社内PCから外部Webサーバーへ通信する構成
送信元ポート 51514
外側:203.0.113.10
TCP 443
変換後:203.0.113.10:49152 → 198.51.100.20:443
NAT通信の往復
-
PC-Aが外部Webサーバーへパケットを送る
送信元は
192.168.10.50:51514、宛先は198.51.100.20:443です。 - NATルーターが変換対象か判定する 送信元アドレス、受信インターフェース、NATルールなどを確認し、対象通信であれば変換エントリーを作成します。
-
送信元アドレスとポートを書き換える
送信元を
203.0.113.10:49152へ変換し、外部へ転送します。 -
Webサーバーが変換後アドレスへ応答する
宛先は
203.0.113.10:49152です。外部サーバーは社内PCのプライベートIPアドレスを知りません。 -
NATルーターが戻り通信を逆変換する
変換テーブルを参照し、宛先を
192.168.10.50:51514へ戻してPC-Aへ転送します。
192.168.10.50:51514
198.51.100.20:443
192.168.10.50:51514
203.0.113.10:49152
203.0.113.10:49152
198.51.100.20:443
NAT用語の整理
| 用語 | 今回の値 | 意味 |
|---|---|---|
| Inside local | 192.168.10.50:51514 | 社内側で使われている変換前の送信元情報 |
| Inside global | 203.0.113.10:49152 | 外部側から見える変換後の送信元情報 |
| Outside local | 198.51.100.20:443 | 内部から見た外部ホストの情報。通常はOutside globalと同じ |
| Outside global | 198.51.100.20:443 | 外部ネットワーク上で実際に使われる外部ホストの情報 |
本記事の通信処理順は、障害切り分けのための概念図です。実際の機器内部では、NAT、ルーティング、ACL、VPN、ポリシー処理の順序が製品や方向によって異なる場合があります。
症状から確認箇所を絞る
NAT障害では、影響範囲を確認すると原因候補を早く減らせます。 「通信できない」という一言だけで調査を始めず、誰が、どこへ、どの通信を行えないのかを整理します。
共通部分を優先
外側インターフェース、デフォルトルート、NATルール、グローバルIP、上位回線を確認します。
変換対象の条件を確認
NAT用ACLやアドレスオブジェクトに、対象サブネットが含まれているか確認します。
端末からNAT機器までを確認
IP設定、デフォルトゲートウェイ、端末側ファイアウォール、個別の除外ルールを確認します。
ポート・ポリシーを確認
TCP/UDPポート、ACL、ファイアウォールポリシー、宛先サービスの稼働状態を確認します。
資源不足を疑う
NATプール、PATポート、セッション数、CPU・メモリー、タイムアウトを確認します。
静的NATと許可設定を確認
ポートフォワーディング、外部ACL、サーバーの待ち受け、戻り経路を確認します。
「いつから発生したか」も重要です。
NAT設定変更、回線切り替え、外側IPアドレス変更、ACL変更、VPN追加の直後であれば、変更差分を優先して確認します。
調査前に整理する情報
コマンドを実行する前に、期待する通信を1本に絞ります。調査対象が曖昧なままでは、変換テーブルに多数のエントリーが表示されても、どれを確認すべきか判断できません。
送信元
- 端末名
- 送信元IPアドレス
- 所属VLAN・サブネット
- デフォルトゲートウェイ
宛先
- 宛先FQDN
- 名前解決後のIPアドレス
- TCPまたはUDP
- 宛先ポート番号
期待する変換
- 変換前アドレス
- 変換後アドレスまたはプール
- 動的NAT・PAT・静的NATのどれか
- NAT除外の対象か
影響と時刻
- 発生日時
- 常時か断続的か
- 影響する端末数
- 直前の変更作業
検証通信は、送信元と宛先を固定して行います。
例:192.168.10.50 から 198.51.100.20 のTCP 443へ接続する。これにより、NATルール、テーブル、パケットキャプチャーを同じ通信で照合できます。
NAT障害の確認順序
次の順序で確認すると、NATより前の問題、NAT変換の問題、NATより後の問題を分けられます。
- 端末からNAT機器まで到達できるか 端末のIPアドレス、サブネットマスク、デフォルトゲートウェイを確認し、ゲートウェイへpingします。ここで失敗する場合は、NATより手前の問題です。
- NAT機器のインターフェースが正常か 内側・外側インターフェースがup/upか、想定したIPアドレスか、受信カウンターが増えるかを確認します。
- 宛先へのルートがあるか デフォルトルートまたは個別経路を確認します。NATで送信元を書き換えても、宛先へ転送する経路がなければ通信できません。
-
inside・outsideの指定が正しいか
社内側に
ip nat inside、外部側にip nat outsideが設定されているか確認します。 - 通信がNATルールへ一致するか NAT用ACLやアドレスオブジェクトに、実際の送信元アドレスが含まれているか、ルール順序や除外条件に問題がないか確認します。
- 新しい通信を発生させ、変換エントリーを確認する 動的NATやPATは通信開始時にエントリーを作ります。対象端末から通信させながら変換テーブルと統計を確認します。
- 変換後のパケットが外部へ出ているか 外側インターフェースのパケットキャプチャーやカウンターで、送信元が変換後アドレスになっているか確認します。
- 戻り通信がNAT機器へ届いているか 応答がない場合は、上位回線、外部ACL、宛先サーバー、変換後アドレスへの経路を確認します。
- 戻り通信が逆変換され、端末へ届くか 外側で応答を確認できるのに内側へ出てこない場合は、NATセッション、ファイアウォール状態、ポリシー、非対称経路を確認します。
- 資源不足と古いエントリーを確認する 新規通信だけ失敗する場合は、NATプール枯渇、PATポート枯渇、セッション上限、古い変換エントリーを確認します。
確認結果から判断する
Cisco IOS形式の確認コマンド
以下はCisco IOS/IOS XE形式の代表例です。コマンド、表示項目、パケット処理順は機種・OS・機能構成によって異なります。本番機器では、対象製品の公式ドキュメントと運用手順を確認してください。
正常構成の例
interface GigabitEthernet0/0
description INSIDE_LAN
ip address 192.168.10.1 255.255.255.0
ip nat inside
!
interface GigabitEthernet0/1
description OUTSIDE_WAN
ip address 203.0.113.10 255.255.255.252
ip nat outside
!
ip access-list standard NAT_INSIDE
permit 192.168.10.0 0.0.0.255
!
ip nat inside source list NAT_INSIDE interface GigabitEthernet0/1 overload
!
ip route 0.0.0.0 0.0.0.0 203.0.113.9
show ip interface brief
インターフェースの状態とIPアドレスを確認します。内側・外側がup/upであることを確認します。
show ip route 宛先IP
宛先に対して選択される経路と出力インターフェースを確認します。
show running-config | section ip nat
NATルール、静的NAT、プール、overload設定を確認します。
show access-lists
NAT対象を選ぶACLの内容とヒットカウントを確認します。
show ip nat translations
変換前後のアドレス、ポート、外部宛先を確認します。
show ip nat statistics
inside・outside、ヒット・ミス、動的マッピング、プール使用状況を確認します。
1.インターフェースを確認する
R1# show ip interface brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.10.1 YES manual up up
GigabitEthernet0/1 203.0.113.10 YES manual up up
- 内側と外側の両方が
up/upか - 想定したIPアドレスが設定されているか
- 外側IPアドレスが変更されたままNAT設定が古くないか
2.宛先経路を確認する
R1# show ip route 198.51.100.20
Routing entry for 0.0.0.0/0
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
* 203.0.113.9
Route metric is 0, traffic share count is 1
- 宛先に一致する経路があるか
- ネクストホップが正しいか
- 想定した外側インターフェースへ出るか
3.inside・outsideを確認する
R1# show running-config interface GigabitEthernet0/0
interface GigabitEthernet0/0
ip address 192.168.10.1 255.255.255.0
ip nat inside
R1# show running-config interface GigabitEthernet0/1
interface GigabitEthernet0/1
ip address 203.0.113.10 255.255.255.252
ip nat outside
inside・outsideが逆になっている、片方だけ設定されている、サブインターフェースやSVIに設定すべきところを物理インターフェースへ設定している、といったミスに注意します。
4.変換対象ACLを確認する
R1# show access-lists NAT_INSIDE
Standard IP access list NAT_INSIDE
10 permit 192.168.10.0, wildcard bits 0.0.0.255 (24 matches)
- 対象端末
192.168.10.50がpermit条件に含まれるか - ワイルドカードマスクが正しいか
- 検証通信を行ったときヒットカウントが増えるか
- NAT除外やroute-mapが先に一致していないか
Cisco IOSの典型的なNAT設定で参照するACLは、主に「どの通信を変換対象にするか」を選ぶために使われます。ACLの deny は、必ずしもパケット破棄を意味せず、「そのNATルールでは変換しない」という扱いになる構成があります。
5.変換テーブルを確認する
R1# show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 203.0.113.10:49152 192.168.10.50:51514 198.51.100.20:443 198.51.100.20:443
- 対象端末のInside localが表示されているか
- 期待したInside globalへ変換されているか
- プロトコルと宛先ポートが検証通信と一致するか
- 別のNATルールで想定外アドレスへ変換されていないか
6.NAT統計を確認する
R1# show ip nat statistics
Total active translations: 1 (0 static, 1 dynamic; 1 extended)
Outside interfaces:
GigabitEthernet0/1
Inside interfaces:
GigabitEthernet0/0
Hits: 18 Misses: 2
Expired translations: 4
Dynamic mappings:
-- Inside Source
[Id: 1] access-list NAT_INSIDE interface GigabitEthernet0/1 refcount 1
- inside・outsideインターフェースが想定どおりか
- 動的マッピングに正しいACLと外側インターフェースが表示されるか
- 通信中にHitsが増えるか
- プールを使う構成では割り当て済み数と残数を確認する
デバッグとエントリー削除の注意点
R1# debug ip nat
R1# undebug all
R1# clear ip nat translation *
debug ip nat は通信量が多い機器で大量出力や高負荷を招く可能性があります。clear ip nat translation * は既存通信へ影響する可能性があります。本番環境では、対象通信を絞る、メンテナンス時間を確保する、承認を得るなどの手順を守ってください。
変換テーブルの読み方
変換テーブルが表示されたからといって、通信が成功しているとは限りません。 変換エントリーは「NAT条件へ一致し、変換情報が作られた」ことを示します。外部へ到達したことや応答が戻ったことは、別途確認が必要です。
| 変換テーブルの状態 | 分かること | 次に確認すること |
|---|---|---|
| 対象エントリーがない | 通信未発生、NAT機器へ未到達、条件不一致の可能性 | 端末、受信IF、inside指定、NAT用ACL |
| 対象エントリーがある | NATルールへ一致し変換情報が作られた | 外側送信、外部ACL、宛先、戻り通信 |
| 想定外のInside global | 別ルール、別プール、ルール順序の影響 | NATルール全体、route-map、ポリシーNAT |
| 同じ通信の古い情報が残る | 設定変更前のセッションが継続している可能性 | 影響確認後に対象エントリーを削除して再試験 |
| 新規エントリーが作れない | プール・PATポート・セッションの枯渇可能性 | 統計、ログ、上限、タイムアウト |
ルーター自身から実行したpingだけでNATを判断しないでください。
ルーター自身が生成したパケットは、社内側端末から受信したパケットと処理条件が異なり、同じNATルールへ一致しない場合があります。実際の変換対象端末から通信を発生させて確認します。
パケットキャプチャーで確認する
変換テーブルだけで判断できない場合は、NAT機器の内側と外側で同じ通信を観測します。 送信元アドレスとポートがどこで変わるかを比較すると、NATの前後を明確に分けられます。
| 観測場所 | 送信方向で期待するパケット | 応答方向で期待するパケット |
|---|---|---|
| 内側インターフェース | 192.168.10.50:51514 → 198.51.100.20:443 | 198.51.100.20:443 → 192.168.10.50:51514 |
| 外側インターフェース | 203.0.113.10:49152 → 198.51.100.20:443 | 198.51.100.20:443 → 203.0.113.10:49152 |
観測結果ごとの判断
内側に送信パケットがない
端末、VLAN、ゲートウェイ、ルーティングなど、NAT機器より前を確認します。
内側にはあるが外側にない
NAT条件、外向き経路、ACL、ファイアウォールポリシー、機器内部の破棄を確認します。
外側へ出るが応答がない
上位ルータ、回線、外部フィルタ、宛先サーバー、外部サービスを確認します。
外側に応答があるが内側にない
逆変換、状態管理、非対称ルーティング、内部ACL、端末までの経路を確認します。
TCP通信では、SYNだけでなくSYN/ACKが返っているかを確認します。ICMP pingが通ることは、TCP 443やUDP 53が通ることを保証しません。
NAT障害でよくある原因
NAT用ACLの対象漏れ
新しいVLANやサブネットを追加したのに、NAT用ACLへ追加していないケースです。特定サブネットだけ外部通信できない症状になります。
ワイルドカードマスクの誤り
0.0.0.255 とすべきところを別の値にし、対象範囲が狭すぎる、または広すぎる状態です。
inside・outsideの設定漏れ
インターフェース変更や回線切り替え後に、NAT方向の指定を移し忘れるケースです。
外側IPアドレスの変更
回線変更後も古いグローバルIPアドレス、NATプール、静的NATを使用しているケースです。
外向きルートの欠落
デフォルトルートの削除、誤ったネクストホップ、経路切り替え失敗により外部へ転送できません。
戻り経路がない
外部側が変換後グローバルIPアドレスへの経路を持たない、または別回線へ返してしまうケースです。
ACL・ファイアウォールで拒否
NATは成功していても、外向きまたは戻り通信がセキュリティポリシーで拒否される場合があります。
ルール順序とNAT除外
VPN向けのNAT除外、ポリシーNAT、静的NATなどが先に一致し、想定ルールへ到達しないケースです。
NATプール・PATポート枯渇
既存通信は続くのに新規通信だけ失敗する、ピーク時間帯だけ発生する場合に疑います。
古い変換エントリー
設定変更後も既存セッションが古い変換を使用し続け、再試験結果が変わらないことがあります。
ヘアピンNATの未対応・設定不足
内部端末から内部サーバーの公開IPアドレスへ接続するとき、同一機器で折り返すNATが必要になる場合があります。
非対称ルーティング
送信と応答が異なるNAT機器を通り、戻り側に変換セッションが存在しないケースです。
NAT障害でよくある勘違いと注意点
動的NATやPATでは、通信が発生していないとエントリーが表示されないことがあります。対象端末から新しい通信を発生させながら確認します。
NAT条件へ一致したことは分かりますが、外部到達や戻り通信までは保証しません。外側キャプチャーや応答パケットを確認します。
外部から開始する通信には、静的NATやポートフォワーディングだけでなく、外部ACL、ファイアウォールポリシー、サーバーの待ち受け、戻り経路が必要です。
ルーター自身が生成する通信と、insideから受信してNATする通信は条件が異なります。必ず実際の端末から検証します。
ICMPとTCP・UDPは別の通信です。HTTPSならTCP 443、DNSならUDP/TCP 53など、実際のプロトコルとポートで確認します。
パケットを区間ごとに追い、どの段階まで正常かを明確にすることが、最短の切り分けにつながります。
障害報告のまとめ方
調査結果は、「NATが悪かった」だけではなく、確認した事実と判断根拠を分けて報告します。 次の例では、新しく追加したサブネットがNAT用ACLへ含まれていなかったケースをまとめています。
報告では「観測事実」と「推測」を分けます。
「変換テーブルがない」は事実です。「ACL漏れが原因」は設定とヒットカウントを照合して確定した判断です。原因確定前は「可能性」として表現します。
英語ログ・検索キーワード
海外ベンダーのドキュメントやログを調べるときは、次の表現を使うと関連情報を見つけやすくなります。
NAT translation entry
NAT変換エントリー
inside local / inside global
変換前/変換後の内部アドレス
NAT pool exhausted
NATプールが枯渇した
port exhaustion
PATで利用可能なポートが不足した
NAT exemption
NAT除外。VPN通信などを変換しない設定
asymmetric routing
往路と復路が異なる非対称ルーティング
translation not created
変換エントリーが作成されない
return traffic not received
戻り通信を受信していない
検索例:Cisco NAT translation not created ACL hit count、PAT port exhaustion troubleshooting、NAT return traffic asymmetric routing
理解度チェック
記事の内容を確認するため、次の5問に答えてください。解答を見る前に、確認順序を自分で考えてみましょう。
問題1.対象端末から通信を発生させてもNAT変換テーブルにエントリーが作られません。最初に確認すべき内容として適切なものを2つ選んでください。
- 端末からNAT機器までパケットが届いているか
- NAT用ACLに送信元が含まれているか
- 外部Webサーバーの証明書期限
- 外部サーバーのディスク使用率
解答を見る
変換エントリーが作られない場合は、NAT機器へ未到達、inside指定漏れ、NAT条件不一致などを優先して確認します。
問題2.NAT変換テーブルに対象エントリーが表示されています。この事実から確実に分かることはどれですか。
- 外部サーバーまで通信が到達した
- 戻り通信が端末まで届いた
- NAT条件へ一致し、変換情報が作られた
- ACLやファイアウォールで許可された
解答を見る
変換エントリーだけでは、外部到達や応答受信までは判断できません。
問題3.外側インターフェースで変換後の送信パケットを確認できましたが、応答パケットがありません。次に確認すべき場所はどこですか。
解答を見る
上位ルータ、外部回線、外部ACL、宛先サーバー、変換後グローバルIPへの戻り経路を確認します。少なくとも、NAT機器から変換後パケットが出たところまでは正常です。
問題4.既存通信は継続していますが、利用者が増える時間帯だけ新規通信が失敗します。疑うべき原因を2つ挙げてください。
解答を見る
NATプール枯渇、PATポート枯渇、セッション上限、機器資源不足などが候補です。統計、ログ、同時セッション数を確認します。
問題5.ルーター自身から外部へpingできました。この結果だけで、社内端末のNATが正常と判断できますか。
解答を見る
ルーター自身が生成した通信は、insideから受信した端末通信と同じNAT条件を通らない場合があります。実際の変換対象端末から検証します。
実践演習:NAT変換エントリーが作られない原因を特定する
次の構成で、PC-Aから外部WebサーバーのTCP 443へ接続できません。 既存の別サブネットからは外部通信できます。コマンド出力から原因と対応を考えてください。
演習構成
GW 192.168.10.1
G0/1 outside
TCP 443
確認結果
PC-A> ping 192.168.10.1
Success rate is 100 percent
R1# show ip route 198.51.100.20
Routing entry for 0.0.0.0/0
* 203.0.113.9
R1# show running-config | include ip nat|access-list
ip nat inside source list NAT_INSIDE interface GigabitEthernet0/1 overload
R1# show access-lists NAT_INSIDE
Standard IP access list NAT_INSIDE
10 permit 192.168.20.0, wildcard bits 0.0.0.255 (36 matches)
R1# show ip nat translations | include 192.168.10.50
R1#
R1# show access-lists NAT_INSIDE
Standard IP access list NAT_INSIDE
10 permit 192.168.20.0, wildcard bits 0.0.0.255 (36 matches)
課題1.どこまで正常ですか
R1の外向き経路:__________
NAT変換エントリー:__________
課題2.最も可能性が高い原因は何ですか
課題3.修正案と確認項目を書いてください
修正後の確認:______________________
演習の解答例を見る
課題1
- PC-Aからデフォルトゲートウェイまでは正常
- R1には外部宛先へ利用できるデフォルトルートがある
- PC-AのNAT変換エントリーは作られていない
課題2
NAT用ACLは 192.168.20.0/24 のみをpermitしており、PC-Aが所属する 192.168.10.0/24 が変換対象に含まれていません。ACLヒットカウントもPC-Aの試験で増えていないため、変換条件不一致が最も可能性の高い原因です。
課題3
ip access-list standard NAT_INSIDE
permit 192.168.10.0 0.0.0.255
修正後はPC-Aから新規HTTPS通信を行い、ACLヒットカウント、show ip nat translations、外側での変換後パケット、TCP接続成功を確認します。
自分の言葉で説明する課題
利用者から「NATが壊れていると思います」と連絡を受けました。原因を決めつけずに、どの順番で確認するかを60秒程度で説明してください。
説明例を見る
まず端末からNAT機器まで通信が届くかと、NAT機器に外向きの経路があるかを確認します。次に、inside・outsideの指定とNAT用ACLを確認し、対象端末から新しい通信を発生させて変換テーブルが作られるかを見ます。エントリーが作られる場合は、外側へ変換後パケットが出ているか、応答が戻るか、戻り通信が逆変換されて端末へ届くかを順番に確認します。
まとめ
- NAT障害は、変換設定だけでなく、到達性、経路、ACL、戻り通信を含めて切り分ける
- 最初に送信元、宛先、プロトコル、ポート、期待する変換内容を固定する
- 変換テーブルがない場合は、NAT機器への未到達、inside指定、変換条件を確認する
- 変換テーブルがある場合は、外向き転送、外部ACL、宛先、戻り経路を確認する
- 内側と外側のパケットを比較すると、変換前後を明確に分けられる
- NATエントリーの存在だけでは通信成功を証明できない
- 既存通信だけ正常で新規通信が失敗する場合は、プール・ポート・セッション枯渇を疑う
- 調査結果は、事象、影響範囲、確認事実、原因、対応、再発防止に分けて報告する
NAT障害の切り分けでは、「パケットがNATの前まで届いたか」「正しく変換されたか」「NATの後へ出たか」「戻って逆変換されたか」の4段階で考えると、原因を整理しやすくなります。

コメント