Catalystスイッチの基本設定とVLAN

# Catalystスイッチとは
Catalystスイッチとは、Ciscoが製造しているスイッチ製品群のこと。シリーズごとに対応するレイヤが異なる。

| シリーズ | レイヤ |
|:-:|:-:|
| Catalyst 2960-L  | レイヤ2  |
| Catalyst 2960-X/XR  | レイヤ2  |
| Catalyst 3650  | レイヤ2/レイヤ3  |
| Catalyst 3850  | レイヤ2/レイヤ3  |

+ Catalyst 2960-Xシリーズの前面パネル
![キャプチャ7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/cdd0e40c-fad4-d8d2-d611-95e0efde57ac.png)

| 番号 | 表示 | 説明 |
|:-:|:-:|:-:|
| 1  | RPS  | RPSのステータスを表す。RPS(冗長化電源システム)とは、主電源に障害が発生したときに副電源が代わりをする機能のこと  |
| 2  | SPEED  | モードLEDの1つで、ポートLEDが速度(10Mbps、100Mbps、1000Mbpsのどれか)を表すモードになっていることを示す  |
| 3  | STAT(ステータスLED)  | モードLEDの1つで、ポートLEDがポートのステータスを表すモードになっていることを示す  |
| 4  | SYST(システムLED)  | スイッチが正常に機能しているかどうかを表す。  |
| 5  | MODE(ボタン)  | SPEED、STAT、STACK、PoEのいずれかにモードを切り替えるボタン  |
| 6  | MAST  | スタック接続時の役割を表す。スタックとは、複数台のスイッチを仮想的に1台のスイッチとして動かす技術のこと  |
| 7  | STACK  | モードLEDの1つで、スタックポートがアップしているかどうかを表す。  |
| 8  | PoE  | モードLEDの1つで、ポートLEDがPoEを表すモードになっていることを示す。PoEとは、LANケーブル上から電源を供給する仕組みのこと  |
| 9  | CONSOLE(USBポート)  | USBコンソールがアクティブかどうかを表す  |
| 10  | MGMT  | イーサネット管理ポートを通じて正常にアクセスできるかどうかを表す  |
| 11  | CONSOLE(RJ-45ポート)  | RJ-45コンソールがアクティブかどうかを表す  |
| 12  | ポートLED  | 各ポートに1つずつあり、点灯しているモードLEDによって意味する内容が異なる  |

| LED | 状態 |
|:-:|:-:|
| 無灯(点灯していない状態)  | LANケーブルが挿入されていない状態、または管理者がシャットダウンし使用不可に設定している状態  |
| 緑点灯  | 正常な通信が可能な状態だが、データが流れていない  |
| 緑点滅  | データを送受信している状態  |
| オレンジ点灯  | ポートがSTPによってブロックされており、送受信を行っていない状態  |
| 緑とオレンジで点滅  | 障害が発生している状態  |

## SFP（Small Form-factor Pluggable）ポート
CiscoスイッチにあるSFPモジュールを搭載するポートのこと。SFPモジュールには光ファイバーに対応したものやUTPケーブルに対応するものなどがあり、用途に応じたインターフェースを追加可能。

SFPポートは**ホットスワップ（電源をいれたままで着脱が可能**）に対応しているので、SFPモジュールが故障した際も、すぐに新しいSFPモジュールに付け替えることができる。

![kkkkkk38444.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/a6ed66af-ab9a-e1c9-2106-17ff305dbb61.jpeg)



# VLAN(Virtual LAN)の基本
スイッチ技術の1つで、スイッチの内部でネットワークを仮想的に分ける技術のこと。1台の物理的なスイッチ上で仮想的に複数のネットワークを作成することができ、異なるブロードキャストドメインを構成することができる。
VLANは番号で識別され、同じVLANに所属している端末同士でしか通信ができない。

![キャプチャ8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/18cd6f7b-3343-16e8-0cf0-2d5e8a22776d.png)

![キャプチャ11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/250a9d15-4f76-bd2f-b9d5-93ac28e3aa72.png)

使用することで、次のようなメリットがある。

+ **端末の物理的な配置に依存しないネットワークを構成できる**

![キャプチャ12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/7ef32e80-846d-c272-c6a8-ec557d91e646.png)

+ **ブロードキャストドメインを分割できる**
ブロードキャストが多用されるとネットワークに負荷がかかってしまい、ブロードキャストドメイン内の端末数を不用意に増やさないようにしなければならない。ルータだとポート数が少ないため台数がかさむ場合があるが、VLANを使用することでブロードキャストドメインを分割しトラフィックの軽減をすることができる。

+ **セキュリティ対策になる**
ACLを使用することで、許可する通信と拒否する通信をより分けるフィルタリング機能を設定することができる。

+ **宛先MACアドレスがMACアドレステーブルに登録されていない場合、受信したポートと同じVLANに属する全ポート（受信ポートは除く）から転送する**

## VLANのポート
スイッチのポートはどのVLANに属しているかによって役割が異なってくる。

![k37441.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/645ddf58-6ac9-255f-559c-8c658035810f.jpeg)


