【ネットワーク放浪記#1】Cisco Packet Tracer

ネットワークの学習録として、連載していこうかと思っています。

今回はその第一回で、Cisco Packet Tracerを使ったネットワークの学習を紹介します。

※初心者が書いた内容ですので、正しさは一切保証されません。注意してください。

結論

まずは結論から。

本記事のゴールは、以下の内容を理解することです。

  • レイヤ2の概要を理解し、簡単な設定ができる
  • レイヤ3の概要を理解し、簡単な設定ができる

手作業レベルで言うと、次のような内容を理解できることがゴールです。

  • レイヤ2:例えば、次のarpテーブルやmacアドレステーブルを見て、レイヤ2の通信を確認できること
C:\>arp -a
  Internet Address      Physical Address      Type
  192.168.0.2           0002.4a58.cdd5        dynamic
  192.168.0.3           000a.f3bc.d790        dynamic
Switch#show mac-address-table 
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----

   1    0002.4a58.cdd5    DYNAMIC     Fa0/2
   1    000a.f3bc.d790    DYNAMIC     Fa0/3
   1    00e0.f939.b3e6    DYNAMIC     Fa0/1
  • レイヤ3:例えば、次のルーティングテーブルやtracerouteなどを見て、レイヤ3の通信を確認できること
C:\>netstat  -r

Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0    192.168.0.254     192.168.0.1       1
Default Gateway:      192.168.0.254
===========================================================================
Persistent Routes:
  None


C:\>tracert 10.0.0.1

Tracing route to 10.0.0.1 over a maximum of 30 hops: 

  1   0 ms      0 ms      0 ms      192.168.0.254
  2   0 ms      0 ms      0 ms      10.0.0.1

Trace complete.
Router#show ip interface brief 
Interface              IP-Address      OK? Method Status                Protocol 
FastEthernet0/0        192.168.0.254   YES manual up                    up 
FastEthernet0/1        10.0.0.254      YES manual up                    up 

さらに言うと、pingを打った時のパケットの流れを、以下のようにイメージ出来ることがゴールです。

Cisco Packet Tracerとは

まず、「企業で使われるネットワーク製品の多くは、Cisco製品である」ということを出発点とします。

実際に、2021年のネットワーク機器の世界シェア率は、Cisco製品が46.6%で、ダントツ1位となっているそうです(情報源)。

つまり、ネットワーク機器を学習するのであれば、まずはCisco製品に触れることが王道となるかと思います。

しかし、実機を用意するとなると、コストが高すぎます。

そこで、Cisco Packet Tracerというものが役に立ちます。

これは、Ciscoが公式リリースしているソフトで、Cisco製品を仮想的に組むことが出来ます。

インストール方法

Cisco Packet Tracerをインストールするには、少しばかり面倒な手続きが必要です。

以下、インストール方法です。

  • まず、ココにアクセスし、アカウント登録します
  • メールが届くので、アカウントを有効化します
  • ログインします
  • ココにアクセスし、「Get Started」を押下
  • 右下の、「cisco Networking Academy」を押下
  • 情報を入力し、「Continue」を押下
  • 「1.0 Install Cisco Packet Tracer」を押下
  • 下の方へスクロールすると、ダウンロードリンクがあるので押下
  • 下の方へスクロールすると、それぞれのOSのダウンロードリンクがあるので押下
  • ダウンロード後、インストールし、起動します
  • ログインが求められたら、適宜ログインしてください
  • このような画面がでたら、完了です

ついでに、便利な設定を追加しておきます

  • 「設定」っぽいところを押下します
  • 「Interface」タブの「Always Show Port …..」にチェックを入れます

(これにより、インターフェースのポート番号が常に表示されます)

  • 「Font」タブの「Text」系を「White」に、「Background」系を「Black」にします

(私の嗜好なので、別にこれはやらなくても良いですが)

以上で、準備が整いました。

レイヤ2:PC同士

手始めに、2台のPCをLANケーブルでつなげる、という単純な構成を作っていきます。

完成図はこんな感じです。

物理構成

