ルーティングの考え方
電車の乗り換え案内=ルーティング
たとえば、横浜に住むcarterさんが突然思い立ちました。
『そうだ、ひこにゃん に会いに行こう…』
横浜からひこにゃんのいる彦根(滋賀県にある彦根城、彦根駅から徒歩圏)まではどうやって行ったらいいでしょうか。
carterさんは最寄り駅の横浜駅まで行き、横浜駅の駅員さんに尋ねました。
『彦根に行きたいんですけど…』
駅員さんは答えてくれました。
『彦根駅ですね?では、4番線から横浜線に乗って、新横浜駅まで行ってください』
新横浜駅にたどり着いたcarterさんは、新横浜駅の駅員さんに尋ねました。
『彦根に行きたいんですけど…』
駅員さんは答えてくれました。
『彦根駅ですね?では、3番線から新幹線に乗って、米原駅まで行ってください』
米原駅にたどり着いたcarterさんは、米原駅の駅員さんに尋ねました。
『彦根に行きたいんですけど…』
駅員さんは答えてくれました。
『彦根駅ですね?では、3番線から琵琶湖線に乗ってください。一本で彦根駅に行けますよ』
そして、carterさんは無事に彦根に到着したのでした…。

・・・・・・・・・・・・・・・
まぁ人間の駅員さんなら、最初に横浜駅で尋ねた段階で
『彦根に行くなら新横浜から新幹線で米原まで行って、そこから琵琶湖線ですね』
という具合に経路の最初から最後までを一気に教えてくれると思うのですが、まぁそれはたとえ話なのでちょっと脇に置いておいて。
実はルータのルーティングは、このたとえ話の
『乗り換えずに一本で行ける範囲』を『同じネットワーク』
『乗換駅』を『ルータ』
と読み替えれば、そっくり同じことをやっています。つまり、各ルータで『行き先が○○なら、次はルータ△△へ』という判断が行われ、順にパケットが転送されていくのです。
例として、以下の様なネットワークを考えてみましょう。

