ルータの機能とルーティング【ルータの設定】

CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。



1. ルータの基本
-

#### 1-1.ルータとは？

ルータは、異なるネットワークを橋渡しする機器です。
異なるネットワーク間の通信を実現する為に、ルータは最適なルートを選択して
パケットを転送する処理を行います。これを<font color="Red"><b>ルーティング</b></font>といいます。


#### 1-2.ルータとスイッチの違い

##### ■ 1-2-1.スイッチ
スイッチは、レイヤ2（データリンク層）で動作する機器で、転送先を<font color="Red"><b>MACアドレス</b></font>によって
選択します。フレームのイーサネッヘッダト内に記述されている宛先MACアドレスを確認し、
自身の持っている<font color="Green"><b>MACアドレステーブル</b></font>を参照して、転送先を決定します。

また、スイッチはLANを構成するために使うネットワーク機器で、LANに参加するコンピュータを
つないで、コンピュータ同士が通信できるようにするもの。つまり、同じネットワーク内の通信を
可能にするものです。

##### ■ 1-2-2.ルータ
ルータは、レイヤ3(ネットワーク層)で動作する機器で、転送先を<font color="Red"><b>IPアドレス</b></font>によって
選択します。ルーターはパケットの転送先を判断する為にルーティングテーブルを保持して
います。ルーティングの際には、パケットのIPヘッダ内の宛先IPアドレスを確認し、
自身の持っている<font color="Green"><b>ルーティングテーブル</b></font>を参照して、転送先を決定します。


ルータは、LAN同士をつなぐために使うネットワーク機器で、
それぞれのLANにつながっているコンピュータ同士が通信できるようにするもの。
つまり<font color="Green">異なるネットワーク間の通信を可能</b></font>にするもの。

>
スイッチはIPアドレスの設定をしなくても動作しますが、ルーターは、
IPアドレスの設定なしでは動作しません。

#### 1-3.ルーティングテーブル

ルーティングテーブルには<font color="RED">宛先ネットワーク</font>、<font color="RED">ネクストホップ※1</font>、及び<font color="RED">送信インターフェース※2</font>などが
登録されていて、それを基に宛先のネットワークに向かう為の最適なルートを選択します。
>
※1 ネクストホップとは、宛先に向かう為に経由する次に転送すべき隣接ルータの事。
※2 インターフェイスとは、コンピュータで、異なる機器・装置のあいだを接続して、
交信や制御を可能にする装置やソフトウェア。

#### 1-4.ルータの基本設定