※多くの日本語の記事では、物理構成について触れていないことが多いです。それ故、私は、直感的なイメージが掴めなかったので、本記事はここを重点的に説明したいです

  • まずは、「Physical」というボタンを押下します
  • 次に、「Home City」>「Corporate Office」を押下
  • すると、いくつかの部屋があるので、「Main Wiring Closet」を押下
  • 部屋の中はまだ何も無いので、右上の「ラック」と「テーブル」のアイコンを押下します

すると、こんな感じで配置されるかと思います

これで、物理的な環境を整えることができました。

論理構成

次は、論理的にネットワークを構成していきます。

  • 左上の「Logical」を押下します
  • 左下のPCっぽいアイコンを押下し、2台配置します。
  • イナズマみたいなアイコンをクリックし、左から4番目のクロスオーバーケーブルを押下します

(なぜクロスケーブルを使うかと言うと、基本的にPCのLAN差込口はMDIなので、配線をクロスしないと送信と受信がぶつかってしまうからです。詳しくはこの辺りをご参考にどうぞ)

  • クロスケーブルを選択した状態でPCをクリックし、FastEthenet0に割り当てます
  • 次に、左側のPCをダブルクリックし、「Configタブ」>「FastEthenet0」>「IPv4 Address」を次のように設定します
  • 同様に、右側のPCには、「192.168.0.2」を設定します

この状態で、もう一度「Physical」を見てみます。

すると、こんな感じでPCが配置されています。

PCが2台あり、互いにLANケーブルをぶっ刺している、ということです。

これにより、これらのPC同士は、同一ネットワーク上に存在していることになるので、通信ができるはずです!

では、それを確認してみます。

  • 「Logical」に戻ります。
  • 左側のPCをダブルクリックし、「Desktopタブ」>「Command Prompt」を押下
  • まずは、「arp -a」コマンドを入力してみます

arpとは、IPアドレスからMACアドレスを調べるプロトコルです。)

C:\>arp -a
No ARP Entries Found

まだ、ARPテーブルが存在しないようです。

それもそのはず、まだ、お隣さんと通信していないからです。

では、pingでお隣さんにご挨拶してみます。

C:\>ping 192.168.0.2

Pinging 192.168.0.2 with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time=25ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 25ms, Average = 6ms

しっかりと、返事してくれてます。

この状態で、もう一度ARPテーブルを確認してみます。

C:\>arp -a
  Internet Address      Physical Address      Type
  192.168.0.2           0090.2b44.1716        dynamic

「192.168.0.2」というIPアドレスは「0090.2b44.1716」というMACアドレスの端末ですよ、という紐付けが出来ていますね。

ここで重要なのは、MACアドレスベースで通信をしている、ということです。

(素人の憶測ですが、まずは「ARPリクエスト」により相手のMACアドレスを把握、MACアドレステーブルを作成し、それ以降はこのMACアドレステーブルを参照して、MACアドレスベースで通信しているのだと思います)

つまり、このPC間の通信は、レイヤ2である、と言えると思います。

レイヤ2:スイッチ

一般的なパソコンは、LANケーブルの差込口が1つしかありません。

そうすると、単純な理屈で考えれば、3台以上のパソコンを同一ネットワーク上に接続することが出来ないです。

そこで登場するのが、レイヤ2スイッチというものです。

では、L2スイッチを使い、3台のパソコンを同一ネットワーク上に接続してみます。

完成図はこんな感じです。

論理構成

  • まず、バックスペースキーのようなアイコンを押下した後に、LANケーブルを押下し、削除します
  • PCをもう一台追加し、IPを「192.168.0.3」に設定しておきます
  • 平たい直方体のアイコンを押下し、「2960」を設置します(これがL2スイッチ)
  • ケーブルですが、左から3番目の「ストレートケーブル」を使います

