Cisco Packet Tracerを使ってみよう

# ➊はじめに
ネットワークの勉強をするのに無料で学習できる「**Cisco Packet Tracer**」という無料アプリを使ってみました。このアプリは、ネットワークトポロジーをサクッと作って、シミュレーションすることができるので面白いです。ただ、CiscoのルータやSwitchなどに対して参照や設定を行う場合は、**Ciscoのコマンドをある程度理解しておく必要があります**。このあたりも含めて、覚書程度にざっくりとまとめておきたいと思います。
![はじめに.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/4d84f6e9-0329-f58e-ace0-d0e5f673dad9.png)

# ➋具体的に何をするか
## (1)🙂やること
「**Cisco Packet Tracer**」アプリを使用し、ルーティング処理の基本である、「**スタティックルート**」と「**ダイナミックルート**」の処理を実践して学びたいと思います。

## (2)📝まずはお勉強
まずは、ルーティングに関して簡単なお勉強しておきませぅ！

### ⬢スタティックルート
`スタティックルート`は、ユーザが手動で設定したルーティング情報を使用して経路を決定する方法です。経路は自動的にはアップデートされないので、ネットワークに問題が発生したり、ネットワークを変更する場合、ユーザが手動でルーティング情報を再設定する必要があります。

### ⬢ダイナミックルート
`ダイナミックルート`とは、ルーティングプロトコルによりルーターに動的に追加されるルートです。ネットワークに問題が発生したり、ネットワークを変更した場合でも、自動的にルートを設定することができます。主に、ディスタンスベクタ型ルーティングプロトコルとリンクステート型ルーティングプロトコルがあります。

#### ①ディスタンスベクタ型ルーティングプロトコル
`ディスタンスベクタ型ルーティングプロトコル`とは、隣接するルータ間でルーティングテーブル(経路表)を交換し合い、どの隣接ルータを経由すれば最短のホップ数で宛先に届くかを基準に経路を決定する方式です。

代表的なものに`RIP`があります。`RIP`は、「Rest In Peace」の略ではなく、「**Routing Information Protocol**」の略です。

#### ②リンクステート型ルーティングプロトコル
`リンクステート型ルーティングプロトコル`とは、隣接ルータのリストを送受信し合い、ネットワーク内でどのルータとどのルータが繋がっているのかを表すデータベースを構築し、この接続情報を元に、宛先までの最短の経路を探索して経路を決定する方式です。

代表的なものに`OSPF`があります。`OSPF`は、「**Open Shortest Path First**」の略です。

### ⬢RIPとOSPFの違い
⬢RIPとOSPFの違いについて、簡単にまとめておきます。初めてRIP、OSPFを勉強する初学者は、大体こんな感じと思っていれば良いとのことです。
![RIP-OSPF違い表.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/04d3b38e-fb85-7a8d-162e-71d584d18595.png)

# ➌「**Cisco Packet Tracer**」インストール
**Cisco Packet Tracer**のダウンロードページは以下ですが、「`Skills for All`」のアカウントもしくは「`Cisco Network Academy`」を持っていないとダウンロードできません。持っていない方は新規に作成しログインしてください。便利なのは、「`Googleアカウント`」を持っていれば、登録などせずにそれでログインすることもできます。サクッとやってみたい方は、こちらでログインするのをオススメいたします。

> https://skillsforall.com/resources/lab-downloads

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/70b63c52-45b0-1f8f-42e8-15b55c376edc.png">　<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/5090261e-e17d-a7dd-62f9-306db8dd5b8b.png">


※「**Cisco Packet Tracer**」アプリは、Mac、Ubuntu、Windows用があります。

# ➍ネットワークトポロジー
### ⬢ネットワークトポロジー
`192.168.1.1のPC0`から`192.168.6.1のPC1`へ双方向通信を行う、以下のようなネットワークトポロジーをベースに考えてみます。

![ネットワークトポロジー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/936f5bc4-80df-d571-a57f-54016b54a4e3.png)

### ⬢「**Cisco Packet Tracer**」データの共有
「**Cisco Packet Tracer**」で上記のようなネットワークトポロジーは簡単に作れますが、とりあえず作るのが面倒だけどちょっとルーティングの処理のみ設定してみたいという方は、以下からダウンロードしてください。Google Driveに「**Cisco Packet Tracer**」のデータを公開しておきました。

