【ネットワーク入門】Packet Tracerで作る簡単ネットワーク入門

# はじめに
この記事は、ネットワークの基礎は勉強したけど実際に構築してみたい、ネットワーク入門対策をしたいという方向けの記事となっています。一部サブネット等の解説は行いますが、基本的なIPv4に関してなどの解説は行いません。
本当にネットワークを知りたい方は、この本等で勉強してからPacket Tracerで構築してみることをお勧めします。

また、今回の内容は、Packet tracer activityというファイル形式で公開しています。
自分の構築がお手本とあっているかが簡単にわかるのでぜひ使ってみてください。

https://github.com/kouichi310/packet-tracer


# 前提環境
* Windows 11 64 bit
* Packet tracer 8.2.0

## Packet Tracerのセットアップ
### 1. ソフトのダウンロード

ここからPacket Tracer本体をダウンロードし、インストールしてください。
(サイトの真ん中あたりにあります。OSに合わせて選択してください)
なお、Loginしないとダウンロードできないので右上の人型のアイコンから、Googleアカウント等でSignupしましょう。

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

開くと、「Would you like to run ほにゃらら」とでますが、これはマルチユーザー間で通信のシミュレーションをすることができるので、やるか？という意味です。Noを選択しましょう。

次にLogin画面が出ます。みなさんは、skills for allからアカウントを登録したかと思いますので、緑のほうでログインをしましょう
このとき、keep me logged inをONにしとかないと、何度もログインする羽目になるのでお忘れずに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/bc666cb9-2863-d40a-7886-b30222f236e6.png)

## ネットワーク入門スタート
### 1. 機器を設置しよう

今回はPacket tracerの基本的なものをすべて使おうと思いますので、少し大きいネットワークを作ります。

* 1941 Router 3台
* 2960 Switch 3台
* PC 2台
* Laptop 1台
* Server 3台

を下の画像のように設置してください。
設置するものは左下にまとまっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/9f7d443d-c451-0379-0f12-510bc84d975b.png)

かっこよく配置したかったので、このようになりましたが下のように配置したほうがわかりやすいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/67e5b5c7-5735-4053-f2b5-8dd305f5787e.png)

ここら辺は、お好みで配置してください。

### 2.機器を接続しよう

以下の画像のように接続しましょう。
接続に使うケーブルは、画面左下の雷のマークのところにあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/f6358418-3279-97d9-29c9-747f4f5db1c3.png)

少しインターフェース名が被ってしまいますが、左上の「Prefarences」→「Options」→「interface」→「always show Port label ...」というのをONにしておくと、画像のようにインターフェース名が自動で表示されとても楽です。ipの設定でこのインターフェース名を確認することが多いので、表示しておくとよいでしょう。

ポイントとしては二つ。
1. RouterとRouter/Server/PC/LaptopはCross cable,Switchと機器を接続するときは、Straight cableを使用する。
2. Fiber cableを使用するときは、機器にインターフェースを追加する必要がある。

特に2ですが、今回の1941Routerは、インターフェースの追加スロットルが二つあります。右につけるとGiG0/0/0、左につけるとGig0/1/0となります。気を付けましょう。
また、インターフェースの追加は電源をOFFにする必要があります。追加したら必ずONにしましょう。

### 3. networkを考えよう

今回はサブネットを使ったネットワークを考えます。
元のネットワークアドレスを172.16.0.0/12とします。ここからホスト部から4bit借りてサブネットを5つ形成しましょう。
サブネットとしては、以下のようなものが考えられます。
(あえて第二オクテットを2進数にしています)

172.00010000.0.0/16
172.00010001.0.0/16
172.00010010.0.0/16
172.00010011.0.0/16
172.00010100.0.0/16
172.00010101.0.0/16
172.00010110.0.0/16
172.00010111.0.0/16
...

このような感じで、4bitですから2^4=16で16種類のサブネットが作れます。
ただ、ここでは0000,1111のサブネットは使用しません。よって、

172.17.0.0/16
172.18.0.0/16
172.19.0.0/16
172.20.0.0/16
172.21.0.0/16

が使用するネットワークアドレスとなります。上からサブネット1から5としましょう。
それらを以下のように割り振ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/df3e884e-3c21-4deb-9430-e23b334e0ef6.png)

画像のようなラベルは左上のDocumentのようなアイコンをクリックすると追加することができます。ネットワークアドレスや、各ホストのアドレスはめんどくさいとおもいますが、必ず書くようにしましょう。確認する手間が減ります。

さて、次にRouterに割り当てるネットワークアドレスを2つ考えます。
問題ですが、今回のサブネットの最大のサブネットは何でしょうか？

今回は4bitですので、1111のサブネットと思いきや先ほど書いた通り、1111のサブネットは使用しないので、1110のサブネットが最大となります。

`172.00011110.0.0/16 → 172.30.0.0/16`