このネットワークで、PC-A(192.168.1.101/24)からPC-C(192.168.20.101/24)にパケットを送信する場合は、以下のような処理が行われます。
・PC-Aは、宛先IPアドレスのネットワーク部(192.168.1.xx)が自分のIPアドレス(192.168.10.xx)と違うことから『宛先は同じネットワークにはない(電車一本では行けない)』という判断をし、『同じネットワーク内にあるルータ(最初の乗り換え駅)のRT1』にパケットを送信します。
・パケットを受信したRT1は宛先IPアドレスを見て、『192.168.20.xx方面に行くなら、次に向かうべきルータ(次の乗換駅)はRT2だ』と判断し、RT2へパケットを送ります。
・パケットを受信したRT2は宛先IPアドレスを見て『192.168.20.101なら、Fa0/1に接続されているネットワーク内にある(○○線沿線は、この駅から一本で行ける)』と判断し、パケットを送出します。
・RT2のFa0/1から送出されたパケットは、無事PC-Cに届きます。
経由するルータが増えても基本的な考え方は同じで、各ルータごとに『宛先アドレスが○○なら、次はルータ△△にパケットを転送する』という処理が行われているのです。
ルーティングテーブル
ここで、いくつかの用語を憶えましょう。
最初に向かう、同じネットワーク内にあるルータを『デフォルトゲートウェイ』
次に向かうべきルータを『ネクストホップ』
ルータ自身のいずれかのインターフェイスに接続されているネットワークを『直接接続ネットワーク』
といいます。
このうち『デフォルトゲートウェイ』は、ルータではなくPCやサーバに設定されています。
『ネクストホップ』と『直接接続ネットワーク』はルータ内にある『ルーティングテーブル』に記録されています。
たとえば、新横浜の駅員さんの頭の中にあるルーティングテーブルには、
『横浜線沿線なら、この駅から一本で行ける』(直接接続ネットワーク)
『東海道新幹線沿線なら、この駅から一本で行ける』(直接接続ネットワーク)
『滋賀県にいくなら、東海道新幹線に乗って、次は<米原駅>へ』(ネクストホップ)
という情報が記録されているわけです。
実際のルーティングテーブル
では、ルーティングテーブルにはどのように情報が記録されているか見てみましょう。ルーティングテーブルを参照するには、特権execモードで show ip routeコマンドを使用します。
先ほどのネットワークにあるルータRT1ならば以下の様に表示されるでしょう。
RT1#show␣ip␣route⏎
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1
S 192.168.20.0/24 [1/0] via 192.168.10.2
RT1#
最初の方に『Codes:』以下7行は、記号の説明です。ルーティングテーブルの本体は下の3行(色を付けた行)です。ここに登録されている情報の1件1件をルート情報といいます。
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1
この2行、行頭が『C』になっている行が、直接接続ネットワークについての記述です。この例は、
『アドレス192.168.1.0/24のネットワークは、FastEthernet0/0に接続されている』
『アドレス192.168.10.0/24のネットワークは、FastEthernet0/1に接続されている』
新横浜駅の駅員さんでいえば、
『横浜線沿線の各駅は、当駅5番・6番線から一本で行ける』
『東海道新幹線沿線の各駅は、当駅1~4番線から一本で行ける』
という情報です。
※実在の鉄道の場合は上り・下りの区別があったり、同じ方向に行く列車が複数のホームから出たりするのですが、ルータの場合は通常は1路線は1インターフェイスに対応します。
S 192.168.20.0/24 [1/0] via 192.168.10.2
先頭が『S』になっている行が、別のルータを経由する場合の記述です。この例は、
『アドレス192.168.20.0/24宛のパケットは、次は192.168.10.2へ転送する』
(192.168.10.2は、RT2のRT1側のインターフェイスのIPアドレスです)
新横浜駅の駅員さんでいえば、
『滋賀県に行くなら、次は(東海道新幹線で)米原駅へ向かう』
という情報です。
※先頭の『S』は、単に『別のルータを経由する』だけではなく『管理者が手作業で登録した』という意味もあります。詳しくは後述。
ルート情報の登録
では、ルーティングテーブルにルート情報を登録するにはどうしたらいいでしょうか。
まず、直接接続ネットワークは、ルータのインターフェイスにアドレスを設定すれば自動的に登録されますので、コマンドなどを実行する必要はありません。
別のルータを経由しなければならないルート情報は、何らかの方法で登録する必要があります。管理者が手動でルート情報を登録していく方法を『スタティックルーティング』といいます。また、ルータ同士が自動的に情報を交換してルート情報を設定する方法もあり、それを『ダイナミックルーティング』といいます。今回はスタティックルーティングを用いることにして、手動でルート情報を登録してみましょう。
ルート情報を手動で登録するには、グローバルコンフィギュレーションモードで ip routeコマンドを使用します。
(config)# ip route <宛先IPアドレス> <サブネットマスク> <ネクストホップ>
<宛先IPアドレス>と<サブネットマスク>で『○○方面へ行くなら』という条件を表します。これは<サブネットマスク>の指定の仕方により、『彦根駅』とピンポイントで指定したり、『琵琶湖線沿線』『滋賀県内を通る各路線沿線』『西日本の各路線沿線』のようにいろいろな範囲で指定することができます。詳しくは『経路集約』の章で。
ネクストホップは、このルータと同じネットワーク内にある別のルータのインターフェイスのIPアドレス(次に向かうべき乗換駅)を指定します。

ちなみに『琵琶湖線』というのは正式な路線名ではなく、東海道本線の米原駅~京都駅の区間と、北陸本線の米原駅~長浜駅の区間を合わせた愛称だそうです。
やってみよう
ネットワーク図
先ほど例として挙げたのと同じネットワークを組み立ててみましょう。

