STAGE 04 / 4-3 ネットワークサービス

NATの設定(static/dynamic/PAT)

考えてみよう

NATを設定するとき、ルーターに「どのインターフェースが社内側で、どちらが外側か」を教えてあげる必要はあるでしょうか?

NATは「プライベートIPをグローバルIPに変換する」機能でしたね。では、ルーターは変換すべき方向をどうやって判断しているのでしょうか。設定の中に、その手がかりが隠れています。

NAT設定の共通ステップ:inside/outsideの指定

前回学んだNATの3方式(static/dynamic/PAT)は、いずれも共通の準備作業から始まります。それは、どのインターフェースが社内側(inside)で、どのインターフェースが外部側(outside)かをルーターに教えることです。

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside

この指定がないと、ルーターはどちらの方向に変換をかければよいか判断できません。玄関(inside)と勝手口(outside)を先に決めておかないと、荷物をどちらに運べばいいか分からないのと同じです。

スタティックNATの設定

社内サーバーを外部に固定アドレスで公開したいときは、スタティックNATを使います。

Router(config)# ip nat inside source static 192.168.1.100 203.0.113.10

これは「社内の192.168.1.100(inside local)を、常に203.0.113.10(inside global)に変換する」という1対1の固定マッピングです。外部からは常に203.0.113.10宛てにアクセスすれば、社内の192.168.1.100に届きます。

ダイナミックNATの設定

複数の社内ホストに対して、グローバルIPのプールから空いているものを割り当てたい場合はダイナミックNATを使います。

Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# ip nat pool MYPOOL 203.0.113.20 203.0.113.30 netmask 255.255.255.0
Router(config)# ip nat inside source list 1 pool MYPOOL

ここで注意したいのは、プールのアドレス数より同時アクセスするホスト数が多いと、変換できないホストが出てくるという点です。実務ではこの上限を意識しておく必要があります。

PAT(overload)の設定

最も実用的で、家庭用ルーターから企業ネットワークまで広く使われているのがPATです。設定はダイナミックNATとほぼ同じで、最後にoverloadキーワードを付けるだけです。

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

この例では、プールの代わりにinterface GigabitEthernet0/1(外側インターフェース自身のIPアドレス)を使い、overloadを付けることでポート番号を使った多対1の変換を実現しています。グローバルIPが1つしかない環境(多くの企業や家庭のインターネット回線)では、この形が最も一般的です。

確認問題

社内の複数ホストが、外側インターフェースの1つのグローバルIPアドレスを共有してインターネットに出る設定として正しいコマンドはどれでしょう?

答えを見る

ip nat inside source list 1 interface GigabitEthernet0/1 overload です。overloadキーワードがポート番号を使った多対1変換(PAT)を意味します。プールを使わず外側インターフェースのアドレスをそのまま使う点もポイントです。

検証:show ip nat translations と show ip nat statistics

設定後は必ず変換テーブルを確認します。

Router# show ip nat translations
Pro  Inside global      Inside local       Outside local      Outside global
tcp  203.0.113.20:1025  192.168.1.10:1025  203.0.113.5:80     203.0.113.5:80

この出力から、192.168.1.10(inside local)が203.0.113.20(inside global)に変換されて、外部の203.0.113.5(outside local/global)と通信していることが読み取れます。PATの場合はポート番号(:1025など)まで表示されるのが特徴です。

変換の統計情報(ヒット数やアクティブな変換数)はshow ip nat statisticsで確認できます。

Router# show ip nat statistics
Total translations: 3 (0 static, 3 dynamic; 3 extended)

確認問題

show ip nat translationsの出力で、変換後のグローバルIPアドレスとポート番号が表示される列はどれでしょう?

答えを見る

Inside global列です。PATではIPアドレスに加えてポート番号(例:203.0.113.20:1025)まで表示され、同じグローバルIPを複数のホストが異なるポート番号で共有していることが確認できます。

トラブルシューティングの初手

NATが期待通り動かないときは、次の順で確認します。

  1. ip nat inside / ip nat outsideが正しいインターフェースに設定されているか
  2. ACLが変換対象のアドレス範囲を正しくカバーしているか(permit漏れがないか)
  3. show ip nat translationsに想定したエントリが現れているか
  4. ルーティングテーブルにグローバル側への経路があるか

意外と見落としがちなのが、ip nat insideip nat outside逆に設定してしまうミスです。変換の方向が逆転してしまい、期待通りに動きません。

試験でのポイント

CCNA試験では、staticとdynamic、PATのコマンド構文の違いを正確に見分けさせる問題が出やすいです。特に「poolを使うかinterfaceを使うか」「overloadが付くかどうか」がPATか通常のdynamic NATかを分ける決め手になります。またip nat inside/ip nat outsideの指定を忘れると変換自体が発生しない、という基本も忘れずに押さえておきましょう。

ゆみちゃん
ゆみ

static NATは1対1固定、dynamic NATはプールから動的に、PATはoverloadでポート番号を使った多対1。コマンドの違いは「pool」か「interface」か、そして「overload」の有無で見分けてね。次はDHCPとDNS、IPアドレスと名前解決の自動化を見ていくよ。