### アクセスポート
1つのVLANに属しているポートのこと。通常、PCやサーバといった機器が接続されるポートとなり、アクセルポートに接続されたリンクを**アクセスリンク**と呼ぶ。スイッチのポートにVLANを割り当てる方法が2つ存在する。

#### ポートベースVLAN
スタティックVLANとも言われ手動で行う方法

#### ダイナミックVLAN
ポートベースVLANと違い自動で行う方法

### トランクポート
複数のVLANに属しているポートのこと。トランクポートにつながっていて複数のVLANの通信が通過するリンクを**トランクリンク**と呼ぶ。デフォルトでは、スイッチ作成されている全てのVLANの通信がトランクポートを通過できる。

## トランキングプロトコル
トランクリンクを通過してきた通信を受け取ったスイッチは、どのVLANの通信なのかを判別する必要がある。だが、普通のイーサネットフレームにはMACアドレスやタイプなどのフィールドしかないためVLANの識別ができない。
そこでトランクリンクでは、フレームにVLANを識別するための情報として2つのタグが付加される。

### ISL(Inter-Switch Link)
Cisco独自のプロトコル。タグを挿入するのではなく、イーサネットフレームの前にヘッダを付加し新しくFCSを再計算して末尾に付加する。フレームの最大サイズは**1548バイト**になる。
ISLを使用する場合は、対向のスイッチもCisco製でなければならない。

![キャプチャ15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/b069157a-6697-6cc0-1e5f-0eb1c3e537b0.png)


### IEEE 802.1Q
標準化されたプロトコルで、タギングプロトコルとも言われる。イーサネットフレームの送信元MACアドレスとタイプの間にVLANタグを挿入する。フレームの最大サイズは**1522バイト**になる。

![キャプチャ16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/014f11a2-8e98-de9c-4b47-93caaa263071.png)


### Native VLAN
IEEE 802.1Qでサポートしている機能。スイッチのトランクポートごとに1つ選択することができる。

+ フレームにタグをつけずに送信可能
+ 両スイッチでトランクリンクのネイティブVLANを合わせておく必要がある
+ スイッチの管理するトラフィックを通す
+ デフォルトでVLAN1になっている

:::note warn
ネイティブVLANが「IEEE 802.1Q」トランクの両端で一致していないと、送信側と受信側で異なるVLANへパケットが転送される問題が発生する。

![kk38469.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/27bdc0c5-503d-04ac-cb14-e75379b94728.jpeg)


:::


### ベビージャイアントフレーム
通常のイーサネットフレームの最大サイズ(1518バイト)よりも少し大きなフレームのこと。1600バイトまでのフレームが該当する。
ベビージャイアントフレームよりも大きいフレームは、**ジャンボフレーム**と呼ばれる。

### DTP(Dynamic Trunking Protocol)
スイッチ間でネゴシエーションを行うCisco独自のプロトコル。自動でトランクポートかアクセスポートかを決定することが出来る。有効になっていると、デフォルトで30秒ごとにマルチキャストアドレス宛にDTPフレームを送信し、カプセル化やトランクポートにするかどうかなどをネゴシエーションする。

| モード | 動作 |
|:-:|:-:|
| trunk  | トランクポートとして動作する。DTPのフレームを送信し、ネゴシエーションを行う  |
| access  |  アクセスポートとして動作する。自身からDTPのフレームは送信しない |
| dynamic desirable  | DTPのフレームを送信し、ネゴシエーションを行う。対向の機器が了承してトランクポートとなった場合は、自身もトランクポートとして動作する  |
| dynamic auto  | 自身からDTPのフレームを送信しない。対向の機器からネゴシエーションが行われた場合に、トランクポートとして動作する  |

![k37771.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/c569653a-83fe-a734-cd16-a6e8678a9692.jpeg)




## 音声VLAN
データ用のVLANと音声用のVLANを用意し、通信を分けることができる機能のこと。VLANではブロードキャストドメインを分割する以外にもIPテレフォニーとして使用されている。音声と通常のデータ通信のフレームを識別するためにVLANが使用され、音声データにはタグ付け、PCからのデータはタグをつけずに送信することで識別が可能となる。

![キャプチャ17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/a58d4221-4e79-66cd-e2e7-42dd3d7d7c08.png)


+ **Cos(Class of Service)**
タグの中にVLAN番号を示す部分以外にあるフレームのこと。優先度を表す値が格納できるようになっており、その値でスイッチの方で音声データを優先的に転送するなどの処理が出来るようになる。

+ **Qos(Quality of Service)**
パケットに優先順位をつけて通信の品質や速度を保証する技術。実現するための1つの方法としてVLANが利用されている。

## VTP(VLAN Trunking Protocol)
VLAN名の不一致や管理の手間を軽減できるCisco独自のプロトコルのこと。VLANが複数のスイッチにまたがっている環境でVLANの管理を簡易化することが出来る。
VTPを使用すると、あるスイッチでVLANの作成などの設定を行った際、VLANの情報がトランクリンクを通じてマルチキャストで他のスイッチに伝播され、標準範囲のVLAN(1～1005)の情報だけVLANデータベースに保存される。IOSが動作するスイッチでは`vlan.dat`ファイルにフラッシュメモリに保存される。