使用機材
| 種類 | 台数 | PacketTracerでの機種例 | ||
|---|---|---|---|---|
![]() | ルータ | 2台 | Network Devices/Routers/1841 | |
| ハブ(又はスイッチ) | 3台 | Network Devices/Hubs/PT-Hub | ||
![]() | PC | 3台 | End Devices/End Devices/PC-PT | |
| ケーブル | 7本 | Connections/Connections/Copper Straight Through |
ルータの基本設定
ルート情報以外の設定を一気にやってしまいましょう。
RT1
- 入力コマンド
- コピー&ペースト用
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RT1
RT1(config)#interface fastethernet 0/0
RT1(config-if)#ip address 192.168.1.1 255.255.255.0
RT1(config-if)#no shutdown
RT1(config-if)#exit
RT1(config)#interface fastethernet 0/1
RT1(config-if)#ip address 192.168.10.1 255.255.255.0
RT1(config-if)#no shutdown
enable
configure terminal
hostname RT1
interface fastethernet 0/0
ip address 192.168.1.1 255.255.255.0
no shutdown
exit
interface fastethernet 0/1
ip address 192.168.10.1 255.255.255.0
no shutdown
RT2
- 入力コマンド
- コピー&ペースト用
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RT2
RT2(config)#interface fastethernet 0/0
RT2(config-if)#ip address 192.168.10.2 255.255.255.0
RT2(config-if)#no shutdown
RT2(config-if)#exit
RT2(config)#interface fastethernet 0/1
RT2(config-if)#ip address 192.168.20.1 255.255.255.0
RT2(config-if)#no shutdown
enable
configure terminal
hostname RT2
interface fastethernet 0/0
ip address 192.168.10.2 255.255.255.0
no shutdown
exit
interface fastethernet 0/1
ip address 192.168.20.1 255.255.255.0
no shutdown
ルート情報の確認と疎通テスト
ここまでの段階で、ルート情報を確認しておきましょう。
RT1のルーティングテーブル(直接接続ネットワークのみ)
RT1#show␣ip␣route⏎
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1
RT1#
RT2のルーティングテーブル(直接接続ネットワークのみ)
RT2#show␣ip␣route⏎
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.10.0/24 is directly connected, FastEthernet0/0
C 192.168.20.0/24 is directly connected, FastEthernet0/1
RT2#
すべて
各インターフェイスのIPアドレスを設定してあるので、直接接続ネットワーク(行の先頭が『C』)が自動的にルーティングテーブルに登録されていることが判ります。
疎通テスト
pingコマンドで、すべてのPCの組み合わせについて疎通テストを行ってみましょう。
PC-A → PC-B
C:\>ping␣192.168.10.101⏎
Pinging 192.168.10.101 with 32 bytes of data:
Request timed out.
Reply from 192.168.10.101: bytes=32 time<1ms TTL=127
Reply from 192.168.10.101: bytes=32 time<1ms TTL=127
Reply from 192.168.10.101: bytes=32 time=2ms TTL=127
Ping statistics for 192.168.10.101:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 2ms, Average = 0ms
C:\>
往路:
・PC-A から送出されたパケットはデフォルトゲートウェイである RT1 に送られます。
・PC-B は RT1 に直接接続されたネットワーク上にあるので、ルート情報の登録がなくてもパケットを届けることができます。
復路:
・PC-B から送出された返信パケットはデフォルトゲートウェイである RT1 に送られます。
・PC-A は RT1 に直接接続されたネットワーク上にあるので、ルート情報の登録がなくてもパケットを届けることができます。
PC-A → PC-C
C:\>ping␣192.168.20.101⏎
Pinging 192.168.20.101 with 32 bytes of data:
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Ping statistics for 192.168.20.101:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
往路:
・PC-A から送出されたパケットはデフォルトゲートウェイである RT1 に送られます。
・PC-C は RT1 に直接接続されたネットワーク上にはないので、RT1 はどこにパケットを転送すればいいのか判りません。RT1 は PC-C宛のパケットを破棄して『Destination host unreachable』というエラーメッセージを PC-A宛に送信します。PC-Aでは『Reply from 192.168.1.1』と表示され、エラーメッセージの送信元が RT1(のFa0/0)であることが判るようになっています。
PC-B → PC-A
C:\>ping␣192.168.1.101⏎
Pinging 192.168.1.101 with 32 bytes of data:
Reply from 192.168.1.101: bytes=32 time<1ms TTL=127
Reply from 192.168.1.101: bytes=32 time<1ms TTL=127
Reply from 192.168.1.101: bytes=32 time<1ms TTL=127
Reply from 192.168.1.101: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.1.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
往路:
・PC-B から送出されたパケットはデフォルトゲートウェイである RT1 に送られます。
・PC-A は RT1 に直接接続されたネットワーク上にあるので、ルート情報の登録がなくてもパケットを届けることができます。
復路:
・PC-A から送出された返信パケットはデフォルトゲートウェイである RT1 に送られます。
・PC-B は RT1 に直接接続されたネットワーク上にあるので、ルート情報の登録がなくてもパケットを届けることができます。
PC-B → PC-C
C:\>ping␣192.168.20.101⏎
Pinging 192.168.20.101 with 32 bytes of data:
Reply from 192.168.10.1: Destination host unreachable.
Reply from 192.168.10.1: Destination host unreachable.
Reply from 192.168.10.1: Destination host unreachable.
Reply from 192.168.10.1: Destination host unreachable.
Ping statistics for 192.168.20.101:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
往路:
・PC-B から送出されたパケットはデフォルトゲートウェイである RT1 に送られます。
・PC-C は RT1 に直接接続されたネットワーク上ではないので、RT1 はどこにパケットを転送すればいいのか判りません。RT1 は PC-C宛のパケットを破棄して『Destination host unreachable』というエラーメッセージを PC-B宛に送信します。PC-Bでは『Reply from 192.168.10.1』と表示され、エラーメッセージの送信元が RT1(のFa0/1)であることが判るようになっています。
PC-C → PC-B
C:\>ping␣192.168.10.101⏎
Pinging 192.168.10.101 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.10.101:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
往路:
・PC-C から送出されたパケットはデフォルトゲートウェイである RT2 に送られます。
・PC-B は RT2 に直接接続されたネットワーク上にあるので、RT2 はルート情報の登録がなくてもパケットを PC-B に転送します。
復路:
・PC-B から送出された返信パケットはデフォルトゲートウェイである RT1 に送られます。
・PC-C は RT1 に直接接続されたネットワーク上にはないので、RT1 はどこにパケットを転送すればいいのか判りません。RT1 は PC-C 宛のパケットを破棄して『Destination host unreachable』というエラーメッセージを送信しますが、このメッセージは返信パケットの送信元である PC-B宛で、PC-C にはエラーメッセージが届きません。よってPC-C から見ると『エラーも返信も届かないまま待ちぼうけ』のため『Request timed out』と表示されます。
PC-C → PC-A
C:\>ping␣192.168.1.101⏎
Pinging 192.168.1.101 with 32 bytes of data:
Reply from 192.168.20.1: Destination host unreachable.
Reply from 192.168.20.1: Destination host unreachable.
Reply from 192.168.20.1: Destination host unreachable.
Reply from 192.168.20.1: Destination host unreachable.
Ping statistics for 192.168.1.101:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
往路:
・PC-C から送出されたパケットはデフォルトゲートウェイである RT2 に送られます。
・PC-A は RT2 に直接接続されたネットワーク上ではないので、RT2 はどこにパケットを転送すればいいのか判りません。RT2 は PC-A宛のパケットを破棄して『Destination host unreachable』というエラーメッセージを PC-C宛に送信します。『Reply from 192.168.20.1』とあるように、エラーメッセージの送信元は RT2(のFa0/1)のIPアドレスになっています。
ルート情報の登録
では、別のルータを経由しなければならないルート情報をコマンドで登録しましょう。
RT1へのルート情報登録
RT1から Network-C(192.168.20.0/24)に行く場合、RT2 を経由する必要があるので、これをルート情報として登録します。
宛先のIPアドレスの『/24』の部分をサブネットマスクに直すと 255.255.255.0 となります。
ネクストホップには、RT2のインターフェイスのうちRT1と同じネットワークに接続しているFa0/0のIPアドレス 192.168.10.2 を指定します。
よって、コマンドは以下のようになります。
(config)#ip␣route␣192.168.20.0␣255.255.255.0␣192.168.10.2⏎
今回の例では、RT1に登録すべきルート情報はこれだけです。
RT2へのルート情報登録
同じように考えます。RT2に直接接続していないネットワークは Network-A(192.168.1.0/24)で、そのときにネクストホップとなるのはRT1のFa0/1(192.168.10.1)なので、コマンドは
(config)#ip␣route␣192.168.1.0␣255.255.255.0␣192.168.10.1⏎
となります。
登録したら、再度ルーティングテーブルを確認しましょう。
RT1のルーティングテーブル(ルート追加後)
RT1#show␣ip␣route⏎
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1
S 192.168.20.0/24 [1/0] via 192.168.10.2
RT1#
RT2のルーティングテーブル(ルート追加後)
RT2#show␣ip␣route⏎
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
S 192.168.1.0/24 [1/0] via 192.168.10.1
C 192.168.10.0/24 is directly connected, FastEthernet0/0
C 192.168.20.0/24 is directly connected, FastEthernet0/1
RT2#
再度疎通確認
さきほど通信できていなかった組み合わせのPC間について、再度pingコマンドで確認してみましょう。
PC-A → PC-C
C:\>ping␣192.168.20.101⏎
Pinging 192.168.20.101 with 32 bytes of data:
Request timed out.
Reply from 192.168.20.101: bytes=32 time<1ms TTL=126
Reply from 192.168.20.101: bytes=32 time<1ms TTL=126
Reply from 192.168.20.101: bytes=32 time<1ms TTL=126
Ping statistics for 192.168.20.101:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
PC-B → PC-C
C:\>ping␣192.168.20.101⏎
Pinging 192.168.20.101 with 32 bytes of data:
Reply from 192.168.20.101: bytes=32 time<1ms TTL=127
Reply from 192.168.20.101: bytes=32 time<1ms TTL=127
Reply from 192.168.20.101: bytes=32 time<1ms TTL=127
Reply from 192.168.20.101: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.20.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
PC-C → PC-A
C:\>ping␣192.168.1.101⏎
Pinging 192.168.1.101 with 32 bytes of data:
Reply from 192.168.1.101: bytes=32 time=4ms TTL=126
Reply from 192.168.1.101: bytes=32 time=3ms TTL=126
Reply from 192.168.1.101: bytes=32 time=2ms TTL=126
Reply from 192.168.1.101: bytes=32 time=3ms TTL=126
Ping statistics for 192.168.1.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 4ms, Average = 3ms
C:\>
PC-C → PC-B
C:\>ping␣192.168.10.101⏎
Pinging 192.168.10.101 with 32 bytes of data:
Reply from 192.168.10.101: bytes=32 time<1ms TTL=126
Reply from 192.168.10.101: bytes=32 time<1ms TTL=126
Reply from 192.168.10.101: bytes=32 time<1ms TTL=126
Reply from 192.168.10.101: bytes=32 time=2ms TTL=126
Ping statistics for 192.168.10.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 2ms, Average = 0ms
C:\>
このように、すべての組み合わせで通信ができることが確認できました。
まとめ
・ルータには、転送先を記録したルーティングテーブルがある。
・ルート情報は『宛先アドレス』+『ネクストホップ』の組み合わせになっている




コメント