前の記事では、 ルーターが宛先IPアドレスを確認し、ルーティングテーブルから転送先を決める ことを学びました。
たとえばルーターが、 192.168.20.50宛てのパケットを受信したとします。
ここまでは理解できても、
実際にCiscoルーターで
show ip route
を実行すると、次のような表示が出てきます。
C 192.168.10.0/24 is directly connected, GigabitEthernet0/0
L 192.168.10.1/32 is directly connected, GigabitEthernet0/0
C 192.168.20.0/24 is directly connected, GigabitEthernet0/1
S 192.168.30.0/24 [1/0] via 10.0.0.2
S* 0.0.0.0/0 [1/0] via 203.0.113.1
どこを見ればパケットの転送先が分かるのでしょうか?
今回は、このルーティングテーブルを 自分で読める状態 にしていきます。
show ip routeを見たときに、
「どの宛先ネットワークへの経路なのか」
「次にどこへ送るのか」
「どの経路が実際に選ばれるのか」
を判断できる状態を目指します。
ルーティングテーブルとは?
ルーティングテーブルとは、 宛先IPネットワークと、その宛先へパケットを届けるための経路情報を記録した表 です。
192.168.10.0/24
Direct
Gi0/0
192.168.20.0/24
Direct
Gi0/1
192.168.30.0/24
10.0.0.2
Gi0/2
ルーターはパケットの 宛先IPアドレス と、この表にある宛先ネットワークを比較します。
個々のPCすべてを登録しているわけではありません。 多くの場合、 192.168.20.0/24のようなネットワーク単位 で経路を保持します。
show ip routeを見てみよう
Cisco IOSでは、 IPv4ルーティングテーブルを確認する代表的なコマンドとして 次を利用します。
Router> enable
Router# show ip route
今回は、分かりやすく次のルーティングテーブルを例にします。
C 192.168.10.0/24 is directly connected, GigabitEthernet0/0
L 192.168.10.1/32 is directly connected, GigabitEthernet0/0
C 192.168.20.0/24 is directly connected, GigabitEthernet0/1
L 192.168.20.1/32 is directly connected, GigabitEthernet0/1
S 192.168.30.0/24 [1/0] via 10.0.0.2
S 192.168.40.0/24 [1/0] via 10.0.0.3
S* 0.0.0.0/0 [1/0] via 203.0.113.1
まず1行を分解して読んでみよう
次の行を例にします。
それぞれ次の意味があります。
この経路がどのような方法で 登録されたのかを示します。
この経路が対象とする 宛先ネットワークです。
経路選択に利用される 値が表示されています。
次にパケットを渡す Next Hopです。
C・L・S・S*は何を意味する?
行の先頭にある文字は、 そのルートがどこから学習されたのか を示します。
ルーターへ直接接続されている ネットワーク。
ルーター自身の インターフェースIPアドレス。
管理者が手動設定した スタティックルート。
Static Routeのうち、 デフォルトルートとして利用される経路。
C 192.168.10.0/24
直接接続されたNetwork
L 192.168.10.1/32
Router自身のIP
S 192.168.30.0/24
手動登録されたRoute
S* 0.0.0.0/0
Default Route
C:Connectedルートとは?
Connectedルートとは、 ルーターへ直接接続されたネットワーク です。
192.168.10.1
Gi0/0に192.168.10.1/24を設定し、 インターフェースが有効になっていれば、 ルーターは192.168.10.0/24が 直接接続されている ことを認識できます。
C 192.168.10.0/24 is directly connected, GigabitEthernet0/0
この経路ではNext Hopルーターを経由する必要はありません。
L:Localルートとは?
Localルートは、 ルーター自身に設定されているIPアドレス への経路です。
L 192.168.10.1/32 is directly connected, GigabitEthernet0/0
ここで、
Connectedルートは
192.168.10.0/24
なのに対し、
Localルートは
192.168.10.1/32
になっています。
192.168.10.1/32は
192.168.10.1という1つのIPアドレスだけに一致します。
S:Staticルートとは?
Staticルートは、 管理者が手動で登録する経路 です。
Router-Aから192.168.30.0/24へ行くには、 Router-Bへ渡せばよいと管理者が設定した場合、 次のように表示されます。
S 192.168.30.0/24 [1/0] via 10.0.0.2
ここでは、
と読めます。
Next Hopと出力インターフェースの違い
ルーティングテーブルでは、 Next Hopが表示される場合と、 出力インターフェースが表示される場合があります。
0.0.0.0/0とは?デフォルトルートを理解する
次の経路を見てみましょう。
S* 0.0.0.0/0 [1/0] via 203.0.113.1
0.0.0.0/0は
デフォルトルート
です。
/0はIPv4アドレスの先頭ビットを 1つも固定しないため、 すべてのIPv4宛先に一致可能 です。
そのため、 より具体的な経路がルーティングテーブルに存在しないときの 最後の転送先 として利用できます。
インターネット方向など、 個別のネットワークをすべて登録したくない場合に よく利用されます。
複数の経路に一致したらどれを使う?
ここがルーティングテーブルの見方で 非常に重要なポイントです。
たとえば次の3つの経路があるとします。
192.168.0.0/16
Route A
192.168.10.0/24
Route B
0.0.0.0/0
Default
ここへ 192.168.10.50 宛てのパケットが届いたとします。
このIPアドレスは、
すべてに一致します。
しかしルーターは、 この中から 最もプレフィックス長が長い経路 を選択します。
/24 > /16 > /0
これを 最長一致(Longest Prefix Match) と呼びます。
まずは /32 > /24 > /16 > /8 > /0 のように、数字が大きい経路ほど具体的と考えると理解しやすくなります。
実際にパケットの転送先を判断してみよう
次のルーティングテーブルがあるとします。
C 192.168.10.0/24
Gi0/0
S 192.168.20.0/24
10.0.0.2
S 192.168.0.0/16
10.0.0.3
S* 0.0.0.0/0
203.0.113.1
宛先:192.168.10.50
192.168.10.0/24に一致するため、 Gi0/0 を利用します。
宛先:192.168.20.50
192.168.20.0/24と192.168.0.0/16の両方に一致しますが、 /24の方が長いため、 10.0.0.2 への経路を利用します。
宛先:192.168.50.10
192.168.0.0/16には一致しますが、 192.168.20.0/24には一致しません。
そのため、 10.0.0.3 への経路を利用します。
宛先:8.8.8.8
上記の具体的な経路には一致しません。
そのため、 0.0.0.0/0のデフォルトルート を利用します。
[1/0]とは何?
Static Routeを見ると、 次のような表示があります。
S 192.168.30.0/24 [1/0] via 10.0.0.2
角括弧内は一般的に、
として表示されます。
ただし、 この2つは 最長一致とは別の段階で利用される情報 です。
Administrative DistanceやMetricの詳しい比較は、 スタティックルーティング・動的ルーティングや OSPFなどを学ぶ際に理解すると整理しやすくなります。
ここで実際に試してみよう:ルート選択シミュレーター
宛先IPアドレスを選び、 ルーターがどの経路を利用するか考えてみましょう。
Route Lookup Simulator
192.168.10.0/24
Gi0/0
192.168.20.0/24
10.0.0.2
192.168.0.0/16
10.0.0.3
0.0.0.0/0
203.0.113.1
利用する経路を選択してください
宛先IPがどのネットワークに一致するかを確認し、 一致する中で最もPrefixが長い経路を選びましょう。
理解度チェック:ルーティングテーブルの1行を読んでみよう
S 172.16.50.0/24 [1/0] via 10.10.10.2
このルートのNext Hopはどれでしょうか?
「via」の後ろに何が表示されているか確認してみましょう。
ルーティングテーブルはトラブルシューティングでどう見る?
ネットワーク障害では、 ルーティングテーブルを見るだけでも 多くの情報を得られます。
宛先ネットワークへの経路自体が ルーティングテーブルにあるか確認します。
意図した隣接ルーターへ パケットを渡す経路になっているか確認します。
想定したデフォルトルートではなく、 より長いPrefixの経路が選択されていないか確認します。
そもそもルーティングテーブルの経路はどうやって登録される?
ここまで、 C・L・Sなどの経路を見てきました。
Connectedルートは、 インターフェース設定によって自動的に作成されます。
Staticルートは、 管理者が手動で設定します。
しかし大規模ネットワークでは、 すべての宛先ネットワークを 管理者が1つずつ手入力するのは大変です。
ルーター同士が自動的に交換する方法はどう違うのでしょうか?
この違いが、 次の記事で学習する スタティックルーティングと動的ルーティング です。
確認問題:ルーティングテーブルを読めるか確認しよう
次のルートの「S」は何を意味しますか?
S 192.168.30.0/24 via 10.0.0.2
SはStaticを意味し、 管理者が手動で設定したスタティックルートを表します。
192.168.10.50宛てに次の3経路が一致した場合、 最も優先されるのはどれですか?
3つとも一致しますが、 /24が最もプレフィックス長が長いため、 最長一致によって192.168.10.0/24が選択されます。
0.0.0.0/0の代表的な役割はどれですか?
0.0.0.0/0はすべてのIPv4宛先に一致可能で、 より具体的な経路が存在しない場合の デフォルト経路として利用されます。
3問に挑戦してみましょう。
まとめ
ルーティングテーブルには 宛先Networkと転送経路 が記録されている
C=Connected、L=Local、S=Static、S*=Static Default Route と読める
Next Hopは次に渡すRouter、 Exit Interfaceは自分の出口を表す
0.0.0.0/0は より具体的なRouteがない場合に利用するデフォルトルート
複数Routeに一致したら Longest Prefix Match(最長一致) で最も具体的な経路を選択する
次は「スタティックルーティングと動的ルーティング」を学びましょう
ルーティングテーブルの見方と、 パケットがどのRouteを利用するのかは理解できました。
次に重要なのは、 「その経路情報を誰が、どのようにルーティングテーブルへ登録するのか」 です。
管理者が1つずつ手動で登録する スタティックルーティングと、 ルーター同士が経路情報を交換する 動的ルーティングでは、 運用方法や適したネットワーク規模が大きく異なります。
スタティックルーティングと動的ルーティング →