##### ■ 1-4-1.IPアドレスの設定
IPアドレスの設定について[「IPアドレスの設定」](https://qiita.com/k-yasuhiro/items/0170ea2bbc55ceacd60d#3-5ip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E8%A8%AD%E5%AE%9A)前投稿記事参照
<br>

##### ■ 1-4-2.シリアルインターフェイスの設定
fastEthernet や Gigabit Ethernet等以外にも、<b>Serial（シリアル）</b>と呼ばれるタイプの、
インターフェイスがあります。
シリアルインターフェイス※3は、主にWANの接続で利用します。
>
※3 シリアルインターフェイスとは、1本の信号線や回線を使いデータを1ビットずつ順番に
送信する方式の事です。

WANを接続する場合、通信事業者のサービスを利用する事になります。
通信事業者のネットワークに接続するには、<font color="Red">DCE</font>と呼ばれる機器が必要です。
そして、実際に利用者のデータを送信する機器の方を、<font color="Red">DTE</font>といいます。
ルータやパソコンがこれにあたります。

通常、WAN接続において、ルータ側はDTEになり、通信事業者側がDCEとなります。
なので、通常、DCE側がクロック信号をDTEに送ってタイミングを合わせるので、ルータに
クロックレート※4の設定は必要ありません。
>
※4 クロックレートとは、シリアルインタフェースがレイヤー2の信号をやりとりするタイミング（速度）のこと。


しかし、通信事業者側の機器を使用せず、2台のルータをシリアルケーブルで直接つなげた場合、
どちらかのルータがDCEの役割をする必要性があります。このように、ルータをシリアルケーブルで
直接つなげる事を、<font color="Red"><b>Back-to-Back接続</b></font>といいます。	 

Back-to-Back接続の為のシリアルケーブルには、DCEとDTEの表記があり、
DCEコネクトが接続された方にクロックレートの設定を行う必要があります。

実際のシリアルケーブルの画像
<img width="500" alt="ファイル名" src="https://i.gyazo.com/4514ca694793ad68bdddde64052e543c.png">

また、直接ケーブルから確認出来ない場合は下記のコマンドから確認します。
<b>特権EXECモード</b>で次の<font color="Red"><b>show controllers serialコマンド</b></font>を実行します。

```
# show controllers serial < 番号 >
```
>
＜番号＞は、インターフェイス番号を指定します。

そして、クロックレートの設定するには、<b>インターフェイスコンフィグレーションモード</b>で
次の <font color="Red"><b>clock rateコマンド</b></font>を実行します。

```
(config-if)# clock rate < クロックレート値 >
```
>
＜クロックレート値＞の単位は、bpsとなります。


##### ■ 1-4-3.インターフェイスの通信モードと通信速度の設定
Cisco製のルータのイーサネットインターフェイスでは、オートネゴシエーション機能が、
デフォルトで有効になっています。
通信モードのオートネゴシエーション機能の有効・無効を設定するには、
<b>インターフェイスコンフィグレーションモード</b>で次の <font color="Red">duplexコマンド</font>を実行します。

```
(config-if)# duplex < auto | full | half >
```
>
 ＜auto＞を選択すると、オートネゴシエーション機能が有効になる
 ＜full＞を選択すると、オートネゴシエーション機能が無効になり、全二重の通信モードになる
 ＜half＞を選択すると、オートネゴシエーション機能が無効になり、半二重の通信モードになる

また、通信速度のオートネゴシエーション機能の有効・無効を設定するには、
<b>インターフェイスコンフィグレーションモード</b>で次の<font color="Red">speedコマンド</font>を実行します。

```
(config-if)# speed < 10 | 100 | 1000 | auto >
```
>
＜10＞等の数字を指定すると、その通信速度で動作します
＜auto＞を指定すると、オートネゴシエーション機能が有効になる


　
##### ■ 1-4-4.インターフェイスの確認
インターフェイスを設定した際や、通信が出来なくなった場合、
インターフェイスの状態の確認をする必要があります。インターフェイスの状態の確認するには、
<b>特権EXECモード</b>で次の<font color="Red">show interfacesコマンド</font>を実行します。

```
# show interfaces [< インターフェイス >]
```
インターフェイスを指定ぜずに実行した場合、全てのインターフェイスが表示されます。
特定のインターフェイスを表示させる為には、指定するインターフェイスで、「Serial 0」と形で
指定します。
<br>

##### ■ 1-4-5.インターフェイスのIPに関する情報の確認
インターフェイスのIPに関する情報の確認するには、<b>特権EXECモード</b>で
次の <font color="Red">show ip interfaceコマンド</font>を実行します。
show interfacesコマンドとは異なりIPに関する情報に特化して確認出来ます。

```
# show ip interface [brief] 【<インターフェイス>】
```
>
[ brief ]を付けた場合は、インターフェイスの状態が簡易的に表示されます

下記の画像がコマンドの実行例
<img width="600" alt="ファイル名" src="https://i.gyazo.com/e829ac90d8a709e8a1b58f613c03778c.png">
コマンドで確認出来る項目の説明
ー interface
インターフェイス名を表示

ー IP-Address
IPアドレスを表示
<font color="Red">unassignedは、IPアドレスが設定されていない</font>

ー Method
unsetは、設定されていない
manualは、手動で設定されている
その他にも
NVRAMは、設定後、メモリに保存している
DHCPは、DHCPで自動設定されている

ー Status
<font color="Red">administratively downは、シャットダウン状態（有効化していない状態）</font>
upは、正常な状態
downは、機能していない

ー Protocol
upは、正常な状態
downは、正常ではない状態

 
<br>

##### ■ 1-4-6.インターフェイスの正常確認方法
show interfaceコマンドの表示項目のなかで最も重要なのは、最初の1行目の部分です。
<img width="700" alt="ファイル名" src="https://i.gyazo.com/dc45c205cab3c6472717d1ed75703467.png">
この1行目の<font color="green">「Serial1/0 is administratively <b>down</b>, line protocol is <b>down</b>」</font>の、
down等の組み合わせで、そのインターフェースが物理層とデータリンク層で、正常であるかどうかを、
判断することができます。

|Status　　　　　　　|Protocol　　　　|インターフェイスの状態　　　　　　　　　|
|:---|:---|:---|
|administratively down※5|down|Interfaceがshutdownされている状態。<font color="red">no shutdownにより有効にする必要がある。</font>|
|down|down|ケーブルが接続されていない、断線している。相手側のInterfaceがシャットダウン状態である。|
|up|down|<font color="red">クロックレートが設定されていない。</font>カプセル化のタイプが双方で異なっている状態。|
|up|up|Interfaceが有効に機能している状態。|
>
※5 インターフェイスが、"shutdown"された状態であることを意味する。

#### 1-5.接続性の確認

機器間で通信が出来るか確認するコマンドとして#pingコマンドや#tracerouteコマンドが
あります。

##### ■ 1-5-1.pingコマンド
pingは、ネットワーク疎通を確認するためのコマンドです。
疎通を確認したいホストに対して、IPパケットを発行して、そのパケットが相手に届いて返答が、
戻ってくるかどうかで接続性を確認するためのコマンドです。
こうしたネットワークの疎通確認に用いるコマンド／ツールは、ICMPの性質をうまく利用しています。

⚫️ ICMPとは？
もともとICMPは、ネットワークに障害があり正常な通信が行えない場合に、
経路に位置するルーターやホストが、送信元ホストへその障害を知らせるためのプロトコルである。
そのため、エラー報告プロトコルとも呼ばれている。

IP自体は到達信頼性の低いプロトコルだが、仮に途中でパケットが破棄されたとしても、
再送などによりエラーをハンドリングすることは可能だ。
しかし永続的な障害などの場合には、非常に効率が悪い結果となる。そこで、ICMPによって、
エラーを通知することで、復旧やエラーハンドリングの効率を上げる目的を持っている。
こうした障害時通知など特殊な目的のためには、より詳細な情報が通知できるように設計されている。

<font color="DarkTurquoise">※[ネットワークの疎通を確認するには？](https://www.atmarkit.co.jp/ait/articles/0108/30/news001.html)という記事参照</font>
<br>

##### ■ 1-5-2.標準pingコマンドと拡張pingコマンド

pingコマンドには、標準pingコマンドと拡張pingコマンドがあります。

⚫️ 標準pingコマンド
標準pingコマンドは<b>ユーザーEXECモードまたは特権EXECモード</b>で、
次の <font color="Red"><b>pingコマンド</b></font>を実行します。

```
# ping < IPアドレス | ホスト名 >
```
<br>

⚫️ 拡張pingコマンド
標準pingコマンドでは、ICMPエコー要求の回数などが決まっていますが、拡張pingコマンドを
使用すると回数だけでなくパケットのサイズの送信元となるIPアドレスを変更して送信する事が
出来ます。
拡張pingコマンドは<b>特権EXECモード</b>で、次の <font color="Red"><b>pingコマンド</b></font>を実行します。

```
# ping
```
>
標準pingコマンドとは異なり、ホスト名等を指定せずに実行します。

　
拡張pingコマンドを使用して変更出来るフィールドの一部

|フィールド　　　　　　　　　|説明　　　　|
|:---|:---|:---|
|Protocol [ip]:|サポートされているプロトコルを入力。 appletalk、clns、ip、novell、apollo、vines、decnet、または xns を入力します。 デフォルトは ipです。|
|Target IP address:|宛先の IPアドレスまたはホスト名を入力。デフォルトは none です。|
|Repeat count [5]:|宛先アドレスに送信されるICMPパケットの送信回数。デフォルトは 5です。|
|Datagram size [100]:|送信するデータのサイズ。デフォルトは 100バイトです。|
|Timeout in seconds [2]:|タイムアウトとみなすまでの時間。 デフォルトは、2（秒）です。|
|Extended commands [n]:|さらに詳細な設定を行うかどうか。yを入力すると、送信元のインターフェイスなどを指定出来る。|
|Source address or interface:|送信元のインターフェイスの変更が出来る。|
|Sweep range of sizes [n]:|パケットのサイズを変更。デフォルトは noです。|

<font color="DarkTurquoise">※詳しくは、[拡張pingおよび拡張tracerouteコマンドの使用](https://www.atmarkit.co.jp/ait/articles/0108/30/news001.html)の記事参照</font>
<br>

##### ■ 1-5-3.送信元インターフェイスの変更

拡張pingコマンドでは、<font color="green">「Source address or interface:」</font>項目で送信元インターフェイスの
IPアドレスもしくは、インターフェイス名を指定出来ます。

標準pingコマンドでも同様に、送信元インターフェイスをデフォルトから変更出来ます。
<b>特権EXECモード</b>で次の <font color="Red"><b>sourceオプションを付けたpingコマンド</b></font>を実行します。

```
# ping < IPアドレス | ホスト名 > source < IPアドレス | インターフェイス名 >
```
<br>

##### ■ 1-5-4.pingコマンド実行結果の意味

|フィールド　　　　　　　　　|説明　　　　|
|:---|:---|
|!|応答が受信出来た事を表す|
|.（ピリオド）|応答が一定時間内に受信出来なかった事を表す|
|U|応答として宛先到達不能が返ってきた事を表す|
|Q|応答として宛先が輻輳中が返ってきた事を表す|
|M|応答としてフラグメント不可が返ってきた事を表す|
|？|パケットタイプが不明な事を表す|
|＆|パケットの生存時間TTLを超過してしまった事を表す|

<br>

##### ■ 1-5-5.tracerouteコマンド(トレースルート コマンド)

tracerouteコマンドでは、宛先に届くかどうかの確認だけでなく、<b>どのルーターを経由して
宛先に到達したのか</b>確認する事が出来ます。
また、実行結果を見ることによって、通信相手までどの様な経路を通ってたどり着くのかもわかるので、
通信トラブル際、どこに原因があるかを切り分ける時に役立ちます。

tracerouteコマンドを実行するには、<b>特権EXECモード</b>で次の <font color="Red"><b>tracerouteコマンド</b></font>を実行します。

```
# traceroute < IPアドレス | ホスト名 >
```
　
⚫️ tracerouteコマンドの動作
tracerouteコマンドでは、IPヘッド内の生存期間を表す<font color="Red">TTL</font>を使います。

TTLとは、ルータを通過する度に1ずつ減らされ、TTLが0になったパケットはその時点で破棄されます。
TTLを設定することを指して「パケットの寿命を設定する」と表現する事もあります。

また、パケットが破棄されると同時にパケットを破棄したルータは送信元に応答として、
ICMP時間超過パケットを返します。この返って来た送信元IPから、IPアドレスを判別します。

図で確認すると下記のような感じになります。
<img width="700" alt="ファイル名" src="https://i.gyazo.com/487810bbed8ae1e75cd39e0f0797ac6f.png">
tracerouteコマンドを実行すると、コンピュータは指定した通信相手を宛先とした、
エコー要求パケットTTLを 1に設定して送信します。

パケットが「ルーター1」に届くと、TTLは1減らされTTLは0になります。

「ルーター1」はパケットの有効期限切れと判断し、送信元のコンピュータに「時間超過パケット」を、
送り返します。

TTLを1ずつ増やしながら、宛先からエコー応答パケットが届くまでこれを続けます。

<font color="DarkTurquoise">※[tracertコマンドの使い方](https://network-beginners-handbook.com/tracert/#i-3)の記事参照</font>

## 関連投稿記事
[ルータの機能とルーティング【ルーティングの設定】](https://qiita.com/k-yasuhiro/items/400770ff651727916923)