+ **リビジョン番号**
各スイッチのVLAN情報を管理するデータベースに付けられる番号のこと。VLANの作成や削除、変更を行うと、リビジョン番号が加算される。最も大きなリビジョン番号を持つスイッチに対して、他のスイッチがVLAN情報の同期(各データベースの内容を同一にすること)をとる。

+ **VTPドメイン名**
VTPでスイッチを管理するための単位。VLAN情報の同期は同じドメインに属するスイッチ間でしか行われない。

#### VLAN情報の同期条件

1. トランクポートによる接続
2. VTPドメイン名の一致
3. VTPモードはサーバもしくはクライアント
4. VTPパスワードの一致（VTPパスワードが設定されている場合）
5. VTPバージョンの一致


### 動作モード
同期を行うかどうかに影響する設定のこと。モードによってスイッチの機能や同期の動作が異なる。

![kkk36761.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/4c4dd0c4-9b0a-9548-1849-97c1647668ff.jpeg)


#### サーバモード
デフォルトの設定値で、VLANの作成、変更、削除が可能。自身のVLAN情報を他のスイッチにアドバタイズ(情報を広める)し、受け取ったVLAN情報は他のスイッチに転送する。他のスイッチに流すVLAN情報を**VTPアドバタイズメント**という。

#### クライアントモード
**VLANの作成、変更、削除を行うことはできない**。サーバモードから送られたVLAN情報に同期し、受けとったVLAN情報を他のスイッチに転送する。リビジョン番号がドメイン内の他のスイッチよりも大きい場合は、自身のVLAN情報を他のスイッチに送信する。

:::note warn
クライアントモードの情報で、サーバモードの他のスイッチが上書きされることになるため、新しくスイッチを接続する際は注意する。
:::


#### トランスペアレントモード
VLANの作成、変更、削除可能だが、ぞの情報を他のスイッチにアドバタイズしない。また他のスイッチからVLAN情報を送信されてきてもその情報に**同期しない**。ただし、受け取った情報を他のスイッチに転送する。
リビジョン番号が**0固定**になり、作成したVLANの内容が`vlan.dat`以外に`running-config`にも保存される。バージョン1と2で拡張範囲のVLAN(1006～4095)を作成する場合はこのモードにする必要がある。

### VTPバージョン
バージョンには1～3の3つ存在する。VTPを使用する際はバージョンを合わせておく必要がある。

+ **バージョン1**
デフォルトで動作する。トランスペアレントモードのスイッチでもVTPドメイン名とバージョンを合わせておかなければ、VTPのメッセージを転送しない。
他のスイッチと同期できるVLANの情報は標準範囲のVLAN(1~1005)となっており、拡張範囲のVLAN(1006~4094)は同期されない。

+ **バージョン2**
バージョン1で未対応だったトークンリングをサポートしている。トランスペアレントモードのスイッチではVTPドメイン名とバージョンを合わせていなくても、VTPメッセージを転送する。
他のスイッチと同期できるVLANの情報は標準範囲のVLAN(1~1005)となっている。

+ **バージョン3**
拡張範囲のVLAN(1006~4094)情報も伝播できるようになっている。また、プライマリサーバというモードが追加され、勝手にスイッチが接続されても情報変更がされない仕組みが導入されている。

### VTPプルーニング
必要のない、無駄なVLANの通信の転送を制限する機能のことで、不要なトラフィックを減らす事ができる。サーバモードのスイッチのどれか1台で有効にすると、同一ドメイン内のスイッチでも自動で有効になる。

![キャプチャ01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/0d6b49fc-7f53-2c27-4e0d-dca9766e3ff0.png)

:::note warn
全てのVLANが取り除かれるわけではなく、VLAN1と1002~1005は対象外となる。
:::


## VLAN間ルーティング
異なるVLAN間でも通信を可能にすること。VLAN間ルーティングはレイヤ2スイッチだけでは実現できず、異なるVLANを接続する機器としてルータを用いる。また、レイヤ3機能を備えたレイヤ3スイッチを使用することで、ルータなしでもVLAN間ルーティングを実現できる。

以下のような構成を**Router on a Stick**という。
![キャプチャ18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/c40a02c0-661d-b0da-d9c6-a912fa4c47d6.png)

スイッチとルータ間のリンクを棒に見立てて1本の棒の上にルータがあることを表している。
1つのインターフェイスに対して、両方のVLANのデフォルトゲートウェイとして動作しなければならないため、物理インターフェイスにそのままIPアドレスを割り当てるのではなく。1つの物理インターフェイスを仮想的に複数に分ける必要がある。

### サブインターフェイス
インターフェイスを仮想的に分ける方法。作成しそれぞれにIPアドレスを設定することで、1つの物理インターフェイスを複数の異なるインターフェイスとして扱うことが出来る。サブインターフェイスの**カプセル化をISLかIEEE802.1Qのいずれかに指定する**必要がある。


