ルーティングの大原則

ルータは、ルーティングテーブルに登録されていないネットワーク宛てのデータ(IPパケット)を転送できずに破棄します。

そのため、ネットワーク上のすべてのルータのルーティングテーブルに、データを転送したいすべてのネットワークのルート情報を正しく漏れなく登録しておくことが大前提です。

スタティックルートの設定

ルータごとにデータを転送する必要があるネットワークのルート情報(ネットワークアドレス/サブネットマスク、ネクストホップ)をコマンドによって登録していく設定方法です。通信は双方向ということもきちんと考えて設定しなければいけません。

ネットワーク構成

以下のシンプルなネットワーク構成でスタティックルートの設定を一歩ずつ進めていきます。

図 スタティックルートの設定例 ネットワーク構成
図 スタティックルートの設定例 ネットワーク構成

IPアドレスのみを設定しているときのルーティングテーブル

R1~R3でIPアドレスのみを設定していると、それぞれのルータの直接接続のネットワークについてのルート情報のみがルーティングテーブルに登録されています。

R1

R1#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 1 subnets
C       10.1.1.0 is directly connected, Ethernet0/2

R2

R2#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
C    192.168.23.0/24 is directly connected, Ethernet0/2

R3

R3#show ip route
~省略~

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
C       10.3.3.0 is directly connected, Ethernet0/2
C    192.168.23.0/24 is directly connected, Ethernet0/0

ルーティングテーブルからR1~R3によって、以下の4つのネットワークが相互接続されていることがわかります。

ネットワークアドレス接続しているルータ
10.1.1.0/24R1
192.168.12.0/24R1/R2
192.168.23.0/24R2/R3
10.3.3.0/24R3

ただ、IPアドレスを設定して直接接続のネットワークのルート情報だけしかルーティングテーブルになければ、すべてのネットワーク間でデータを転送できません。たとえば、PC1(10.1.1.100)からPC2(10.3.3.3)へPingを実行しても応答は返ってきません。

PC1からPC2へPing

PC1> ping 10.3.3.100
*10.1.1.1 icmp_seq=1 ttl=255 time=8.114 ms (ICMP type:3, code:1, Destination host unreachable)
*10.1.1.1 icmp_seq=2 ttl=255 time=8.081 ms (ICMP type:3, code:1, Destination host unreachable)
*10.1.1.1 icmp_seq=3 ttl=255 time=11.207 ms (ICMP type:3, code:1, Destination host unreachable)
*10.1.1.1 icmp_seq=4 ttl=255 time=4.270 ms (ICMP type:3, code:1, Destination host unreachable)
*10.1.1.1 icmp_seq=5 ttl=255 time=9.841 ms (ICMP type:3, code:1, Destination host unreachable)

PC1からPC2へのPingのICMPエコーリクエストはR1で破棄されます。R1には10.3.3.3へ転送するためのルート情報がないからです。

図 PC1からPC2へのPing R1で破棄
図 PC1からPC2へのPing R1で破棄

PC1-PC2間の通信を行うためのスタティックルートの設定

R1に10.3.3.0/24のスタティックルートを設定

PC1-PC2間で通信を行うためにスタティックルートの設定を行います。R1で、以下のコマンドで10.3.3.0/24のルート情報を設定します。ネクストホップはR2、すなわち192.168.12.2です。

R1 10.3.3.0/24のスタティックルート

ip route 10.3.3.0 255.255.255.0 192.168.12.2

10.3.3.0/24のスタティックルートを設定すると、R1のルーティングテーブルは以下のようになります。

R1 ルーティングテーブル

R1#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
S       10.3.3.0 [1/0] via 192.168.12.2
C       10.1.1.0 is directly connected, Ethernet0/2

R1にだけ10.3.3.0/24のスタティックルートを設定してもPC1からPC2のPingの応答は返ってきません。

PC1からPC2へPing

PC1> ping 10.3.3.100
10.3.3.100 icmp_seq=1 timeout
10.3.3.100 icmp_seq=2 timeout
10.3.3.100 icmp_seq=3 timeout
10.3.3.100 icmp_seq=4 timeout
10.3.3.100 icmp_seq=5 timeout

R1はPC1からPC2へのPingをR2に転送しています。でも、R2に宛先IPアドレス10.3.3.100に一致するルート情報がないので、R2でPC1からPC2へのPingパケットが破棄されています。

図 PC1からPC2へのPing R2で破棄
図 PC1からPC2へのPing R2で破棄

R2に10.3.3.0/24のスタティックルートを設定

R1だけでなくR2にも10.3.3.0/24のスタティックルートを設定しなければいけません。R2ではネクストホップはR3、すなわち192.168.23.3です。

R2 10.3.3.0/24のスタティックルート

ip route 10.3.3.0 255.255.255.0 192.168.23.3

R2でルーティングテーブルを確認すると、10.3.3.0/24のスタティックルートが追加されます。

