ルーティングを知ってネットワーク初心者から脱却しよう！

#はじめに
ネットワーク初心者を脱却するために、ルーティングを覚えておけば、
ある程度通信の流れについていけるかなと思いました。
前回の記事は要点をまとめましたが、今回はもう少し突っ込んで丁寧にルーティングを説明したいと思います。

〇なんとなくIPアドレスとゲートウェイの設定している人にルーティングを交えて要点をまとめて説明したい
https://qiita.com/siberiannhasuki_iijima/items/f601a620afe92f6c4e23

#IPアドレス・サブネットマスク
まずは通信を行うのに必要なIPアドレス・サブネットマスクについてですが
詳細は上記の記事の「〇なんとなくIPアドレスとゲートウェイの～」をご覧ください。

特にサブネットマスクは理解しないとルーティングが理解できません。
IPは同じセグメント内(サブネットマスクの範囲)でないと通信できません。
セグメントが異なるIPアドレス同士では通信が行えません。

|![基礎.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/7f446f9b-db2d-bace-d8ce-915b95bca241.png)
|:--|

#ルーティングとは
サブネットマスクのネットワーク範囲を超えて、別セグメントに通信を橋渡しするときにルーティング機能が使われます。
ルーティングにはGateway（L3SWやFirewallなど）が必要です。
先ほどの絵だと通信範囲AのPC1が通信範囲BのPC3が通信できるようになります。

|![aaaaaaaaaaaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/253c5848-035d-79b0-3635-4b574a27c848.png)
|:--|

ただし通信できるようにするためには以下の条件が必要です。

・Gatewayに通信範囲Aと通信範囲BのIPアドレスを設定
・PC1にGateway向けにデフォルトゲートウェイを設定
・PC3にGateway向けにデフォルトゲートウェイを設定

|![bbbbbbbbbbbbb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/ef490998-2a4e-d676-df4b-17c3f172fc1e.png)
|:--|

これでルーティングによる通信はできてるのですが
実はPCやGatewayはそれぞれ「ルーティングテーブル」を持っていて、
通信を行うときにそこに記載してる「経路」に合致する通信先に通信を流します。
ルーティングテーブルには自身のIPと設定したデフォルトゲートウェイが自動で入ります。

|![ccccc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/8e765a44-244c-6afc-1d0b-2730439db1b5.png)
|:--|

どういう流れでルーティングテーブルの経路を決定しているのかは次で説明します。

#ルーティングの流れ
PC1が別セグメントのPC3に通信を行うときの流れを説明します。
※正確にはARP処理などが入りますが割愛します

|![ddddddddddddd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/f460a9e2-6ccd-0f52-012e-1a1e501f5f9f.png)
|:--|

＜PC1＞
①通信先（PC3）のIPアドレスが自身のルーティングテーブルにあるか確認
②ルーティングテーブルのデフォルトゲートウェイの経路に合致するのでゲートウェイの送信先インタフェースに通信を流す
　※ネットワーク宛先/ネットマスク「0.0.0.0」は「0.0.0.0 ～ 255.255.255.255」になり、すべてのIPアドレスの範囲になります
＜Gateway＞
③通信を受け取ったGatewayは自身のルーティングテーブルを確認
④PC3のIPアドレスは自身のIPアドレス(192.168.0.0)の経路に合致するので、ルーティングテーブルに載っているPC3接続ポートに通信を流す
＜PC3＞
⑤通信を受取り、処理をする
⑥受け取った通信を戻すため、自身のルーティングテーブルを確認してGatewayの経路に通信を戻す
＜Gateway＞
⑦通信を受け取ったGatewayは自身のルーティングテーブルを確認
⑧PC1のIPアドレスは自身のIPアドレス(192.168.1.0)の経路に合致するので、ルーティングテーブルに載っているPC1接続ポートに通信を流す
＜PC1＞
⑨通信を受取り、処理をする

長くなりましたが簡単に言うと
__各機器は通信するときにルーティングテーブルを確認して
ネットワーク宛先が合致する経路に通信を流しています。__

#スタティックルーティング
例えば、以下の絵のような構成でPC1がPC3に通信したいときがあります。
PC1から通信を受取ったGateway1は、PC3のセグメント(192.168.0.X)は自身が持ってないIPアドレスなので
デフォルトゲートウェイのインターネットに向かって通信を流してしまい、PC1はPC3と通信できません。
インターネットはサイトなどがさまざまなIPアドレスを持っていて絞れないため、インターネットへデフォルトゲートウェイを設定することがよくあります。

|![ST11111111111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/e295e8c4-23da-063c-2c85-6b721c3b6720.png)
|:--|

この場合、スタティックルーティングという設定でカスマム的にルーティングを追加することでPC1からPC3へ通信を通すことができます。
Gateway1にネットワーク宛先がPC3のセグメントの場合、「ネクストホップ」という通信の転送先をGateway2のIPアドレスにして通信が流れるようスタティックルーティングを設定します。
通信を受取ったGateway2はPC3のセグメント(192.168.0.X)は自身が持っているIPアドレスなので
経路に合致しPC3接続ポートに通信を流すことができます。

|![eeeeeeeeeeeeeee.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/18712ec8-1ea8-e170-6377-182905cc422c.png)
|:--|

めでたしめでたし・・・と思いきや通信は戻ります。
Gateway2もPC1のセグメントは自身の持っていないIPアドレスなので
同じようにGateway2にもPC1向けのスタティックルーティングを追加する必要があります。

|![ffffffffffffffffffff.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596030/e0367aae-ff82-d9df-ffa1-a2212b138cde.png)
|:--|

上記のように戻りの通信にもスタティックルーティングが必要になります。
例えば既存システムに新セグメントなどが追加になったときにも必要で、__戻りのルーティングは忘れやすいのでご注意ください。__

#おわりに
いかがでしたでしょうか？
私が以前投稿した以下の記事も参考にしてネットワークライフを楽しんでいただければと思います。

〇通信の流れを参照サイトでまとめてみた
https://qiita.com/siberiannhasuki_iijima/items/b46ea7533b8a19343984