さて、このネットワークをさらにサブネット化してみましょう。
どこまでサブネット化するというと、ホストに割り当てられるアドレス数が2しかないサブネットです。Routerに割り当てるネットワークアドレスとしては最適ですね＾＾

まず、サブネットマスクから考えましょう。

ホストに割り当てられるのが2ということは、ネットワークアドレス、サブネットマスクを含めてホスト部の組み合わせは4種類しかありません。ということは、2^n=4ということで、n=2、ホスト部は2bitということがわかりました。
IPv4は32bitで構成されているので、サブネットマスクは`/30 = 255.255.255.252`となります。

ということで、172.30.0.0/16を/30のサブネットに分割すると

172.30.00000000.00000000/30
172.30.00000000.00000100/30
172.30.00000000.00001000/30
172.30.00000000.00001100/30
172.30.00000000.00010000/30
172.30.00000000.00010100/30
172.30.00000000.00011000/30
172.30.00000000.00011100/30

となります。先ほどと同様に、00000000.00000000のサブネットは使用しないので、2つのネットワークアドレスは小さいほうから割り当てると

`172.30.0.00000100 → 172.30.0.4/30`
`172.30.0.00001000 → 172.30.0.8/30`

の２つとなります。この二つも割り当てると以下のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/a2e673ad-1858-a89a-f25d-8bc0ef338c91.png)

これで、すべてのネットワークアドレスが決まりましたね。
最後に、ホストに割り当てるアドレスを決めましょう。

ルールは、PC,Serverに割り当てるのは、そのネットワークの最小、Routerに割り当てるのはそのネットワークの最大のアドレスにします。ただし、Laptopは後程DHCPを割り当てるので設定せず。Routerは下記画像のように、最大-1のアドレスを割り当てます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/3ab49f82-0233-7892-ffb4-23dffdc984a2.png)

Routerは左から.5.6.9.10となるように割り当てました。
では、実際に機器にIPを割り当てていきましょう

### 4.ホスト名を設定しよう

その前にホスト名を設定しましょう。それぞれ、Server0などと書いてあるところをダブルクリックすると、ホスト名を変えられます。以下の画像のように設定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/3ab49f82-0233-7892-ffb4-23dffdc984a2.png)

Routerに関しては、少し見づらいですが左からRT0、RT1、RT2となっています。

ここで、Routerに関してはひと手間加える必要があります。
PCやServerは今の方法で内部のホスト名も変更されますがRouterはCLI上から設定する必要があります。まずは、一番左のRouterをダブルクリックしましょう。

CLIタブを開くと「Would you like to enter the initial configuration dialog?」と聞かれてますので、「no」とタイプし、しばらく待ちます。「Press RETURN to get started!」と表示されたらEnterキーを押してRouterのCLIが使えるようになります。

設定は3ステップ
```
Router>enable
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname RT0
RT0(config)#
```

これだけです。同様に、ほかのRouterも設定しましょう。
これで、ホスト名を設定できました。次はIPを設定しましょう。

### 5.IPを設定しよう

まずは、PC,Serverの設定からです。それぞれ、ダブルクリックして、「Desktop」→「IP Configuration」から設定できます。
あとは、書いてある通り、IP,subnetmask,defaultGateway,DnsServerを設定しましょう。後で設定しますが、DNSはSV0で動作させます。`172.17.0.1`を設定してください。

SV0の場合を以下に示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/9ed8361e-2306-565e-f033-e4136f3e64c7.png)

ここで注意しなければならないのは、SV0などInterfaceが複数ある場合は上のInterfaceのボックスから接続しているInterfaceで設定する必要があることです。
Gigabitで接続しているのに、FastEtherになっていたということにならないようにしましょう。

次に、Routerの設定を行いましょう。基本的には以下のようなコマンドで設定します。

```
RT0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
RT0(config)#int Gi
RT0(config)#int GigabitEthernet 0/0/0
RT0(config-if)#ip addr 172.17.255.254 255.255.0.0
RT0(config-if)#no shut

RT0(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up

RT0(config-if)#exit
RT0(config)#
```

各ネットワーク、インターフェースごとに`ip addr ip subnetmask`を適宜変更してください。
`noshut`を実行すると、赤色の三角が表示されたものが、緑の三角になると思います。
そうすれば正常にリンクが確立したということです。おめでとうございます

すべて、接続できたでしょうか。疎通確認をしてみましょう。
pingをSV0からSV1に飛ばしてみましょう。おっと、飛びませんね。
というわけで、Routingをしましょう。

### 6.Routingをしよう

RouterでRoutingを設定するのはとっても簡単

```
RT0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
RT0(config)#ip route networkaddress subnetmask nexthop
```

です。RT0,RT1,RT2全てに設定しましょう。1つのRouterにつき4つのStatic Routeを設定するはずです。

すべて設定できたでしょうか？
それでは、疎通確認をしてみましょう。