R2 ルーティングテーブル

R2#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 1 subnets
S       10.3.3.0 [1/0] via 192.168.23.3
C    192.168.23.0/24 is directly connected, Ethernet0/2

R2に10.3.3.0/24のスタティックルートを設定しても、PC1からPC2へのPingは成功しません。

PC1からPC2へPing

PC1> ping 10.3.3.100
10.3.3.100 icmp_seq=1 timeout
10.3.3.100 icmp_seq=2 timeout
10.3.3.100 icmp_seq=3 timeout
10.3.3.100 icmp_seq=4 timeout
10.3.3.100 icmp_seq=5 timeout

R1とR2に10.3.3.0/24のスタティックルートを設定すると、PC1からPC2へのPingを実行したICMPエコーリクエストはPC2まで届いています。

図 PC1からPC2へのPing リクエストは届いている
図 PC1からPC2へのPing リクエストは届いている

ここで忘れてはいけないことが、「通信は双方向」ということです。PC1からPC2へPingしてICMPエコーリクエストがPC2まで届くと、その返事としてICMPエコーリプライを返します。ICMPエコーリプライは、ICMPエコーリクエストの宛先IPアドレスと送信元IPアドレスが入れ替わったものになります。宛先は10.1.1.100(PC1)で送信元は10.3.3.100(PC2)です。R3には、宛先10.1.1.100に一致するルート情報がないので破棄します。

図 PC1からPC2へのPing 返事をR3が破棄
図 PC1からPC2へのPing 返事をR3が破棄

R3に10.1.1.0/24のスタティックルートを設定

PC2からPC1へPingの返事を返せるようにするためには、R3に宛先10.1.1.100に一致するルート情報として10.1.1.0/24のスタティックルートを設定します。

R3 10.1.1.0/24のスタティックルート

ip route 10.1.1.0 255.255.255.0 192.168.23.2

この設定により、R3のルーティングテーブルには、次のように10.1.1.0/24のスタティックルートが登録されます。

R3 ルーティングテーブル

R3#show ip route
~省略~

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 2 subnets
C       10.3.3.0 is directly connected, Ethernet0/2
S       10.1.1.0 [1/0] via 192.168.23.2
C    192.168.23.0/24 is directly connected, Ethernet0/0

しかし、PC1からPC2へのPingはまだ成功しません。

PC1からPC2へPing

PC1> ping 10.3.3.100
10.3.3.100 icmp_seq=1 timeout
10.3.3.100 icmp_seq=2 timeout
10.3.3.100 icmp_seq=3 timeout
10.3.3.100 icmp_seq=4 timeout
10.3.3.100 icmp_seq=5 timeout

PC1からPC2へPingを実行すると、ICMPエコーリクエストはPC2まで転送されています。そして、PC2からPC1へ返事としてICMPエコーリプライを送っています。エコーリプライはR3からR2へ転送されているのですが、R2には宛先10.1.1.100に一致するルート情報がありません。ICMPエコーリプライをR2が破棄してしまうので、Pingは成功しません。

図 PC1からPC2へのPing 返事をR2が破棄
図 PC1からPC2へのPing 返事をR2が破棄

R2に10.1.1.0/24のスタティックルートを設定

PC1からPC2へのPingのICMPエコーリクエストに対する返事のICMPエコーリプライを返せるようにR2に10.1.1.0/24についてのスタティックルートを設定します。

R2 10.1.1.0/24のスタティックルート

ip route 10.1.1.0 255.255.255.0 192.168.12.1

R2のルーティングテーブルには、以下のように10.1.1.0/24のスタティックルートが登録されます。

R2 ルーティングテーブル

R2#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
S       10.3.3.0 [1/0] via 192.168.23.3
S       10.1.1.0 [1/0] via 192.168.12.1
C    192.168.23.0/24 is directly connected, Ethernet0/2

これでようやくPC1からPC2へのPingが成功します。

PC1からPC2へPing

PC1> ping 10.3.3.100
84 bytes from 10.3.3.100 icmp_seq=1 ttl=61 time=55.660 ms
84 bytes from 10.3.3.100 icmp_seq=2 ttl=61 time=63.150 ms
84 bytes from 10.3.3.100 icmp_seq=3 ttl=61 time=66.075 ms
84 bytes from 10.3.3.100 icmp_seq=4 ttl=61 time=57.319 ms
84 bytes from 10.3.3.100 icmp_seq=5 ttl=61 time=61.142 ms

図 PC1からPC2へのPingが成功
図 PC1からPC2へのPingが成功

R1-R3間の通信を行うためのスタティックルートの設定

R1からR3にPingできない・・・

ここまでのスタティックルートの設定によってPC1-PC2間は通信できるのですが、R1からR3にPingを実行すると失敗します。

R1からR3へPing

R1#ping 192.168.23.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

