「CCNAのNAT問題、毎回 inside-local と inside-global でこんがらがる」「PAT overload のコマンドが暗記できない」——自分も最初の頃、まさにこの状態だった。実機を何度も叩いてやっと腑に落ちた。本記事では、CCNA 200-301 で出題されるNAT/PAT問題を最短で解くための考え方と、頻出3パターンの攻略法を現場目線で整理する。
対象は試験を控えた人、それと久しぶりにNATを触る現役エンジニア。コマンド例はすべて Cisco Catalyst 8300 と IOS XE 17.9 で実機検証済み。ぶっちゃけ、用語さえ整理できればNAT問題は半分終わる。
NATは「IPアドレス変換」、PATは「ポート番号も使った多重化NAT」
NAT(Network Address Translation)は、その名のとおりIPアドレスを書き換える技術。プライベートアドレス(例:192.168.1.10)をグローバルアドレス(例:203.0.113.1)に変換してインターネットに送り出し、戻ってきた応答パケットは逆方向に書き換えて元の端末に届ける。これがコア。
で、PAT(Port Address Translation)はNATの一種で、ポート番号も併用して1個のグローバルIPに複数の端末を多重化する仕組み。Ciscoでは NAT overload と呼ぶことが多い。家庭のWi-Fiルーターでやってるのもこれ。1個のWAN側IPに家中の端末をぶら下げてるアレ。
RFC 1918 で定義されたプライベートIP(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)はインターネットでルーティング不可。だからNAT/PATが必要になる、というのが大前提。
用語の覚え方は「内/外 × 変換前/変換後」のマトリクス
この4語、最初は本当に分かりにくい。でも一度マトリクスで整理すると、二度と迷わなくなる。
| 用語 | どのホストの? | どっちから見たIP? | 具体例 |
|---|---|---|---|
| inside-local | 内部ホスト | 内部から見たIP(変換前) | 192.168.1.10 |
| inside-global | 内部ホスト | 外部から見たIP(変換後) | 203.0.113.1 |
| outside-global | 外部ホスト | 外部から見たIP(実IP) | 198.51.100.50 |
| outside-local | 外部ホスト | 内部から見たIP | 198.51.100.50(多くの場合 outside-global と同じ) |
「inside / outside は誰のIP?」「local / global は誰の視点?」。これだけ。inside-local なら「内部ホストの、内部視点のIP」だから 192.168.1.10。inside-global なら「内部ホストが外から見たIP」だから変換後の 203.0.113.1。outside-* は登場頻度が低いので一旦後回しでOK。
配属1年目の頃、客先で show ip nat translations を眺めながら「どれが内部でどれが外部か分からん…」って固まってたら、先輩から「内→外の通信なら、左の2列が内部ホスト、右の2列が外部ホスト。それだけ覚えれば全部読める」と。実際、Ciscoの出力フォーマットは Inside global / Inside local / Outside local / Outside global の順で固定。慣れると左から右に流れるように読める。
3つの方式を「IPの数」と「用途」で覚える
| 方式 | マッピング | 主な用途 |
|---|---|---|
| スタティックNAT | 1対1(固定) | 公開Webサーバ等を外部に見せる |
| ダイナミックNAT | N対N(プールから動的割当) | プールサイズ分の同時接続を許容 |
| PAT(NAT overload) | N対1(ポート番号で多重化) | 大多数の組織内→外接続。最頻出 |
図1: 必要なグローバルIP数の比較
ホスト数分
同時数分
最低1個
CCNA 200-301 では、PATが圧倒的に出題される。次点でスタティックNAT。ダイナミックNATはたまに「概念の違い」を問う形で混じる程度。
PAT overloadの最小構成は4行+ACL
CCNAでもっとも頻出なのが、これ。「下記の設定で正しく動くか」「不足しているコマンドはどれか」みたいな選択肢問題で出る。最小構成を丸暗記してしまうのが結局速い。
| 設定要素 | 役割 | 忘れがち度 |
|---|---|---|
| ip nat inside(内側IF) | 内部側を宣言 | ★★ |
| ip nat outside(外側IF) | 外部側を宣言 | ★★ |
| access-list 1 permit … | 変換対象を絞る | ★ |
| ip nat inside source list 1 interface Gi0/1 overload | PATを有効化 | ★★★ |
Router(config)# interface GigabitEthernet0/0 Router(config-if)# ip address 192.168.1.1 255.255.255.0 Router(config-if)# ip nat inside Router(config-if)# exit Router(config)# interface GigabitEthernet0/1 Router(config-if)# ip address 203.0.113.1 255.255.255.252 Router(config-if)# ip nat outside
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload
overload を付け忘れるとダイナミックNAT動作になる。グローバルIPが1個しかない場合、最初の1台しか通信できず、残りはエラー扱い。試験ではここを引っ掛けてくる選択肢が頻出。「overloadキーワード=PAT」と一直線で覚える。
公開サーバを「内→外」「外→内」両方向で見せる
スタティックNATは内部のサーバを固定のグローバルIPで公開するときに使う。コマンド1行+inside/outside宣言だけ。シンプル。
Router(config)# ip nat inside source static 192.168.1.100 203.0.113.100
この一行で「内部の 192.168.1.100 ⇔ 外部から 203.0.113.100」の双方向マッピングが固定される。試験では「外部から 203.0.113.100 にアクセスがあったとき、どこに転送されるか」という形で出る。
Router(config)# ip nat inside source static tcp 192.168.1.100 80 203.0.113.1 8080
外部から 203.0.113.1:8080 にアクセスが来たら、内部の 192.168.1.100:80 に飛ばす。FortiGateで言うところのVIPと同じ概念。
出力カラムの順序は決まっている
Router# show ip nat translations Pro Inside global Inside local Outside local Outside global tcp 203.0.113.1:50001 192.168.1.10:1024 198.51.100.50:80 198.51.100.50:80 tcp 203.0.113.1:50002 192.168.1.11:1024 198.51.100.50:80 198.51.100.50:80 --- 203.0.113.100 192.168.1.100 --- ---
| カラム | 意味 |
|---|---|
| Pro | プロトコル(tcp / udp / — =スタティック) |
| Inside global | 内部ホストの「外から見たIP(変換後)」 |
| Inside local | 内部ホストの「内部実IP(変換前)」 |
| Outside local | 外部ホストを内部から見たIP |
| Outside global | 外部ホストの実IP |
PATが効いていれば、Inside global のIPが同じでもポート番号で多重化されている(上記例では 50001 と 50002)。スタティックNATは Pro が — でポート番号もなし。これでだいたいの試験問題は解ける。
採点者が必ず仕込んでくる定番ワナ
どちらかのインターフェースに ip nat inside(または outside)が無いと、NATは一切動かない。show ip nat statistics で Hits=0、Misses=0 のままなら大抵これ。
access-list で permit する範囲が狭くて、本来NATされるべきホストが対象外になっているパターン。試験では「192.168.1.0/24 全体を変換したい」のに 0.0.0.15(つまり/28)になっている設定が混ざる。
前述のとおり。グローバルIPが1個+overloadなしの場合、2台目以降は通信不可。「最初の1台だけ通信できて他がダメ」という症状の選択肢が出たらほぼこれ。
PATは「内→外」スタート(戻りパケットだけ通る)、スタティックNATは「双方向」可。外部から能動的にアクセスしたいならスタティック。これを問う問題が地味に出る。
この4つを覚えておけば実機検証もラク
| コマンド | 用途 | 注目ポイント |
|---|---|---|
| show ip nat translations | 変換テーブルの中身 | エントリ有無、ポート番号 |
| show ip nat statistics | Hits/Misses/インターフェース | inside/outside割当を一覧 |
| debug ip nat | 変換動作のリアルタイム確認 | 本番では使わないこと |
| clear ip nat translation * | テーブル全消去 | 設定変更後の検証用 |
debug ip nat は本番環境で打つとCPU負荷が跳ね上がる。客先で「ちょっと見たいので…」とノリで打って、後輩がプロセス使用率99%まで持っていったのを見たことがある。検証ラボか conditional debug 限定で使うこと。
CCNA NAT/PAT問題は「用語マトリクス+4行設定」で攻略できる
inside/outside × local/global のマトリクスを覚えれば、4用語の混乱は終わり。PAT overload は「ip nat inside/outside + ACL + overload付きコマンド」の最小4行が骨。show ip nat translations は左から Inside global → Inside local → Outside local → Outside global の固定順序。試験のひっかけは「overload抜け」「ACLレンジ間違い」「inside/outside未宣言」が3大定番。
よくある質問(FAQ)
Q. NATとPATは何が違うのか?
PATはNATの一形態で、IPアドレスに加えてポート番号も使って多重化する点が違う。Ciscoのコンフィグで言うと、ip nat inside source … に overload を付けたものがPAT。付けないとダイナミックNAT(IP対IPの一時マッピング)。
Q. inside-local と inside-global、現場で使い分けるシチュエーションは?
show ip nat translations の出力を読むときと、トラブル時にACLログと突き合わせるときくらい。「ファイアウォールでログを見ると inside-global のIPが出るので、そこから内部ホストに辿り着くには inside-local を見る」という流れが多い。
Q. CCNA試験ではPATとスタティックNAT、どちらが頻出?
体感では PAT 7割、スタティックNAT 2割、ダイナミックNAT 1割くらい。PATの設定構文と show ip nat translations の読み取りを優先して仕上げると効率がいい。
Q. ACLのワイルドカードマスクが書けない
サブネットマスクを「255 から引く」発想で書けるようになる。192.168.1.0/24 なら 0.0.0.255。/28 なら 0.0.0.15。詳しくは別記事で解説しているのでそちらを参照。
Q. NATを設定したのに通信できない。最初に見るのは?
show ip nat statistics で「Hits」「Misses」と inside/outside の割当インターフェースを確認するのが最速。Hits=0 ならインターフェース宣言かACLが疑わしい。Hits>0 でも届かないならルーティング側を疑う。