スイッチとルータの間は複数のVLANに属する通信が通過するため、ルータとスイッチの間はトランクリンクにしなければならない。
![キャプチャ19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/0bf175dd-9790-27de-0609-13e890c3cb46.png)

### レイヤ3スイッチでのルーティング
スイッチは元々レイヤ2の機器だが、レイヤ3のIPアドレスやレイヤ4のポート番号などレイヤ2以外の情報を基に転送処理を行うことも可能になっている。複数の層の情報で転送を行うことが出来る機器を**マルチレイヤスイッチ**といい、レイヤ3の情報を基に転送処理を行うスイッチを**レイヤ3スイッチ**という。

![キャプチャ20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/0c263235-732f-258f-d369-d377d2926e0a.png)

マルチレイヤスイッチを使用してVLAN間ルーティングを行うには、以下3つの設定が必要になる。

+ ルーティングの有効化
+ SVIの作成
+ インターフェースへのVLAN割り当て

#### SVI(Switch Virtul Interface)
**スイッチ内部にある仮想的なインターフェイス*のことで、IPアドレスを設定して使用する。VLANにより仮想的にスイッチが分割され、そしてその分割された個々のスイッチがルータに接続するための接続口となる。
レイヤ3スイッチのSVIに設定されたIPアドレスは、該当のVLANに属する端末のデフォルトゲートウェイとして使用可能。

#### ルーテッドポート
スイッチの物理ポートをレイヤ3のインターフェイスとして動作させるための機能。
ルータのように直接インターフェイスにIPアドレスを割り当てることが出来るようになるが、ルータのインターフェイスになっているため、スイッチポートとは反対にVLANの割り当てなどの設定は出来ない。

::: note info
**スイッチポートとは？？**
VLANの割り当てが出来るポートのこと。インターフェイスに直接IPアドレスを割り当てることは出来ない。
:::

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/09459e23-c6c1-c6e2-927c-36c847a47daa.png)


# VLANの設定
VLANの作成できる範囲は、多いもので1~4094の番号が使用可能で、1と1002~1005は最初から作成されている。全てのポートは初期状態でVLAN1に所属している。

+ 1~1001:標準範囲のVLAN
+ 1002~1005:トークンリングやFDDI用のVLAN
+ 1006~4094:拡張範囲のVLAN

標準範囲のVLANにはVLANデータベース(フラッシュメモリ内の`vlan.dat`ファイル)、拡張範囲のVLANは`running-config`に保存される。

### interface vlanコマンド
管理インターフェイスにIPアドレスを設定するコマンド。管理インターフェイスのインターフェイスコンフィギュレーションモードで行う必要がある。

IPアドレスの設定は、ルータのIPアドレスの設定コマンドと同じになる。

::: note info
**管理インターフェイスとは？？**
管理VLAN用のインターフェイス。実際にケーブルを差し込むインターフェイスではなく、仮想的なインターフェイスになる。

**管理VLANとは？？**
スイッチにIPアドレスを設定する際に使用し、スイッチを管理するための通信を流すためのVLAN。デフォルトではVLAN1が管理VLANとなっている。スイッチにIPアドレスを割り当てることで、pingによる動作確認や、Telnetによる遠隔接続が可能になる。
:::

``` markdown:VLAN1に192.168.0.1/24を設定する
Switch#configure terminal
Switch(config)#interface vlan 1
Switch(config-if)#ip address 192.168.0.1 255.255.255.0
Switch(config-if)#no shutdown 
```
### ip default-gatewayコマンド
**書式：ip default-gateway [デフォルトゲートウェイのIPアドレス]**
スイッチでデフォルトゲートウェイを設定するコマンド。グローバルコンフィギュレーションモードで行う必要がある。異なるネットワークからスイッチにアクセスする場合は、スイッチにIPアドレスだけではなくデフォルトゲートウェイも設定する必要がある。

### vlan databaseコマンド
VLANデータベースコンフィギュレーションモードに移行するコマンド。特権EXECモードで行う必要がある。

:::note alert
現在は非推奨になっているため、実行すると以下の文言が表示される。

```
R1#vlan database
% Warning: It is recommended to configure VLAN from config mode,
  as VLAN database mode is being deprecated. Please consult user
  documentation for configuring VTP/VLAN in config mode.

```
:::


#### vlanコマンド(vlanデータベースコンフィギュレーションモード時)
**書式：vlan [VLAN番号] name [VLAN名]**
VLANを作成するコマンド。VLANデータベースコンフィギュレーションモードで行う必要がある。VLAN名は省略可能。
作成後の設定を確定させるには特権モードに戻るか、VLANデータベースコンフィギュレーションモードで**applyコマンド**を実行する

### vlanコマンド(グローバルコンフィギュレーションモード時)

::: note warn
グローバルコンフィギュレーションモード時とVLANデータベースコンフィギュレーションモード時で書式が変化するため注意が必要
:::

VLAN番号には作成したVLAN番号を指定する。機種により指定できるバン後の範囲は異なる。VLAN名を指定しなかった場合、「VLAN[番号]」というように名前が設定される。特権モードに戻ることで設定が確定される。