### 7.疎通確認をしよう
pingを飛ばすのも一つの手ですが、簡単なTipsを一つ紹介します。右上に、封のしまった手紙のようなアイコンがあると思います。それをクリックした後、出発の端末と到着の端末を指定すると、ICMPパケットが送信され、右下に結果が表示されます。

「Sucessful」と表示されれば疎通してるので、成功です！「Failed」となれば、何かしらの設定を間違えてみます。pingでどのインターフェースまで疎通するかを地道に調べ修正しましょう。

ただし成功しなくても、2,3回送ると「Sucessful」になる不安定さもあるので、何度か挑戦してみましょう。

全パターン調べ、問題なく疎通していれば、ネットワーク入門の第一段階は終了です！
お疲れさまでした！

## サービスを使ってみよう

Packet Tracerでは、様々なServiceを使うことができます。ここでは、典型例の
* DHCP
* DNS
* NTP
* SYSLOG
* HTML

を設定してみましょう。

### 1.DHCPを設定しよう

SV2でDHCPを起動し、LaptopでDHCPを受信してみましょう。

SV2をダブルクリックし、ServiceからDHCPを選択します。
ServiceをONにし、各項目を以下のように設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/45e279cb-7349-6ba2-b690-d993df6e8fdf.png)


最後に「Save」を押して保存することをお忘れなく。

次にLaptopで、DesktopからIPConfigurationを開き、DHCPを選択します。
しばらく待つと、「DHCP request sucessful」となり、自動で割り当てられたと思います。先ほどと同様に疎通できるか検証してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/4addf812-9c14-3b7e-db70-957450b3d285.png)

### 2.DNSを設定しよう

次に、SV0でDNS Serviceを起動します。
SV0をクリックし、ServiceからDNSを開きます。

DNS serviceをONに、NameにPC,Server,Routerのホスト名を、Ip addressにそのIPを入力して「Add」を押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/19cc3116-b893-eb42-789f-63ba7d7bf6dc.png)

私は、各RouterのインターフェースにもDNSを設定したので、このようになりました。（どのインターフェースにどのnameを付けたかは、画像より確認してください）

では、実際にPCからDNSが使えるかを確かめましょう。

PC0から「Desktop」→「Command Prompt」で
```
C:\>ping sv0
```
とやってみて、Replyが来るかを確かめましょう。しっかりときてれば成功です。
次にRouterでもやってみましょう。

Routerの場合は、nameServerを設定する必要があります。

```
RT0>enable
RT0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
RT0(config)#ip name-server 172.17.0.1
```

これを、すべてのRouterで設定しましょう。その後、exitでconfigから抜けて、
``` :(!が疎通の意味)
RT2#ping sv0
Translating "sv0"...domain server (172.17.0.1)
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.17.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms
```
となれば成功です！おめでとうございます

### 3.NTPを設定しよう

NTPとは、機器の時刻を同期させるサービスのことです。
今回はSV0をNTPサーバーとし、Routerの時刻をサーバーと同期します。

NTPのサービスでDefaultでONになっているのでRouterの設定を行うだけです。

```
RT0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
RT0(config)#ntp server 172.17.0.1
```

これだけです。
NTPのパケットやりとりにしばらくかかるので、少しおいてからCLIで

```
RT0#show clock
```

と2023になってることがわかります。すぐには変わらないので他のことをやって待ちましょう。

## 4.SYSLOGを設定しよう

SYSLOGとは、RouterのlogをServerに転送することです。これもServerはDefaultでONなのでRouterのコマンド１つで設定が完了します。
今回は、各RouterのlogをSV1に転送しましょう。

```
RT0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
RT0(config)#logging host 172.18.0.1
RT0(config)#end
RT0#
%SYS-5-CONFIG_I: Configured from console by console
%SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 172.18.0.1 port 514 started - CLI initiated
```

さて、「Logging to host 172.18.0.1 port 514 started」となったので、SV1の「Service」→「SYSLOG」をのぞいてみると、ログが転送されてきたのがわかります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/40659c78-e8e0-9cb3-fe3b-138605eda468.png)

同様に、RT1,RT2にも設定し、logが転送されてきてることを確認しましょう。

### 5.HTTPを設定しよう

簡単なWebページを表示できます。PC0で「Desktop」から「Web Brawser」を起動してアドレスバーに「SV1」と入力してみましょう。以下のページが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/1a741452-19a1-de34-5048-404e1720cfdf.png)

このページは、SV1の「Service」→「HTTP」の「index.html」のeditから編集することができます。単純なHTMLだけですが、タイトルを変えてみたりしましょう。
なお、編集後は右下の「Save」をお忘れずに。上書きするかの確認が出ますが、Yesでよいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2106872/60b8ea31-5b8c-2b88-8773-8806cbdbb864.png)

# おわりに

今回の内容を、以下のGithubに保存してあります。
中身はPacket tracer Activityというもので、自分の構築内容がお手本とあっているかがわかるものになっています。ぜひ勉強に使ってみてください。

https://github.com/kouichi310/packet-tracer