前の記事では、 AccessポートとTrunkポートを使ってVLANを扱う仕組み を学びました。
VLAN 10とVLAN 20のようにLANを分割すると、 それぞれは別のL2ネットワークとして扱われます。
192.168.10.10
越えられない
192.168.20.10
PC-AからPC-Bへ通信したい場合、 MACアドレステーブルやTrunkポートだけでは 通信を成立させられません。
別のIPネットワークへ、パケットはどうやって届けられるのでしょうか?
そこで必要になるのが ルーティング(Routing)です。
ルーティングという言葉を覚えるだけではなく、 「端末が別ネットワーク宛てのパケットをデフォルトゲートウェイへ送り、 ルーターが宛先IPアドレスとルーティングテーブルを確認して 次の転送先を決定する」 という流れを説明できる状態を目指します。
ルーティングとは?
ルーティングとは、 宛先IPアドレスをもとに、 パケットをどのネットワークへ転送するか決める処理 です。
この処理を行う代表的なネットワーク機器が ルーター(Router)です。
L2スイッチは主に 宛先MACアドレスを利用してフレームを転送します。 一方、ルーターは 宛先IPアドレスを利用してパケットの転送先を判断します。
L2スイッチとルーターの違い
同一L2ネットワーク内で フレームを転送する。
異なるIPネットワーク間で パケットを転送する。
PCはまず「同じネットワークか、別ネットワークか」を判断する
ルーターへパケットを送る前に、 PC自身が重要な判断を行います。
それが、 宛先IPアドレスが自分と同じIPネットワークにあるかどうか です。
たとえばPC-Aが次の設定だったとします。
PC-Aから 192.168.10.20 へ通信する場合は、 同じ192.168.10.0/24に所属しています。
同一ネットワーク
→ 直接L2通信
別ネットワーク
→ Gatewayへ送る
PCはサブネットマスクを利用して宛先ネットワークを判断し、 宛先が別ネットワークなら デフォルトゲートウェイへフレームを送信 します。
デフォルトゲートウェイとは?
デフォルトゲートウェイとは、 端末から見た 別ネットワークへ通信するときの出口 です。
Internet etc.
PC-A自身は、 インターネットや他のすべてのネットワークへの 詳細な経路を知る必要はありません。
「自分のネットワーク以外なら、 まずこのルーターへ渡す」 という情報として デフォルトゲートウェイを利用します。
別ネットワーク宛てでもARPする相手は最終宛先ではない
ここは初級で学習したARPと ルーティングがつながる重要なポイントです。
PC-Aから192.168.20.20へ通信するとします。
PC-Aは192.168.20.20のMACアドレスを ARPで調べる?
答えは、 通常は調べません。
192.168.20.20は別ネットワークに存在するため、 PC-AがL2で直接届ける相手ではありません。
PC-Aが必要なのは、 デフォルトゲートウェイ192.168.10.1のMACアドレス です。
GatewayのMACを取得
別ネットワークへ通信するとき、 IPパケットの最終宛先は192.168.20.20でも、 最初のEthernetフレームの宛先MACは デフォルトゲートウェイのMACアドレス になります。
PCからルーターへ送られるフレームを見てみよう
PC-AからPC-Bへ送る通信を例にします。
PC-Aから最初に送られるデータは、 概念的には次のようになります。
ここで注目してください。
ルーターは受信したパケットの宛先IPアドレスを見る
フレームを受信したルーターは、 自分宛てのEthernetフレームであることを確認し、 Ethernetヘッダーを処理します。
その内側にあるIPパケットを見ると、 宛先IPアドレスは 192.168.20.20です。
= Router
ルーターはルーティングテーブルを確認する
ルーターは、 宛先IPアドレスを見ただけでは どこへ転送するべきか判断できません。
そこで利用するのが ルーティングテーブル(Routing Table) です。
192.168.10.0/24
Gi0/0
192.168.20.0/24
Gi0/1
0.0.0.0/0
203.0.113.1
今回の宛先は192.168.20.20なので、 192.168.20.0/24に一致する経路を利用できます。
実際のルーティングテーブルでは、 Connected、Static、OSPFなどの経路情報、 Next Hop、メトリックなど多くの情報が表示されます。 詳しい読み方は次の記事で学習します。
Next Hopとは?
宛先ネットワークが、 ルーターへ直接接続されているとは限りません。
複数のルーターを経由する場合、 「次にどのルーターへ渡すか」という情報が必要です。
この次の転送先を Next Hop(ネクストホップ) と呼びます。
ルーターは必ずしも最終宛先までの全通信を 一度に処理するわけではありません。
自分のルーティングテーブルを見て、 次に渡すべき場所へ1ホップずつ転送 していきます。
ルーターは次のリンク用に新しいL2フレームを作る
ルーティングで非常に重要なのが、 L2ヘッダーとL3ヘッダーの扱いの違いです。
RouterがパケットをGi0/1からPC-B側へ転送するとします。
そのとき、 最初にPC-Aから届いたEthernetフレームを そのままPC-Bへ送るわけではありません。
一方、IPパケットを見ると、
通常のルーティングでは、 最終的な送信元IP・宛先IPは維持されたまま転送されます。
L2ヘッダー:リンクごとに作り直される
L3の送信元・宛先IP:通常のルーティングでは基本的に維持される
ここでは純粋なルーティングを理解するため、 NATなどのアドレス変換は考えません。
別ネットワークへ通信する流れを最初から確認しよう
ここまでの内容を、 PC-AからPC-Bへの通信として整理します。
ここで実際に動かしてみよう:ルーティング通信シミュレーター
PC-Aから別ネットワークのPC-Bへ パケットが届くまでを1ステップずつ確認してみましょう。
Packet Routing Simulator
宛先が同じネットワークか確認
PC-Aは自分のIPアドレス・サブネットマスクと宛先192.168.20.20を比較します。 宛先は192.168.10.0/24ではないため、別ネットワークだと判断します。
理解度チェック:この通信はGatewayへ送る?
PCの設定と宛先IPアドレスから、 直接通信するのかデフォルトゲートウェイへ送るのか判断してみましょう。
通信方法を選択してください
PCは192.168.10.50/24です。 宛先が192.168.10.0/24内かどうか考えてみましょう。
実際のルーターでもルーティングテーブルを確認できる
Cisco IOSでは、 次のコマンドでIPv4ルーティングテーブルを確認できます。
Router> enable
Router# show ip route
たとえば、次のような情報が表示されます。
C 192.168.10.0/24 is directly connected, GigabitEthernet0/0
C 192.168.20.0/24 is directly connected, GigabitEthernet0/1
S* 0.0.0.0/0 [1/0] via 203.0.113.1
この表示には、 宛先ネットワーク、経路の種類、Next Hop、出力インターフェース などの情報が含まれています。
しかし、この時点では すべてを暗記する必要はありません。
ルーティングはトラブルシューティングでも重要
「同じLANでは通信できるのに、 別ネットワークへ通信できない」 という障害では、 ルーティングが重要な確認ポイントになります。
端末側に誤ったGatewayが設定されていると、 別ネットワークへパケットを渡せません。
ルーターが宛先ネットワークへの経路を 持っているか確認します。
行きだけでなく、 応答パケットが戻るための経路も重要です。
確認問題:ルーティングの基本を理解できたか確認しよう
ルーターがパケットの転送先を判断するとき、 主に確認する情報はどれですか?
ルーターは宛先IPアドレスをもとに ルーティングテーブルを検索し、 パケットの転送先を決定します。
PCから別IPネットワークへ通信するとき、 最初にEthernetフレームを送る代表的な相手は誰ですか?
宛先が別ネットワークの場合、 PCはデフォルトゲートウェイのMACアドレスを利用して ルーターへフレームを送信します。
通常のルーティングでルーターを1台越えた場合、 正しい説明はどれですか?
ルーターは次のリンクへ転送する際に 新しいL2フレームを作成します。 一方、通常のルーティングでは最終的な送信元・宛先IPは基本的に維持されます。
3問に挑戦してみましょう。
まとめ
ルーティングは 宛先IPアドレスをもとにパケットの転送先を決める仕組み
PCはサブネットマスクから同一・別ネットワークを判断し、 別ネットワークなら デフォルトゲートウェイへ送信 する
ルーターは宛先IPを ルーティングテーブル と照合して転送先を決める
次に転送するルーターなどを Next Hop と呼ぶ
ルーターを越えると L2のMACアドレスはリンクごとに変化するが、 通常のルーティングでは送信元・宛先IPは基本的に維持される
次は「ルーティングテーブルの見方」を理解しましょう
ルーターが宛先IPアドレスを確認し、 ルーティングテーブルから転送先を決めることは理解できました。
しかし、実際のルーティングテーブルを見ると、 C・L・S・O、Next Hop、Administrative Distance、 Metric、Default Route など多くの情報が表示されます。
また、1つの宛先に複数の経路が存在した場合、 ルーターはどの経路を優先するのか という疑問もあります。
次の記事では、 実際のルーティングテーブルを1行ずつ読みながら、 「このパケットはどこへ転送される?」 を自分で判断できる状態を目指します。
ルーティングテーブルの見方を理解する →
