HOME > コンテンツリスト > ラボ・シナリオ for CCNA > [ < 前へ 次へ > ]

スタティックNAT+ダイナミックNATを設定する

通常の会社では、インターネットからアクセスさせるインターネット公開サーバー (Web サーバーなど) とインターネットにアクセスするクライアントPCの両方が社内ネットワーク内にあります。(ただし、会社によっては社内に Web サーバーなどは置かずにレンタルサーバーを利用する場合もあります。)

このような場合は、スタティック NAT + ダイナミック NAT (もしくは PAT) を構成します。


ただ、実際のネットワークではセキュリティを考慮し、インターネットからアクセスさせるインターネット公開サーバーは社内の他のホストとは分離したネットワーク (DMZ) に置くのが一般的です。



今回は同一ネットワーク上に、インターネット公開サーバーとインターネットにアクセスする PC がある場合のシナリオを行います。
想定するネットワーク構成図

ラボ・シナリオで使用するネットワーク構成図
・6台の仮想 PC を起動するのはホスト PC のメモリ容量の関係で無理なので、次図のように各 PC とサーバーを共用する。
・物理 PC の VirtualBox 上に、PC-A、PC-B、PC-C の3つの仮想 PC を構成する。
・PC-A、PC-B は物理 PC に標準搭載している LAN ポートを使用するように VirtualBox を設定する。
・物理 PC に USB-LAN 変換ケーブルを1つ接続し、PC-C がそれを使用するように VirtualBox を設定する。