こちらの共有ファイルは、「機材(PC、Switch、Router、ケーブル)の設置とIPアドレス設定」までしかしておらず、ルーティングの処理はまだ入れておりません。以下の手順に沿って一緒に実施しましょう。

> ネットワークトポロジー(IPアドレス設定まで)
> https://drive.google.com/file/d/1nj3KRkNW-G6Kq6JxIQCDb1-ws8Fag3Z6/view?usp=sharing

# ➎Cisco Router設定におけるモード
### ⬢コマンドライン インターフェイス
「**Cisco Packet Tracer**」でRouterやSwitchをいじくる場合、以下のインタフェース(`CLI`：コマンドライン インターフェイス)が用意されています。
![CiscoのRouterコンソール](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/1d091f0a-e1b7-bd89-35a7-84d21c295b11.png)

### ⬢コマンド モード
CLIでは、各モードにより実行できる権限などが異なります。以下、簡単にまとめておきます。
![CLIモード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/1ae92189-ff52-7999-6082-9f22d93cc16a.png)


### ⬢コマンド
コマンドは以下の「ネットワーク入門サイト」が見やすかったです。

> https://beginners-network.com/cisco-catalyst-command/

# ➏スタティックルートの設定例
![スタティックルートトポロジー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/c6e16660-7bd3-b7e0-644b-1496f8c3126f.png)

## (1)✍🏻ルーティング設定
### ⬢Router1の設定
`192.168.6.0`向けのルーティング情報として、`192.168.2.254`と`192.168.3.254`と2つのルートを設定しておくと、勝手にラウンドロビンにより経路を選択してくれます。

```text
en
conf t
ip route 192.168.4.0 255.255.255.0 192.168.2.254
ip route 192.168.5.0 255.255.255.0 192.168.3.254
ip route 192.168.6.0 255.255.255.0 192.168.2.254
ip route 192.168.6.0 255.255.255.0 192.168.3.254
```

### ⬢Router2の設定
```text
en
conf t
ip route 192.168.1.0 255.255.255.0 192.168.2.1
ip route 192.168.6.0 255.255.255.0 192.168.4.254
```

### ⬢Router3の設定
```text
en
conf t
ip route 192.168.1.0 255.255.255.0 192.168.3.1
ip route 192.168.6.0 255.255.255.0 192.168.5.254
```

### ⬢Router4の設定
帰りも同様、`192.168.1.0`向けのルーティング情報として、`192.168.4.1`と`192.168.5.1`と2つのルートを設定しておくと、勝手にラウンドロビンにより経路を選択してくれます。
```text
en
conf t
ip route 192.168.2.0 255.255.255.0 192.168.4.1
ip route 192.168.3.0 255.255.255.0 192.168.5.1
ip route 192.168.1.0 255.255.255.0 192.168.4.1
ip route 192.168.1.0 255.255.255.0 192.168.5.1
```
## (2)👉🏻結果
`PC0 → PC1`への通信において、`Router1`の振り分け先として、1回目は`Router2`、2回目は`Router3`とラウンドロビンにより経路が変更されているのが分かります。`Router2`経由と`Router3`経由の通信パケット(通信量ではない)が半分ずつになるのは良いのですが、例えば`Router2`が故障した場合、`Router1,4`のルーティング情報を手動で変更しなければ、通信できる場合と通信できない場合が出てきてしまいます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/a45a2651-2535-3533-0f78-f576cc402add.gif">

### ⬢「Cisco Packet Tracer」データの共有
> 実施した結果は、GoogleDriveにて共有しています。ダウンロードして、「Cisco Packet Tracer」で開いてみてください。
> 
> `Qiita CiscoPacketTracer (スタティックルート).pkt`
> https://drive.google.com/file/d/1MWiXjRxVlUtaOJppkwsxdxgeQ0iWaoEA/view?usp=sharing

# ➐ダイナミックルート(RIP)の設定例
スタティックルートと同じような挙動となるようにダイナミックルート(RIP)を設定します。
![ダイナミックルート(RIP)トポロジー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/c6e16660-7bd3-b7e0-644b-1496f8c3126f.png)