``` markdown:VLAN10を作成し名前をtestに設定する
Switch#configure terminal
Switch(config)#vlan 10
Switch(config-vlan)#name test
Switch(config-vlan)#end
```

### no vlanコマンド
**書式：no vlan [VLAN番号]**
VLANを削除するコマンド。VLANデータベースコンフィギュレーションモード、またはグローバルコンフィギュレーションモードで行う必要がある。デフォルトで作成されているVLANは削除不可。

``` markdown:vlan100を削除
SW1#conf t
SW1(config)#no vlan 100
SW1(config)#end
```

## VLANの設定例

<details><summary>VLANの設定例</summary>

![キャプチャ10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/1349ea3b-c628-ccb0-5c75-75f879e0a42e.png)

スイッチ間はクロスオーバーケーブル、スイッチとPC間をストレートケーブルでつなぎ、各PCの「IP Configuration」を開き、IPv4アドレスの設定を行う。

+ PC1⇒192.168.1.1/24
+ PC2⇒192.168.10.1/24
+ PC3⇒192.168.20.1/24
+ PC4⇒192.168.1.2/24
+ PC5⇒192.168.10.2/24
+ PC6⇒192.168.20.2/24

``` markdown:SW1のVLAN設定
Switch#configure terminal 
Switch(config)#hostname SW1

##VLAN10とVLAN20を作成
SW1(config)#vlan 10
SW1(config-vlan)#exit
SW1(config)#vlan 20
SW1(config-vlan)#exit

##それぞれのVLANに割り当てていく
SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW2(config)#interface FastEthernet 0/1
SW2(config-if)#switchport mode access
SW2(config-if)#switchport access vlan 1
SW2(config-if)#exit
SW1(config)#interface FastEthernet 0/2
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
SW1(config-if)#exit
SW1(config)#interface FastEthernet 0/3
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 20
SW1(config-if)#end
```

``` markdown:SW2のVLAN設定
Switch#configure terminal
Switch(config)#hostname SW2

##VLAN10とVLAN20を作成
SW2(config)#vlan 10
SW2(config-vlan)#exit
SW2(config)#vlan 20
SW2(config-vlan)#exit

##それぞれのVLANに割り当てていく
SW2(config)#interface FastEthernet 0/1
SW2(config-if)#switchport mode access
SW2(config-if)#switchport access vlan 1
SW2(config-if)#exit
SW2(config)#interface FastEthernet 0/2
SW2(config-if)#switchport mode access 
SW2(config-if)#switchport access vlan 10
SW2(config-if)#exit
SW2(config)#interface FastEthernet 0/3
SW2(config-if)#switchport mode access
SW2(config-if)#switchport access vlan 20
SW2(config-if)#end
```




</details>



## アクセスポートの設定
VLANを作成しただけでは、スイッチ内を仮想的に分けるグループを作成しただけとなり、各インターフェイスはVLAN1に所属したままとなる。
アクセスポートにするには以下の手順が必要になる

+ インターフェイスコンフィギュレーションモードに移行する
+ モードをアクセスに設定する
+ VLANを指定する

### switchport mode accessコマンド
インターフェイスのモードをアクセスにするコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。

### switchport accessコマンド
**書式：switchport access vlan [VLAN番号]**
所属するVLANを指定するコマンド。VLAN番号には割り当てたい番号を指定する。

## トランクポートの設定
VLANが複数のスイッチにまたがる場合に必要になる。設定する場合は、以下の手順で行う。

+ インターフェイスコンフィギュレーションモードに移行する
+ トランキングプロトコルの種類を設定する
+ モードをトランクに設定する
+ ネイティブVLANを設定する(任意)
+ 許可VLANを設定する(任意)
+ DTPネゴシエーションを停止する

### switchport trunk encapsulationコマンド
**書式：switchport trunk encapsulation [dot1q | isl]**
トランキングプロトコルを指定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。Cisco独自のISLを使用する場合はisl、標準化されたIEEE 802.1Qを使用する場合はdot1qを指定する。

::: note warn
機種によってISLがサポートされておらず、IEEE 802.1Qしか使用できないことがある。その場合、このコマンドは入力することはできない。
:::

### switchport mode trunkコマンド
インターフェイスのモードをトランクにするコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。トランクポートはデフォルトで全てのVLANのトラフィックが通過する。

::: note warn
両方のトランキングプロトコルに対応している場合、トランキングプロトコルの設定をせずにコマンドを実行すると拒否されるので注意が必要。
:::

### switchport trunk native vlanコマンド
**書式：switchport trunk native vlan [VLAN番号]**
ネイティブのVLANをデフォルトのVLAN1から変更するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。

### switchport trunk allowed vlanコマンド
**書式：switchport trunk allowed vlan [add | remove | except] [VLAN番号]**
余計なVLANのトラフィックを出したくない時、トランクポートで許可するVLANを限定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。デフォルトの設定では、トランクポートは全てのVLANの通信が通過可能。

