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
access-list 1… 変換対象とする社内アドレス範囲を定義ip nat pool… 変換に使うグローバルIPの範囲(プール)を定義ip nat inside source list 1 pool MYPOOL… ACLで指定したホストを、プールの中から動的に変換する
ここで注意したいのは、プールのアドレス数より同時アクセスするホスト数が多いと、変換できないホストが出てくるという点です。実務ではこの上限を意識しておく必要があります。
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が期待通り動かないときは、次の順で確認します。
ip nat inside/ip nat outsideが正しいインターフェースに設定されているか- ACLが変換対象のアドレス範囲を正しくカバーしているか(
permit漏れがないか) show ip nat translationsに想定したエントリが現れているか- ルーティングテーブルにグローバル側への経路があるか
意外と見落としがちなのが、ip nat insideとip 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アドレスと名前解決の自動化を見ていくよ。