## (1)✍🏻ルーティング設定
### ⬢Router1の設定
```text
en
conf t
router rip
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
```

### ⬢Router2の設定
```text
en
conf t
router rip
network 192.168.2.0
network 192.168.4.0
```

### ⬢Router3の設定
```text
en
conf t
router rip
network 192.168.3.0
network 192.168.5.0
```

### ⬢Router4の設定
```text
en
conf t
router rip
network 192.168.4.0
network 192.168.5.0
network 192.168.6.0
```
## (2)👉🏻結果
Routerの設定として、RIPを有効にするネットワークを指定するだけで、スタティックルートと同じ挙動を示してくれました。ユーザがこの通信の場合はこちらといちいち指定しなくて良いのでとても便利ですね。更に`Router2`が故障した場合でも経路情報は自動で更新されるので、ルーティング情報を手動変更せずとも`PC0 → PC1`の通信は可能となります。
![ダイナミックルート RIP.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/b58bc557-64fd-184b-96ab-fdcf74a3a84b.gif)

### ⬢「Cisco Packet Tracer」データの共有
> 実施した結果は、GoogleDriveにて共有しています。ダウンロードして、「Cisco Packet Tracer」で開いてみてください。
> 
> `Qiita CiscoPacketTracer (ダイナミックルート-RIP).pkt`
> https://drive.google.com/file/d/15uMEnlaCdRwrzgfpK1XxkqMqebmMwJDy/view?usp=sharing

# ➑ダイナミックルート(OSPF)の設定例
今回は、`PC0 → PC1`へ通信するとき、通常は「`Router2`」経由で通信させ、問題がある場合のみ「`Router3`」経由で通信させるようにしたいと思います。
![ダイナミックルート(OSPF)トポロジー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/acb37829-7fe0-7129-b310-512d09183aa1.png)


## (1)✍🏻ルーティング設定
### ⬢Router1の設定
通常は「`Router2`」のみへ経由さたい場合は、「`Router3`」への通信に**コスト**がかかるように設定しておきます。そうすることで優先制御を行うことができます。具体的には「`Router1`」が「`Router3`」へ通信する際に使用するインタフェース「`fastEthernet1/0`」に**コスト10**を設定します。そうすることで、通常時はコストのかからない「`fastEthernet0/1`」を使用して「`Router2`」へ通信することになります。

```text
en
conf t
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 0
network 192.168.3.0 0.0.0.255 area 0
end
conf t
interface fastEthernet1/0
ip ospf cost 10
```

### ⬢Router2の設定
```text
en
conf t
router ospf 1
network 192.168.2.0 0.0.0.255 area 0
network 192.168.4.0 0.0.0.255 area 0
```

### ⬢Router3の設定
```text
en
conf t
router ospf 1
network 192.168.3.0 0.0.0.255 area 0
network 192.168.5.0 0.0.0.255 area 0
```

### ⬢Router4の設定
```text
en
conf t
router ospf 1
network 192.168.4.0 0.0.0.255 area 0
network 192.168.5.0 0.0.0.255 area 0
network 192.168.6.0 0.0.0.255 area 0
end
conf t
interface fastEthernet0/1
ip ospf cost 10
```
## (2)👉🏻結果
`PC0 → PC1`への通信の際、`Router1`での優先制御により必ず`Router2`を使用するようになります。ただし、`Router2`に障害が発生した場合は、すぐに`Router3`へ経路を切り替え、`PC0 → PC1`への通信が可能となっています。

![OSPF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/63c6393b-1975-1e73-8569-120bdb88c837.gif)

### ⬢「Cisco Packet Tracer」データの共有
> 実施した結果は、GoogleDriveにて共有しています。ダウンロードして、「Cisco Packet Tracer」で開いてみてください。
> 
> `Qiita CiscoPacketTracer (ダイナミックルート-OSPF).pkt`
> https://drive.google.com/file/d/1G9ztFK8bxZdHgfGQBcEVJXLOwplsnLqp/view?usp=sharing

# ➒以上
ベンダ特有のコマンドがあったりして難しそうな感じがするけど、意外にもすんなりここまで実施できました！と思ったら、よくよく考えると内容はネットワーク初心者レベルのものだもんね😅。。。でも、これを足がかりにもっとネットワークのこと調査していければと思っています。

お疲れ様でした😊