| オプション | 内容 |
|:-:|:-:|
| add  | 指定したVLANの通過を許可（許可リストへの追加）  |
| remove  | 指定したVLANの通過を拒否（許可リストからの削除）  |
| except  | 指定したVLAN以外の通過を許可  |

### switchport mode dynamicコマンド
**書式：switchport mode dynamic [auto | desirable]**
DTPのネゴシエーションによって自動でアクセスポートかトランクポートに決定させるコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。

| オプション | 内容 |
|:-:|:-:|
| auto  | 対向ポートのモードによって自動でポートのモードが決まる  |
| desirable  | 対向ポートのモードによって自動でポートのモードが決まる。互いにトランクポートになれるようDTPを送信する  |

### switchport nonegotiateコマンド
DTPフレームの送信を停止させるコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。

## トランクの設定例

<details><summary>トランクの設定例</summary>

![キャプチャ10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/1349ea3b-c628-ccb0-5c75-75f879e0a42e.png)

VLANの設定を参考に行っていく。各VLANごとに通信が通るように設定していく。

``` markdown:SW1のトランク設定
SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#interface FastEthernet 0/8
SW1(config-if)#switchport mode trunk 
SW1(config-if)#
```

2950のスイッチはDTPに対応しているため、この時点で自動でトランクの設定になる。

</details>



## 音声VLANの設定
設定する際には以下のことに注意する必要がある。

+ 設定するポートはアクセスポートにする
+ 設定するポートではCDPを有効にしておく
+ 音声VLANを設定すると自動的にPortFastが有効になる

### switchport voice vlanコマンド
**書式：switchport voice vlan [VLAN番号]**
音声用のVLANを指定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。

## スイッチの初期化
フラッシュメモリは電源をオフにしても内容が消えないため、`startup-config`を削除して再起動しても、`vlan.dat`ファイルをは残ってしまう。そのため、スイッチを初期化するには次の手順を行う必要がある。

1. **NVRAM上の`startup-config`を消去する**
2. **フラッシュメモリ上の`vlan.dat`ファイルを消去する**
3. **再起動する**