ISP から 200.10.10.8/29 のグローバルアドレスを与えられ、これを次のように使用するものとする。

  1. RT-A をネットワーク構成図に示す通り設定し、RT-B へのデフォルトルートを構成しなさい。
  2. < 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-A がローカルネットワークから受信したパケットをインターネット側へ転送するために設定します。
  3. RT-B をネットワーク構成図に示す通り設定し、200.10.10.8/29 のネットワークへ行くためのスタティックルートを構成しなさい。
  4. < RT-B >
    Router# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)# host RT-B
    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 から割り当てられたグローバルアドレスで、インターネット側の ISP ルータ (RT-B) は、固定でIPアドレスを割り当てた顧客向けには通常スタティックルートで設定します。
  5. 次の情報を基に RT-A でスタティック NAT とダイナミック NAT を設定しなさい。
  6. ISP から与えられたアドレスの範囲200.10.10.8/29
    スタティック NAT で使用するグローバルアドレス200.10.10.9~200.10.10.10
    スタティック NAT で変換するアドレス192.168.1.10 <-> 200.10.10.9
    192.168.1.11 <-> 200.10.10.11
    ダイナミック NAT で使用するグローバルアドレス200.10.10.11~200.10.10.13
    プール名INET
    ダイナミック NAT での変換を許可するローカルアドレスの範囲192.168.1.128/25
    < RT-A >
    RT-A(config)# ip nat inside source static 192.168.1.10 200.10.10.9  ← スタティック NAT の設定
    RT-A(config)# ip nat inside source static 192.168.1.11 200.10.10.10 ← スタティック NAT の設定
    RT-A(config)# access-list 1 permit 192.168.1.128 0.0.0.127 ← ダイナミック NAT で変換するアドレス範囲をアクセスリストにて設定
    RT-A(config)# ip nat pool INET 200.10.10.11 200.10.10.13 netmask 255.255.255.248  ← ダイナミック NAT の設定
    RT-A(config)# ip nat inside source list 1 pool INET       ← ダイナミック NAT の設定
    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#
    
  7. PC-A、PC-B、PC-C をネットワーク構成図に示す通り設定します。
  8. < PC-A >
    C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.128 255.255.255.0 192.168.1.1
    C:\> netsh interface ipv4 add address "イーサネット" 192.168.1.10 255.255.255.0
    C:\> netsh interface ipv4 add address "イーサネット" 192.168.1.11 255.255.255.0
    
    C:\> ipconfig
    
    Windows IP 構成
    
    イーサネット アダプター イーサネット:
    
       接続固有の DNS サフィックス . . . . .:
       IPv4 アドレス . . . . . . . . . . . .: 192.168.1.10
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       IPv4 アドレス . . . . . . . . . . . .: 192.168.1.11
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       IPv4 アドレス . . . . . . . . . . . .: 192.168.1.128
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
    
    C:\>
    
    < PC-B >
    C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.129 255.255.255.0 192.168.1.1
    
    C:\> ipconfig
    
    Windows IP 構成
    
    イーサネット アダプター イーサネット:
    
       接続固有の DNS サフィックス . . . . .:
       IPv4 アドレス . . . . . . . . . . . .: 192.168.1.129
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
    
    C:\>
    
    < PC-C >
    C:\> netsh interface ipv4 set address "イーサネット" static 161.14.1.128 255.255.255.0 161.14.1.2
    C:\> netsh interface ipv4 add address "イーサネット" 161.14.1.10 255.255.255.0
    
    C:\> ipconfig
    
    Windows IP 構成
    
    イーサネット アダプター ローカル エリア接続:
    
       接続固有の DNS サフィックス . . . . .:
       IPv4 アドレス . . . . . . . . . . . .: 161.14.1.10
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       IPv4 アドレス . . . . . . . . . . . .: 161.14.1.128
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       デフォルト ゲートウェイ . . . . . . .: 161.14.1.2
    
    C:\>
    
    仮想 PC には、サーバーのIPアドレスを追加アドレスとして設定します。

    GUI で見ると、PC-C の TCP/IPv4 のプロパティでは、161.14.1.128 のみ設定されていますが、


    TCP/IP 詳細設定では、161.14.1.128 と 161.14.1.10 の2つのアドレスが設定されています。
  9. RT-A で、sh ip nat translations コマンドを実行しなさい。
  10. < 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#
    
    スタティック NAT で構成したエントリのみリストされています。
  11. PC-C (161.14.1.128) から 200.10.10.9 と 200.10.10.11 宛てに ping を実行しなさい。
  12. < PC-C >
    C:\> ping -S 161.14.1.128 200.10.10.9   ← スタティック NAT のアドレス (社内の Web サーバー)
    
    200.10.10.9 に ping を送信しています 161.14.1.128 から 32 バイトのデータ:
    200.10.10.9 からの応答: バイト数 =32 時間 =4ms TTL=126
    200.10.10.9 からの応答: バイト数 =32 時間 =2ms TTL=126
    200.10.10.9 からの応答: バイト数 =32 時間 =1ms TTL=126
    200.10.10.9 からの応答: バイト数 =32 時間 =2ms TTL=126
    
    200.10.10.9 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    ラウンド トリップの概算時間 (ミリ秒):
        最小 = 1ms、最大 = 4ms、平均 = 2ms
    
    C:\>
    
    Windows 8.1 の ping では -S オプションを付けると、送信元アドレスを指定することができます。
    これで PC に2つ設定したIPアドレスのうち、どちらのIPアドレスを使って ping を実行するか指定できます。
    < PC-C >
    C:\> ping -S 161.14.1.128 200.10.10.11  ← ダイナミック NAT のアドレス
    
    200.10.10.11 に ping を送信しています 161.14.1.128 から 32 バイトのデータ:
    10.10.10.1 からの応答: 転送中に TTL が期限切れになりました。
    10.10.10.1 からの応答: 転送中に TTL が期限切れになりました。
    10.10.10.1 からの応答: 転送中に TTL が期限切れになりました。
    10.10.10.1 からの応答: 転送中に TTL が期限切れになりました。
    
    200.10.10.11 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:\>
    
    200.10.10.11 宛てへの ping は失敗しました。

    200.10.10.9 宛への ping は NAT テーブルの次のエントリを使用して 192.168.1.10 宛に変換されて社内の Web サーバーに届きます。
    --- 200.10.10.9        192.168.1.10       ---                ---
    
    しかし、200.10.10.11 宛への ping は NAT テーブルに該当するエントリがないため、そのパケットはどのホストにも届くことはありません。このように、インターネット側からのアクセスに対しては、NAT テーブルにあるエントリのアドレスしか使用できません。
  13. PC-A (192.168.1.128) から 161.14.1.10 へ ping を実行しなさい。
  14. < PC-A >
    C:\> ping -S 192.168.1.128 161.14.1.10   ← インターネット上の FTP サーバー
    
    161.14.1.10 に ping を送信しています 192.168.1.128 から 32 バイトのデータ:
    161.14.1.10 からの応答: バイト数 =32 時間 =3ms TTL=126
    161.14.1.10 からの応答: バイト数 =32 時間 =2ms TTL=126
    161.14.1.10 からの応答: バイト数 =32 時間 =3ms TTL=126
    161.14.1.10 からの応答: バイト数 =32 時間 =2ms TTL=126
    
    161.14.1.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    ラウンド トリップの概算時間 (ミリ秒):
        最小 = 2ms、最大 = 3ms、平均 = 2ms
    
    C:\>
    
  15. RT-A で、sh ip nat translations コマンドを実行しなさい。
  16. < 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       ---                ---
    icmp 200.10.10.11:1    192.168.1.128:1    161.14.1.10:1      161.14.1.10:1
    --- 200.10.10.11       192.168.1.128      ---                ---
    RT-A#
    
    PC-A のIPアドレス 192.168.1.128 と 200.10.10.11 の変換エントリが NAT テーブルに追加されました。
  17. 再度、PC-C (161.14.1.128) から 200.10.10.11 へ ping を実行しなさい。
  18. < PC-C >
    C:\> ping -S 161.14.1.128 200.10.10.11  ← ダイナミック NAT のアドレス
    
    200.10.10.11 に ping を送信しています 161.14.1.128 から 32 バイトのデータ:
    200.10.10.11 からの応答: バイト数 =32 時間 =6ms TTL=126
    200.10.10.11 からの応答: バイト数 =32 時間 =2ms TTL=126
    200.10.10.11 からの応答: バイト数 =32 時間 =2ms TTL=126
    200.10.10.11 からの応答: バイト数 =32 時間 =2ms TTL=126
    
    200.10.10.11 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    ラウンド トリップの概算時間 (ミリ秒):
        最小 = 2ms、最大 = 6ms、平均 = 3ms
    
    C:\>
    
    今度は ping が成功しました。

    これはダイナミック NAT により NAT テーブルに作られた以下のエントリを使って、200.10.10.11→192.168.1.128 のアドレス変換ができるようになったためです。
    --- 200.10.10.11       192.168.1.128      ---                ---
    
  19. RT-A で、ダイナミック NAT のタイムアウト値を 120 秒に設定しなさい。
  20. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# ip nat translation timeout 120
    RT-A(config)# ^Z
    RT-A#
    
  21. PC-C で FTP サーバーを利用できるようにしなさい。
  22. Windows 8.1 の場合 (Windows 7 も同様)

    Windows 8.1 には標準で FTP サーバー機能があるのですが、 FTP サーバー機能は IIS (インターネットインフォメーションサービス) の一部になっており、設定が若干煩雑なので、今回は外部ソフト Serva を使用します。Serva は非商用/個人で使用する場合は無料で利用できます。

    1) 下記サイトから使用している OS に合わせて Serva_Non-Supporter_32 もしくは Serva_Non-Supporter_64 をダウンロードする
    Serva のダウンロードサイト
    直接ダウンロード (現時点での最新版は v2.14) Serva_Non-Supporter_32_v2.1.4 Serva_Non-Supporter_64_v2.1.4

    2) ダウンロードした Serva を解凍し、アプリを起動させる


    3) [Settings] ボタンを押す


    4) [FTP] タブをクリックし、[FTP Server] にチェックを入れ、
    [Bind FTP to this address] にチェックを入れ、プルダウンメニューで [161.14.1.10] を選び、
    [FTP Server user accounts] にユーザ名 ftpuser とパスワード cisco を入れ、
    登録したユーザが FTP 接続してきた時の root ディレクトリを指定し、[OK] ボタンを押す。

    root ディレクトリは Serva アプリが入っているフォルダにしました。

    5) アプリを再起動させなさいという意味のポップアップが出るので、クローズボックスでアプリを終了し、再度起動させる。


    6) FTP サーバーが起動する。

  23. PC-B で Telnet サーバーを構成しなさい。
  24. Windows 8.1 の場合

    [スタート] ボタンを右クリック → [コントロールパネル] → [プログラム] → [Windows の機能の有効化または無効化] の順にクリックし、[Windows の機能] ダイアログボックスで、[Telnet サーバー] のチェックボックスをオンにする。



    次の4つのコマンドを実行する。
     1) sc config tlntsvr start=demand  ← Telnet サーバーサービスを手動で起動できるようにする
     2) net user telnetpcb cisco /add  ← Telnet で使用するユーザアカウント telnetuser を作成する (パスワード cisco)
     3) net localgroup telnetclients telnetpcbuser /add  ← telnetuser というユーザアカウントを telnetclients グループに所属させる
     4) net start telnet  ← Telnet サーバーサービスを起動する
    C:\> sc config tlntsvr start=demand
    [SC] ChangeServiceConfig SUCCESS
    
    C:\> net user telnetpcbuser cisco /add
    コマンドは正常に終了しました。
    
    
    C:\> net localgroup telnetclients telnetpcbuser /add
    コマンドは正常に終了しました。
    
    
    C:\> net start telnet
    Telnet サービスを開始します.
    Telnet サービスは正常に開始されました。
    
    C:\>
    
  25. PC-B から 161.14.1.10 へ ftp 接続を実行しなさい。
  26. < PC-B >
    C:\> ftp 161.14.1.10   ← インターネット上の FTP サーバー
    161.14.1.10 に接続しました。
    220 Browser Ftp Server.
    ユーザー (161.14.1.10:(none)): ftpuser
    331 Password required for this user.
    パスワード: cisco   ← 実際には表示はされない
    230 User Logged In.
    ftp>
    
  27. RT-A で、sh ip nat translations コマンドを実行しなさい。
  28. < 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       ---                ---
    --- 200.10.10.11       192.168.1.128      ---                ---
    tcp 200.10.10.12:49173 192.168.1.129:49173 161.14.1.10:21    161.14.1.10:21
    --- 200.10.10.12       192.168.1.129      ---                ---
    RT-A#
    
    PC-B のIPアドレス 192.168.1.129 と 200.10.10.12 の変換エントリが NAT テーブルに追加されました。
  29. PC-C から 200.10.10.12 へ telnet を実行しなさい。
  30. < PC-C >
    C:\> telnet -l telnetpcbuser 200.10.10.12
    
    Microsoft Telnet クライアントへようこそ エスケープ文字は 'CTRL+]' です パスワード情報を インターネット ゾーンのリモート コンピューターに送信しようとし ていますが、この操作は安全でない可能性があります。送信しますか? (y/n): n ← ここは no
    Welcome to Microsoft Telnet Service password: cisco ← 実際には表示はされない
    *=============================================================== Microsoft Telnet Server. *=============================================================== C:\>
    telnet が成功しました。
    NAT テーブルで 200.10.10.12 <-> 192.168.1.129 の変換を行っているので、これはインターネット上のホストから内部ネットワークにある PC-B に telnet が成功したことになります。

    NAT にはセキュリティ機能があるとよくいいますが、ダイナミック NAT では NAT テーブルにアドレス変換エントリが載っている間はインターネットから簡単に内部ネットワークの PC にアクセスが可能です。そして、Cisco ではデフォルトで 24 時間このアドレス変換エントリが保持されます。
  31. 120 秒後、RT-A で、sh ip nat translations コマンドを実行しなさい。
  32. < 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       ---                ---
    --- 200.10.10.11       192.168.1.128      ---                ---
    tcp 200.10.10.12:23    192.168.1.129:23   161.14.1.10:49174  161.14.1.10:49174
    tcp 200.10.10.12:49173 192.168.1.129:49173 161.14.1.10:21    161.14.1.10:21
    --- 200.10.10.12       192.168.1.129      ---                ---
    RT-A#
    
    今回のように、ダイナミック NAT のタイムアウト値を 24 時間から 120 秒に変更したとしても、現在接続しているセッションが切断されるまでは NAT によるアドレス変換エントリは維持されるので、外部から入ってこられる危険性は非常に高いです。ただし、現在のネットワークでは一般的にダイナミック NAT は使わず、ほとんど PAT を使用していますのでこのような心配は全くではありませんがほぼありません。
  33. PC-B から 161.14.1.10 への ftp 接続を切断しなさい。
  34. < PC-B >
    161.14.1.10 に接続しました。
    220 Browser Ftp Server.
    ユーザー (161.14.1.10:(none)): ftpuser
    331 Password required for this user.
    パスワード:
    230 User Logged In.
    ftp> quit
    221 Goodbye.
    
    C:\>
    
  35. PC-C から 200.10.10.12 への telnet を切断しなさい。
  36. < PC-C >
    *===============================================================
    Microsoft Telnet Server.
    *===============================================================
    C:\Users\telnetpcbuser> exit
    
    ホストとの接続が切断されました。
    
    C:\>
    
  37. 120 秒後、RT-A で、sh ip nat translations コマンドを実行しなさい。
  38. < 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       ---                ---
    --- 200.10.10.11       192.168.1.128      ---                ---
    RT-A#
    
    以下のエントリは、ダイナミック NAT のタイムアウト値を 120 秒に設定する前のものでしたので NAT テーブルに残っていますが
     --- 200.10.10.11       192.168.1.128      ---                ---
    
    以下のエントリは、設定した後のものでしたので NAT テーブルから消えています。
     --- 200.10.10.12       192.168.1.129      ---                ---
    
  39. 再度、PC-C から 200.10.10.12 へ telnet を実行しなさい。
  40. < PC-C >
    C:\> telnet -l telnetpcbuser 200.10.10.12
    接続中: 200.10.10.12...ホストへ接続できませんでした。 ポート番号 23: 接続に失敗
    しました
    
    C:\>
    
    NAT テーブルにないアドレス宛てのため、telnet は失敗します。
    ※ 次の「シナリオ」に続きます。