スタティック NAT は、社内 LAN にインターネット公開用の Web サーバーや Mail サーバーを立ち上げて、インターネット上の PC からそれらにアクセスできるようにするために使用します。 (社内ではプライベートアドレスを使用しているものとします)
- RT-A をネットワーク構成図に示す通り設定し、RT-B へのデフォルトルートを構成しなさい。
< RT-A >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-A
RT-A(config)# int f0/0
RT-A(config-if)# ip add 192.168.1.1 255.255.255.0
RT-A(config-if)# no shut
RT-A(config-if)# int f0/1
RT-A(config-if)# ip add 10.10.10.1 255.255.255.0
RT-A(config-if)# no shut
RT-A(config-if)# ip route 0.0.0.0 0.0.0.0 10.10.10.2
RT-A(config)# ^Z
RT-A#
インターネットへの接続口のルータはデフォルトルートを設定し、ローカルで使用していない宛先宛ての全てのパケットをインターネット側へ転送します。
- RT-B をネットワーク構成図に示す通り設定し、200.10.10.8/29 のネットワークへ行くためのスタティックルートを構成しなさい。
< RT-B >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host PC-C
RT-B(config)# int f0/0
RT-B(config-if)# ip add 10.10.10.2 255.255.255.0
RT-B(config-if)# no shut
RT-B(config-if)# int f0/1
RT-B(config-if)# ip add 161.14.1.2 255.255.255.0
RT-B(config-if)# no shut
RT-B(config-if)# ip route 200.10.10.8 255.255.255.248 10.10.10.1
RT-B(config)# ^Z
RT-B#
200.10.10.8/29 は ISP から割り当てられたグローバルアドレスで、この中の 200.10.10.9 と 200.10.10.10 をスタティック NAT で使用します。インターネット側の ISP ルータ (RT-B) は、固定でIPアドレスを割り当てた顧客向けには通常スタティックルートで設定します。
- 次のアドレス変換が行えるように RT-A でスタティック NAT を設定しなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# ip nat inside source static 192.168.1.10 200.10.10.9 ← 192.168.1.10 <-> 200.10.10.9
RT-A(config)# ip nat inside source static 192.168.1.11 200.10.10.10 ← 192.168.1.11 <-> 200.10.10.10
RT-A(config)# int f0/0
RT-A(config-if)# ip nat inside ← F0/0 側を内部ネットワークに指定
RT-A(config-if)# int f0/1
RT-A(config-if)# ip nat outside ← F0/1 側を外部ネットワークに指定
RT-A(config-if)# ^Z
RT-A#
インターネットの接続口で使用している NAT では、社内側 LAN を内部ネットワークといい、インターネット側を外部ネットワークといいます。
そして、この内部ネットワーク内で使用しているアドレスを内部ローカルアドレス (192.168.1.10 や 192.168.1.11) といい、内部ネットワーク内の PC が外部ネットワーク (インターネット) に出て行く時に使用するアドレス (NAT により変換するグローバルアドレス) を内部グローバルアドレス (200.10.10.9 や 200.10.10.10) といいます。内部グローバルアドレスは通常、インターネットに接続するために ISP から割り当てられたアドレスです。そして、インターネット上のホストのアドレスが外部グローバルアドレス (161.14.1.2) です。
[スタティック NAT の設定手順]
- 変換する内部ローカルアドレスと内部グローバルアドレスを1対1で定義
ip nat inside source static [内部ローカルアドレス] [内部グローバルアドレス]
- 内部ネットワークの指定
ip nat inside
- 外部ネットワークの指定
ip nat outside
NAT で使用する4つのアドレス
Inside local | 内部ローカルアドレス | 内部ネットワークのホストに割り当てるアドレスで、通常はプライベートアドレス。 |
Inside global | 内部グローバルアドレス | 内部ネットワークのホストが外部ネットワークのホストと通信するためのグローバルアドレスで、通常は ISP から割り当てられるアドレス。 |
Outside local | 外部ローカルアドレス | 内部ネットワークから見た外部ネットワーク上のホストのアドレスで、通常は外部グローバルアドレスと同じ。 |
Outside global | 外部グローバルアドレス | 外部ネットワーク上のホストに割り当てられているグローバルアドレスで、そのホストの管理者が割り当てる。 |
ip nat inside source static コマンドで内部ネットワークのアドレス変換を行い、ip nat outside source static コマンドで外部ネットワークのアドレス変換を行います。ip nat outside source static コマンドを設定した場合は、外部ローカルアドレスと外部グローバルアドレスは異なるアドレスになります。ただし、特殊なケース以外は、通常、ip nat outside source static コマンドを使用しません。
- RT-A で、sh ip nat translations コマンドを実行しなさい。
< RT-A >
RT-A# sh ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 200.10.10.9 192.168.1.10 --- ---
--- 200.10.10.10 192.168.1.11 --- ---
RT-A#
sh ip nat translations コマンドで NAT テーブルを表示します。
スタティック NAT で設定した通り、正しく NAT テーブルが構成されています。
- Web サーバー、Mail サーバー、インターネット PC をネットワーク構成図に示す通り設定しなさい。
< Web サーバー >
C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.10 255.255.255.0 192.168.1.1
C:\> ipconfig
Windows IP 構成
イーサネット アダプター ローカル エリア接続:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.10
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
C:\>
< Mail サーバー >
C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.11 255.255.255.0 192.168.1.1
C:\> ipconfig
Windows IP 構成
イーサネット アダプター ローカル エリア接続:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.11
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
C:\>
< インターネット PC >
C:\> netsh interface ipv4 set address "イーサネット" static 161.14.1.10 255.255.255.0 161.14.1.2
C:\> ipconfig
Windows IP 構成
イーサネット アダプター ローカル エリア接続:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 161.14.1.10
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 161.14.1.2
C:\>
- RT-A で、debug ip nat コマンドを実行しなさい。
< RT-A >
RT-A# debug ip nat
IP NAT debugging is on
RT-A#
debug コマンドで、NAT 変換の動作を確認することができます。
- インターネット上の PC から社内の Web サーバーへ ping を実行しなさい。
< インターネット PC >
C:\> ping 200.10.10.9 ← Web サーバーのIPアドレス
200.10.10.9 に ping を送信しています 32 バイトのデータ:
200.10.10.9 からの応答: バイト数 =32 時間 =5ms TTL=126
200.10.10.9 からの応答: バイト数 =32 時間 =2ms TTL=126
200.10.10.9 からの応答: バイト数 =32 時間 =2ms TTL=126
200.10.10.9 からの応答: バイト数 =32 時間 =2ms TTL=126
200.10.10.9 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 2ms、最大 = 5ms、平均 = 2ms
C:\>
- RT-A で、debug の結果を確認しなさい。(自動で表示されます)
< RT-A >
RT-A#
*Nov 24 22:54:16.471: NAT*: s=161.14.1.10, d=200.10.10.9->192.168.1.10 [18801] ← エコー要求
*Nov 24 22:54:16.475: NAT*: s=192.168.1.10->200.10.10.9, d=161.14.1.10 [5566] ← エコー応答
エコー要求 (外部 → 内部) は、宛先アドレス (d) が 200.10.10.9->192.168.1.10 に変換され、
エコー応答 (内部 → 外部) は、送信元アドレス (s) が 192.168.1.10->200.10.10.9 に変換されています。
- インターネット上の PC から社内の Mail サーベーへ ping を実行しなさい。
< インターネット PC >
C:\> ping 200.10.10.10 ← Mail サーバーのIPアドレス
200.10.10.10 に ping を送信しています 32 バイトのデータ:
200.10.10.10 からの応答: バイト数 =32 時間 =5ms TTL=126
200.10.10.10 からの応答: バイト数 =32 時間 =2ms TTL=126
200.10.10.10 からの応答: バイト数 =32 時間 =2ms TTL=126
200.10.10.10 からの応答: バイト数 =32 時間 =2ms TTL=126
200.10.10.10 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 2ms、最大 = 5ms、平均 = 2ms
C:\>
- RT-A で、debug の結果を確認しなさい。(自動で表示されます)
< RT-A >
RT-A#
*Nov 24 22:56:03.619: NAT*: s=161.14.1.10, d=200.10.10.10->192.168.1.11 [12992] ← エコー要求
*Nov 24 22:56:03.623: NAT*: s=192.168.1.11->200.10.10.10, d=161.14.1.10 [27205] ← エコー応答
エコー要求 (外部 → 内部) は、宛先アドレス (d) が 200.10.10.10->192.168.1.11 に変換され、
エコー応答 (内部 → 外部) は、送信元アドレス (s) が 192.168.1.11->200.10.10.10 に変換されています。
- RT-A で、sh ip nat translations コマンドを実行しなさい。
< RT-A >
RT-A# sh ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 200.10.10.9:1 192.168.1.10:1 161.14.1.10:1 161.14.1.10:1
--- 200.10.10.9 192.168.1.10 --- ---
icmp 200.10.10.10:1 192.168.1.11:1 161.14.1.10:1 161.14.1.10:1
--- 200.10.10.10 192.168.1.11 --- ---
RT-A#
スタティックで設定した以下のエントリは、NAT テーブルから消えることはありませんが
--- 200.10.10.9 192.168.1.10 --- ---
--- 200.10.10.10 192.168.1.11 --- ---
ping 実行により追加された以下のエントリは、60秒後に NAT テーブルから消えます。
(IOS のバージョンによって表示されない場合あり)
icmp 200.10.10.9:1 192.168.1.10:1 161.14.1.10:1 161.14.1.10:1
icmp 200.10.10.10:1 192.168.1.11:1 161.14.1.10:1 161.14.1.10:1
- PC-C で telnet クライアントと tftp クライアントが使用できるようにしなさい。
Windows 8.1 の場合
[スタート] ボタンを右クリック → [コントロールパネル] → [プログラム] → [Windows の機能の有効化または無効化] の順にクリックし、[Windows の機能] ダイアログボックスで、[Telnet クライアント] と [TFTP クライアント] のチェックボックスをオンにする。
- PC-C から Web サーバー (200.10.10.9) 宛てに telnet および tftp を実行しなさい。
< PC-C >
C:\> telnet 200.10.10.9 ← telnet
接続中: 200.10.10.9...ホストへ接続できませんでした。 ポート番号 23: 接続に失敗しました
C:\> tftp 200.10.10.9 GET abc ← tftp
接続要求に失敗しました
C:\>
Web サーバーには、telnet/tftp サーバーは起動していませんので接続は失敗しますが、接続を試みたことによるアドレス変換は行われています。 (ただし、60 秒以上経ってリストから消えている場合あり)
- RT-A で、sh ip nat translations コマンドを実行しなさい。
< RT-A >
RT-A# sh ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 200.10.10.9:23 192.168.1.10:23 161.14.1.10:49160 161.14.1.10:49160
udp 200.10.10.9:69 192.168.1.10:69 161.14.1.10:49161 161.14.1.10:49161
--- 200.10.10.9 192.168.1.10 --- ---
--- 200.10.10.10 192.168.1.11 --- ---
RT-A#
icmp が出力結果に残っている場合もあり。
スタティック NAT で設定した通りにアドレス変換を行っています。
Outside 側のポート番号 (49160,49161) は、telnet/tftp を実行した側の機器 (今回は PC-C) が勝手に決めた番号です。