(PC側はMDIでスイッチ側はMDI-Xなので、ストレートで接続しないと送信と受信がぶつかってしまうためです。詳しくはコチラ

(ただ、現代のスイッチはAuto MDI/MDI-Xという機能を持っており、特にケーブルの種類を意識する必要は無いみたいです)

  • 3台のPCを、L2スイッチに接続します

Cisco IOSの説明

ここで、初めてCisco製品が登場したので、少しばかり、その説明をしようと思います。

「スイッチ」という仰々しい名前をしていますが、結局のところ、OSの入ったパソコンです。

そのOSを、Cisco IOSというらしく、その概要をざっくり説明します。

Cisco IOSには、モードという概念があり、以下のような階層になっているらしいです。

モード画面表示操作権限
ユーザモードRouter>基本設定の確認のみ
特権モードRouter#ユーザモードに出来ることは全てでき、
グローバルコンフィグレーションモードに昇格可能
グローバル
コンフィグレーションモード
Router(config)#基本設定が可能。
これ以下の(config-〜〜)モードに昇格可能
インターフェース
コンフィグレーションモード
Router(config-if)#インターフェース関連の設定が可能
ライン
コンフィグレーションモード
Router(config-line)#コンソールや回線の設定が可能
ルータ
コンフィグレーションモード
Router(config-router)#ルーティングの設定が可能

御託はともかく、触ってみることにします。

  • L2スイッチをダブルクリックし、「CLI」タブを開きます

CLI画面でエンターを何回か押すと、まずはユーザモードになっていることが分かります。

ついでに、「show version」と入力し、ちゃんとCisco IOSであることを見てみます

Tab補完が効くので、積極的にTabを使うと良いです

Switch>
Switch>
Switch>show version
Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 15.0(2)SE4, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2013 by Cisco Systems, Inc.
Compiled Wed 26-Jun-13 02:49 by mnguyen
...........省略

Cisco IOS 15.0らしいですね。

次に、特権モードに昇格することを考えます。

  • 「?」を入力し、使用できるコマンドを確認します

基本的に、「?」を入力すれば、次に何が入力できるかが分かります

Switch>?
Exec commands:
  connect     Open a terminal connection
  disable     Turn off privileged commands
  disconnect  Disconnect an existing network connection
  enable      Turn on privileged commands
  exit        Exit from the EXEC
  logout      Exit from the EXEC
  ping        Send echo messages
  resume      Resume an active network connection
  show        Show running system information
  ssh         Open a secure shell client connection
  telnet      Open a telnet connection
  terminal    Set terminal line parameters
  traceroute  Trace route to destination
  • 「enable」で、特権モードに昇格できそうなので、入力します
Switch>enable 
Switch#
Switch#

特権モードになりました。

  • 特権モードではどんなコマンドが使えるか確認します
Switch#?
Exec commands:
  clear       Reset functions
  clock       Manage the system clock
  configure   Enter configuration mode
  connect     Open a terminal connection
  copy        Copy from one file to another
  debug       Debugging functions (see also 'undebug')
  delete      Delete a file
  dir         List files on a filesystem
  disable     Turn off privileged commands
  disconnect  Disconnect an existing network connection
  enable      Turn on privileged commands
  erase       Erase a filesystem
  exit        Exit from the EXEC
  logout      Exit from the EXEC
  more        Display the contents of a file
  no          Disable debugging informations
  ping        Send echo messages
  reload      Halt and perform a cold restart
  resume      Resume an active network connection
  setup       Run the SETUP command facility
  show        Show running system information

たくさんありますね。

  • 「configure」でコンフィグレーションモードに昇格できそうなので、入力し、その後に「?」を入力します
Switch#configure ?
  terminal  Configure from the terminal
  <cr>
  • 「terminal」しかないので、それを入力します
Switch#configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#

グローバルコンフィグレーションモードに昇格できました。

という具合に、、色々と触ってみると面白いです。

話を戻すと、、

さて、話を戻します。

現状、3台のPCが、同一セグメント上に存在しているはずです。

では、1台目のPCから、他のPCへpingを打ち、ついでにARPテーブルも確認してみます。

C:\>ping 192.168.0.2

Pinging 192.168.0.2 with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time=8ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 8ms, Average = 2ms

C:\>ping 192.168.0.3

Pinging 192.168.0.3 with 32 bytes of data:

Reply from 192.168.0.3: bytes=32 time<1ms TTL=128
Reply from 192.168.0.3: bytes=32 time<1ms TTL=128
Reply from 192.168.0.3: bytes=32 time=1ms TTL=128
Reply from 192.168.0.3: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.3:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms

C:\>arp -a
  Internet Address      Physical Address      Type
  192.168.0.2           0090.2b44.1716        dynamic
  192.168.0.3           0030.f2bb.735a        dynamic

ちゃんと繋がっていますね。

ここでも重要なのは、MACアドレスベースのレイヤ2通信である、ということです。

物理構成

物理構成も見てみます。

なんともお粗末な置き方ですが、L2スイッチを挟んでネットワークが繋がってそうですよね。

この構成は、言ってみれば、社内の一部屋だけで閉じたネットワークです。

同じ部屋にいる3台のPCだけでしか、通信することができないわけです。

レイヤ3

別のネットワーク上に接続するにはどうしたら良いのか。。

そこでレイヤ3が登場します。

例えば、こんな感じです。

部屋が3つあり、上2つの部屋はそれぞれ「192.168.0.0/24」と「10.0.0.0/24」のセグメントを持っています。

下の部屋にはルーターがあり、「192.168.0.0/24」と「10.0.0.0/24」のセグメント間をうまいことルーティングしてくれます。

ここで重要なのは、ルーターやL3スイッチは、IPアドレスベースで通信経路を制御していて、つまり、レイヤ3通信である、ということです。

論理構成はこんな感じです。

あとは、パケットの流れをシミュレーションしてみるのも面白いです。

(pingなどがうまく通らないときなど、シミュレーターを使って、どこで詰まっているかなどを確認できます。他にも、pingを打ったときのARPリクエストの様子なども見れるので、面白いです)

さらに、上記のようなオフィスを別のエリアに作り、オフィス間の通信をしてみる、というのも面白いです。

機器の細かな設定は、次の記事におまかせします。

(YouTubeの自動翻訳字幕を使えば、英語が苦手な私でも、難なく学べました)

おさらい

最後におさらいとして、「192.168.0.0/24」から「10.0.0.0/24」へのpingの流れを見てみます。

  • 最初に、PC, L2スイッチ, ルーターは、まだお互いのMACアドレス情報を知っていないです(ARPテーブルやMACアドレステーブルにお互いの情報が無い)
  • この状態で「192.168.0.1」ホストが、「10.0.0.1」へpingを打ちます
  • 192.168.0.1は、ARPテーブルが無いので、自身が持ってるインターフェース(今だとFa0のみ)にARPリクエスト(ブロードキャスト)を投げます
  • その先にはL2スイッチがいるのですが、L2スイッチもMACアドレステーブル(L2スイッチはMACアドレスまでしか見ないので、ARPテーブルを持つ必要がない)をまだ持っていないので、繋がってるインターフェース(今だとFa0/2〜0/4)にARPリクエストを横流しします(ブロードキャスト)
  • すると、「10.0.0.1」じゃないPC達は自分に関係のないパケットなので破棄しますが、ルーターは、何らかの応答を返しています(何を返しているのでしょう?)
  • というわけで、1回目のpingは成功しない、という結果になります
  • しかし、次にpingを打った時は、ルーターが「10.0.0.0/24」へパケットを流してくれます
  • すると、右側のL2スイッチでも同様にブロードキャストが行われ、「10.0.0.1」が応答を返してくれます
  • というわけで、2回目移行のpingは見事に成功し、めでたしめでたし、です

という具合に、平たく言うと、L2とL3の伝言ゲームをしているわけですね。。

(わかったような、わからないような?)

単純化すると、

  • レイヤ2スイッチは、MACアドレステーブルを参照して制御する(それ以上のレイヤは見ずにデータを受け流す)
  • レイヤ3スイッチやルーターは、ルーティングテーブルやARPテーブルまで参照して制御する(それ以上のレイヤは見ずにデータを受け流す)

という理解で落ち着くことにします。

おべんきょう

その他、この辺も学習しておきたいなぁ、という備忘録です。

Cisco製品に限った話でいうと、この本がとても詳しく解説してくれています。

※アフィリリンクじゃないです