1と3に関しては、[ルータの初期化](https://qiita.com/matuumo/private/fe4323211b9f7b46c8f2#%E3%83%AB%E3%83%BC%E3%82%BF%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96)と一緒

### deleteコマンド
**書式:delete [ファイル名]**
`vlan.dat`ファイルを消去するコマンド。特権EXECモードで行う必要がある。

## VLANの確認

### show vlanコマンド
**書式：show vlan [brief]**
現在スイッチで作成されているVLANの確認をするコマンド。特権EXECモードで行う必要がある。briefをつけることで、表示される情報が限定される。

:::note info
Ports項目に表示されていないポートはトランクポートになっている。
:::


``` markdown:show vlanコマンド
SW1#show vlan

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/4, Fa0/5, Fa0/6, Fa0/7
                                                Fa0/8, Fa0/9, Fa0/10, Fa0/11
                                                Fa0/12, Fa0/13, Fa0/14, Fa0/15
                                                Fa0/16, Fa0/17, Fa0/18, Fa0/19
                                                Fa0/20, Fa0/21, Fa0/22, Fa0/23
                                                Fa0/24, Gig0/1, Gig0/2
1002 fddi-default                     active    
1003 token-ring-default               active    
1004 fddinet-default                  active    
1005 trnet-default                    active    

VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
1    enet  100001     1500  -      -      -        -    -        0      0
1002 fddi  101002     1500  -      -      -        -    -        0      0   
1003 tr    101003     1500  -      -      -        -    -        0      0   
1004 fdnet 101004     1500  -      -      -        ieee -        0      0   
1005 trnet 101005     1500  -      -      -        ibm  -        0      0   

VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------

Remote SPAN VLANs
------------------------------------------------------------------------------

Primary Secondary Type              Ports
------- --------- ----------------- ------------------------------------------
```


### show vlan idコマンド
**書式：show vlan id [VLAN番号]**
特定のVLANに割り当てられいるポートを確認するコマンド。特権EXECモードで行う必要がある。

### show interfaces trunkコマンド
**書式：show interfaces [インターフェイス] trunk**
トランクポートの確認を行うコマンド。特権EXECモードで行う必要がある。インターフェイスを省略すると、トランクポートとなっている全てのインターフェイスが表示される。

``` markdown:show interfaces trunkコマンド
SW1#show interfaces trunk 
Port        Mode         Encapsulation  Status        Native vlan
Fa0/8       on           802.1q         trunking      1

Port        Vlans allowed on trunk
Fa0/8       1-1005

Port        Vlans allowed and active in management domain
Fa0/8       1,10,20

Port        Vlans in spanning tree forwarding state and not pruned
Fa0/8       1,10,20
```


### show interfaces switchportコマンド
**書式：show interfaces [インターフェイス] switchport**
スイッチポーで設定したモード、実際の動作モードを確認するコマンド。特権EXECモードで行う必要がある。インターフェイスを省略した場合、全てのインターフェイスが表示される。

``` markdown:show interfaces switchport
SW1#show interfaces switchport 
Name: Fa0/1
Switchport: Enabled
##アクセスポートの設定の確認
Administrative Mode: static access
Operational Mode: static access
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off

##データVLAN
Access Mode VLAN: 1 (default)

Trunking Native Mode VLAN: 1 (default)

##音声VLAN
Voice VLAN: none
Administrative private-vlan host-association: none
Administrative private-vlan mapping: none
Administrative private-vlan trunk native VLAN: none
Administrative private-vlan trunk encapsulation: dot1q
Administrative private-vlan trunk normal VLANs: none
Administrative private-vlan trunk private VLANs: none
Operational private-vlan: none
Trunking VLANs Enabled: All
Pruning VLANs Enabled: 2-1001
Capture Mode Disabled
Capture VLANs Allowed: ALL
Protected: false
Appliance trust: none
(省略)
```


### show interfaces statusコマンド
インターフェイスの状態を確認するコマンド。特権EXECモードで行う必要がある。

```markdown:show interfaces statusコマンド
Switch#show interfaces status 
Port      Name               Status       Vlan       Duplex  Speed Type
Fa0/1                        connected    10         auto    auto  10/100BaseTX
Fa0/2                        notconnect   1          auto    auto  10/100BaseTX
Fa0/3                        notconnect   1          auto    auto  10/100BaseTX
Fa0/4                        notconnect   1          auto    auto  10/100BaseTX
Fa0/5                        notconnect   1          auto    auto  10/100BaseTX
Fa0/6                        notconnect   1          auto    auto  10/100BaseTX
Fa0/7                        notconnect   1          auto    auto  10/100BaseTX
(省略)
Fa0/13                       connected    20         auto    auto  10/100BaseTX
(省略)
Fa0/23                       notconnect   1          auto    auto  10/100BaseTX
Fa0/24                       notconnect   trunk      auto    auto  10/100BaseTX
(省略)
```


## MACアドレステーブルの確認

### show mac-address-tableコマンド
スイッチの現在のMACアドレステーブルを確認するコマンド。特権EXECモードで行う必要がある。特定のVLANに対応付けられているMACアドレスを表示させることができる。
動的に登録されたMACアドレス(DYNAMIC)は、スイッチの再起動や一定時間の経過後に削除される。自動で登録されたMACアドレスが削除されるまでの時間を**エージングタイム**といい、Catalyst2960ではデフォルトで300秒に設定されている。手動で登録(STATIC)した場合は、削除もしくはスイッチを出荷状態に戻さない限りMACアドレステーブルに残る。


:::note info
**MACアドレスのエージングタイムはVLANごとに指定することができる**
:::



```markdown:show mac-address-tableコマンド
Switch#show mac-address-table 
          Mac Address Table
-------------------------------------------

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

   1    000c.cfb4.3601    DYNAMIC     Fa0/24
  10    0002.4ab2.93ae    DYNAMIC     Fa0/1
  10    0004.9a1d.0001    DYNAMIC     Fa0/24
  10    000c.cfb4.3601    DYNAMIC     Fa0/24
  20    0004.9a1d.0002    DYNAMIC     Fa0/24
  20    000c.cfb4.3601    DYNAMIC     Fa0/24
  20    00d0.ba17.ee94    DYNAMIC     Fa0/13
```


## VTPの設定

### vtp pruningコマンド
VTPプルーニングを有効にするコマンド。グローバルコンフィギュレーションモードで行う必要がある。1台のサーバモードのスイッチで実行すると、ドメイン内の他のスイッチでも有効になる。

### vtp domainコマンド
**書式：vtp domain [ドメイン名]**
VTPのドメイン名を設定するコマンド。グローバルコンフィギュレーションモードで行う必要がある。デフォルトでは空の文字列(名前なし)になっており、VTPで同期をとるには同じドメイン名にする必要がある。

::: note info
VLANデータベースコンフィギュレーションモードでもコマンドを実行することが可能。
:::

### vtp passwordコマンド
**書式:vtp password <VTPパスワード>**
VTPでパスワードを設定するコマンド。グローバルコンフィギュレーションモードで行う必要がある。設定する場合、ドメイン内の同期を取る全てのスイッチで設定する必要がある。

### vtp versionコマンド
**書式:vtp version < 1 | 2 | 3>**
VTPバージョンを設定するコマンド。グローバルコンフィギュレーションモードで行う必要がある。デフォルトは1となっている。


### vtp modeコマンド
**書式：(config)#vtp mode [server | client | transparent]**
**書式：(vlan)#vtp [server | client | transparent]**
VTPの動作モードを変更するコマンド。グローバルコンフィギュレーションモードで行う必要があるが、VLANデータベースコンフィギュレーションモードでも実行可能。デフォルトはサーバモードになっている。

## VTPの確認

### show vtpコマンド
**書式:show vtp < status | password>**
VTPの設定を確認するコマンド。特権EXECモードで行う必要がある。

| オプション | 内容 |
|:-:|:-:|
| status  | VTPの現在の状態が表示される  |
| password  | 設定したパスワードが表示される。  |

```markdown:show vtp statusコマンド
CatA#show vtp status
VTP Version                     : 1
Configuration Revision          : 0
Maximum VLANs supported locally : 255
Number of existing VLANs        : 6
VTP Operating Mode              : Server
VTP Domain Name                 : rouegarpin
VTP Pruning Mode                : Disabled
VTP V2 Mode                     : Disabled
VTP Traps Generation            : Disabled
MD5 digest                      : 0xB0 0x78 0xCC 0x76 0xA7 0x32 0x8A 0x2D 
Configuration last modified by 0.0.0.0 at 3-1-93 00:07:21
Local updater ID is 0.0.0.0 (no valid interface found)
```

### show interfaces pruningコマンド
**書式:show interfaces [<インターフェイス>] pruning**
VTPプルーニングによりどのVLANの通信が取り除かれるかを確認するコマンド。特権EXECモードで行う必要がある。


## VLAN間ルーティングの設定
VLANルーティングは、スイッチとルータの両方で設定を行う必要がある。

### interfaceコマンド
**書式：interface [インターフェイス].[論理番号]**
サブインターフェイスを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。インターフェイスには物理インターフェイスを設定し、論理番号を指定する。コマンド実行後はサブインターフェイスコンフィギュレーションモードに切り替わる

``` markdown:コマンド実行後
(config-subif)#
```

### encapsulationコマンド
**書式：encapsulation [dot1q | isl] [VLAN番号] [native]**
ルータでトランキングプロトコルの指定をするコマンド。**サブインターフェイスコンフィギュレーションモード**で行う必要がある。使用するトランキングプロトコルを接続するスイッチと合わせる必要がある。VLAN番号でそのサブインターフェイスが属するVLANを指定する。nativeはネイティブVLAN用のサブインターフェイスの時に使用する。

### interface vlanコマンド
**書式：interface vlan [VLAN番号]**
SVIを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。デフォルトでVLAN1用のSVIだけ作成されている。

### ip routingコマンド
レイヤ3スイッチでのルーティングを有効にするコマンド。グローバルコンフィギュレーションモードで行う必要がある。デフォルトでは無効になっている。

### no switceportコマンド
ルーテッドポートに変更するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。一度ルーテッドポートに変更したポートを再度スイッチポートに戻すには、インターフェイスコンフィギュレーションモードで**switchportコマンド**を実行する。

``` markdown:再度スイッチポートに戻す
(config-if)#switchport
```

## VLAN間ルーティングの設定例

<details><summary>VLAN間ルーティングの設定例</summary>

![キャプチャ12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/7e5d84bb-513f-234a-69d7-b4cd55708e19.png)

ルーター、スイッチ、PC間をストレートケーブルでつなぎ、各PCの「IP Configuration」を開き、IPv4アドレスの設定を行う。

+ PC1⇒192.168.10.1/24
+ PC2⇒192.168.20.1/24
+ PC3⇒192.168.30.1/24

``` markdown:SW01の初期設定
Switch#conf t
Switch(config)#hostname SW01
SW01(config)#vlan 10
SW01(config-vlan)#exit
SW01(config)#vlan 20
SW01(config-vlan)#exit
SW01(config)#interface FastEthernet 0/1
SW01(config-if)#switchport mode access 
SW01(config-if)#switchport access vlan 1
SW01(config-if)#exit
SW01(config)#
SW01(config)#interface FastEthernet 0/2
SW01(config-if)#switchport mode access 
SW01(config-if)#switchport access vlan 10
SW01(config-if)#exit
SW01(config)#interface FastEthernet 0/3
SW01(config-if)#switchport mode access 
SW01(config-if)#switchport access vlan 20
SW01(config-if)#end
```

``` markdown:R01の設定
##サブインターフェイスの作成
R01#conf t
R01(config)#interface FastEthernet 0/0.10
R01(config-subif)#
%LINK-5-CHANGED: Interface FastEthernet0/0.10, changed state to up

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

R01(config-subif)#encapsulation dot1Q 10
R01(config-subif)#ip address 192.168.20.254 255.255.255.0
R01(config-subif)#no shutdown 
R01(config-subif)#end
R01#
%SYS-5-CONFIG_I: Configured from console by console

R01#conf terminal 
R01(config)#interface FastEthernet 0/0.20
R01(config-subif)#
%LINK-5-CHANGED: Interface FastEthernet0/0.20, changed state to up

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

R01(config-subif)#encapsulation dot1Q 20
R01(config-subif)#ip address 192.168.30.254 255.255.255.0
R01(config-subif)#no shutdown 
R01(config-subif)#end
```

``` markdown:SW01のトランクの設定
SW01(config)#interface FastEthernet 0/8
SW01(config-if)#switchport mode trunk
SW01(config-if)#end
```

各PC毎に「ip configuration」からデフォルトゲートウェイを設定する。

+ PC01⇒192.168.10.254
+ PC02⇒192.168.20.254
+ PC03⇒192.168.30.254

ここで疎通確認を行うと各PCに対してpingが通るようになる。


</details>