PC1-PC2間はPingの応答がきちんと返ってくるようになったのに、その経路上にあるR1-R3間でPingの応答が返ってきません。「それは当然」とすんなりと思える方は、冒頭のルーティングの大原則がしっかりと頭に入っています。R1からR3の192.168.23.3へPingを実行すると、宛先/送信元IPアドレスは以下のようになっています。

宛先IPアドレス : 192.168.23.3
送信元IPアドレス : 192.168.12.2

R1のルーティングテーブルに宛先IPアドレス192.168.23.3に一致するルート情報が存在しないので、PingのICMPエコーリクエストを送信できません。

図 R1からR3へのPing R1はPingを送信できない

R1に192.168.23.0/24のスタティックルートを設定

R1からR3(192.168.23.3)へのPingのICMPエコーリクエストを送信するためには、R1のルーティングテーブルに192.168.23.0/24のルート情報を登録します。

R1 192.168.23.0/24のスタティックルート

ip route 192.168.23.0 255.255.255.0 192.168.12.2

この設定により、R1のルーティングテーブルには、192.168.23.0/24のスタティックルートが登録されます。

R1 ルーティングテーブル

R1#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
S       10.3.3.0 [1/0] via 192.168.12.2
C       10.1.1.0 is directly connected, Ethernet0/2
S    192.168.23.0/24 [1/0] via 192.168.12.2

R1に192.168.23.0/24のスタティックルートを設定するだけでは、R1からR3へのPingはまだ失敗します。

R1からR3へPing

R1#ping 192.168.23.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

R1に192.168.23.0/24のスタティックルートを設定することで、R1からR3へのPingのICMPエコーリクエストは転送されるようになっています。

図 R1からR3へのPing リクエストはOK
図 R1からR3へのPing リクエストはOK

やはり、忘れてはいけないことが、「通信は双方向」ということです。R3からR1へPingの返事のICMPエコーリプライを返します。その宛先/送信元IPアドレスは次のようになります。

宛先IPアドレス : 192.168.12.1
送信元IPアドレス : 192.168.23.3

R3のルーティングテーブルには192.168.12.1宛てのIPパケットを転送するためのルート情報がないために破棄します。

図 R1からR3へのPing R3は返事を返せない
図 R1からR3へのPing R3は返事を返せない

R3に192.168.12.0/24のスタティックルートを設定

R1からR3のPingの返事を返せるように、R3に192.168.12.0/24のスタティックルートを設定します。

R3 192.168.12.0/24のスタティックルート

ip route 192.168.12.0 255.255.255.0 192.168.23.2

R3のルーティングテーブルを確認すると、以下のようになります。

R3 ルーティングテーブル

R3#show ip route
~省略~

Gateway of last resort is not set

S    192.168.12.0/24 [1/0] via 192.168.23.2
     10.0.0.0/24 is subnetted, 2 subnets
C       10.3.3.0 is directly connected, Ethernet0/2
S       10.1.1.0 [1/0] via 192.168.23.2
C    192.168.23.0/24 is directly connected, Ethernet0/0

これでようやくR1からR3へのPingが成功するようになります。

R1からR3へPing

R1#ping 192.168.23.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/67/92 ms

図 R1からR3へのPingが成功
図 R1からR3へのPingが成功

最終的なルーティングテーブル

R1~R3の最終的なルーティングテーブルは以下のようになります。

R1 最終的なルーティングテーブル

R1#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
S       10.3.3.0 [1/0] via 192.168.12.2
C       10.1.1.0 is directly connected, Ethernet0/2
S    192.168.23.0/24 [1/0] via 192.168.12.2

R2 最終的なルーティングテーブル

R2#show ip route
~省略~

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, Ethernet0/0
     10.0.0.0/24 is subnetted, 2 subnets
S       10.3.3.0 [1/0] via 192.168.23.3
S       10.1.1.0 [1/0] via 192.168.12.1
C    192.168.23.0/24 is directly connected, Ethernet0/2

R3 最終的なルーティングテーブル

R3#show ip route
~省略~

Gateway of last resort is not set

S    192.168.12.0/24 [1/0] via 192.168.23.2
     10.0.0.0/24 is subnetted, 2 subnets
C       10.3.3.0 is directly connected, Ethernet0/2
S       10.1.1.0 [1/0] via 192.168.23.2
C    192.168.23.0/24 is directly connected, Ethernet0/0

R1~R3のルーティングテーブルに以下の4つのネットワークのルート情報がすべて登録されている状態になってはじめて、これら4つのネットワーク間の通信ができるようになります。

  • 10.1.1.0/24
  • 10.3.3.0/24
  • 192.168.12.0/24
  • 192.168.23.0/24

実際にスタティックルートの設定を行うときには、1つずつ登録する必要はもちろんありません。ただ、ネットワークの規模が大きくなってきて、ルータや相互接続しているネットワークの数が増えてくると、設定するべきスタティックルートの数がどんどん増えていってしまうことになります。

IPルーティングのキホン