デフォルトルートはスタッティックルートの一種で、一般的にインターネットへの接続口のルータ (GW-R) で使用します。インターネットには大量のルータやホストがあり、ネットワークは日々刻々と更新されています。この大量でかつ頻繁に変更されるネットワークへの個々のルートを、社内ネットワーク内のルータにスタッティックに設定することは不可能ですし、もしダイナミックに学習できたとしても、ISP のルータに比べて格段に性能の低い社内のルータのルーティングテーブルに、インターネット上の大量にあるルート情報を載せることはできませんし、そのメリットもありません。
そのため、社内のネットワークはダイナミック (もしくはスタッティックルート) で構成し、GW-R でインターネットへのルートのみデフォルトルートで構成します。
ルータは受信したパケットの宛先IPアドレスと自身のルーティングテーブルを見てパケットの転送を決定します。
例えば以下のようなルーティングテーブルだったとしましょう。
Router# sh ip route | Gateway
Gateway of last resort is not set
192.168.0.0/24 is variably subnetted, 3 subnets, 3 masks
C 192.168.0.0/30 is directly connected, Serial0/0/0
C 192.168.0.32/27 is directly connected, FastEthernet0/0
S 192.168.0.64/26 [1/0] via 192.168.0.2
受信したパケットの宛先IPアドレスが
192.168.0.0/30 内のIPアドレスなら、そのパケットを Serial0/0/0 から送出します。
192.168.0.32/27 内のIPアドレスなら、そのパケットを FastEthernet0/0 から送出します。
192.168.0.64/26 内のIPアドレスなら、そのパケットを 192.168.0.2 向けに送出します。
しかし、受信したパケットの宛先IPアドレスがこれ以外 (ルーティングテーブルにない宛先) の場合は、ルータは受信パケットを破棄します。このルータにとって未知の宛先 (ルーティングテーブルにない宛先) 宛てのパケットを破棄させずに、ある特定の宛先 (ネクストホップアドレス) にパケットを転送させるための構成がデフォルトルートです。
インターネットにはどのようなネットワークがあるのか GW-R にはわかりません。そのため、受信したパケットの宛先IPアドレスが社内ネットワークで使われているアドレスでなければ、全てインターネット (ここでは ISP ルータ) に転送してしまおうというものです。後は、このパケットを受け取った ISP ルータが適切な処理をしてくれます。
デフォルトルートはインターネットへの接続口だけで使用するわけではありません。デフォルトルートは社内ネットワーク内でも外部ネットワークへの接続口が1つだけのようなスタブネットワークで使われます。
支社のルータは本社の RT-H ルータとしか接続していません。そして本社には複数のルータがあります。
A支社の RT- AルータはA支社内で使われていないアドレス宛てのパケットを受け取ったら全て本社の RT-H ルータに転送します。RT-H ルータは受け取ったパケットの宛先が本社内のホスト (またはルータ) であれば、本社内のホスト (またはルータ) に転送し、B支社宛なら RT-B に転送し、C支社宛なら RT-C に転送します。
B支社の RT-B ルータもC支社の RT-C ルータも同様に自支店内で使われていないアドレス宛てのパケットは全て本社の RT-H ルータに転送します。このような場合に、RT-A、RT-B、RT-C でデフォルトルートを設定します。RT-H はデフォルトルートではなく、本社内ネットワークではダイナミックルーティングを使用し、対支社向けにはスタッティックルートを構成します。
想定するネットワーク構成図
ラボ・シナリオで使用するネットワーク構成図
・物理 PC の VirtualBox 上に、PC-A、PC-C の2つの仮想 PC を構成する。
・PC-A は物理 PC に標準搭載している LAN ポートを使用するように VirtualBox を設定する。
・物理 PC に USB-LAN 変換ケーブルを1つ接続し、PC-C がそれを使用するように VirtualBox を設定する。
参考 :
VirtualBox のインストールと基本的な使用方法
- RT-A、RT-B、RT-C をネットワーク構成図に示す通り設定しなさい。
< RT-A >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-A
RT-A(config)# int f0/0
RT-A(config-if)# ip add 172.16.1.1 255.255.255.0
RT-A(config-if)# no shut
RT-A(config-if)# int f0/1
RT-A(config-if)# ip add 172.16.2.1 255.255.255.0
RT-A(config-if)# no shut
< RT-B >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-B
RT-B(config)# int f0/0
RT-B(config-if)# ip add 172.16.2.2 255.255.255.0
RT-B(config-if)# no shut
RT-B(config-if)# int f0/1
RT-B(config-if)# ip add 172.16.3.2 255.255.255.0
RT-B(config-if)# no shut
< RT-C >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-C
RT-C(config)# int f0/0
RT-C(config-if)# ip add 172.16.3.3 255.255.255.0
RT-C(config-if)# no shut
RT-C(config-if)# int f0/1
RT-C(config-if)# ip add 10.10.10.3 255.255.255.0
RT-C(config-if)# no shut
ルータが知らないネットワークを外部ネットワークとします。図を見て分かるように、RT-A は外部ネットワーク宛のパケットは全て RT-B の F0/0 に送ればいいので、RT-A ではデフォルトルートのみの設定が可能です。
RT-C も同様に、外部ネットワーク宛のパケットは全て RT-B の F0/1 に送ればいいので、RT-C でもデフォルトルートのみの設定が可能です。
しかし、RT-B には離れた2つの外部ネットワークがあり、それぞれパケットの送り先が異なります。そのため、RT-B ではデフォルトルートではなく、送り先に応じたスタティックルートを設定します。
- RT-A に適切なデフォルトルートの設定をしなさい。
< RT-A >
RT-A(config-if)# exit
RT-A(config)# ip route 0.0.0.0 0.0.0.0 172.16.2.2
RT-A(config)# ^Z
RT-A#
デフォルトルートはスタッティックルートと同じ記述方法ですが、送信先ネットワークが「0.0.0.0 0.0.0.0」になります。(0.0.0.0/0 は全ての宛先アドレスを示す)
- RT-B に適切なスタティックルートの設定をしなさい。
< RT-B >
RT-B(config-if)# exit
RT-B(config)# ip route 172.16.1.0 255.255.255.0 172.16.2.1
RT-B(config)# ip route 10.10.10.0 255.255.255.0 172.16.3.3
RT-B(config)# ^Z
RT-B#
- RT-C に適切なデフォルトルートの設定をしなさい。
< RT-C >
RT-C(config-if)# exit
RT-C(config)# ip route 0.0.0.0 0.0.0.0 172.16.3.2
RT-C(config)# ^Z
RT-C#
- PC-A と PC-C をネットワーク構成図に示す通り設定しなさい。
< PC-A >
C:\> netsh interface ipv4 set address "イーサネット" static 172.16.1.10 255.255.255.0 172.16.1.1
C:\> ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 172.16.1.10
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 172.16.1.1
C:\>
< PC-C >
C:\> netsh interface ipv4 set address "イーサネット" static 10.10.10.10 255.255.255.0 10.10.10.3
C:\> ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 10.10.10.10
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 10.10.10.3
C:\>
全ての PC は ping 着信許可の設定を行っているものとします。
- RT-A のルーティングテーブルを表示させなさい。
< RT-A >
RT-A# sh ip route | begin Gateway
Gateway of last resort is 172.16.2.2 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 172.16.2.2
172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C 172.16.1.0/24 is directly connected, FastEthernet0/0
L 172.16.1.1/32 is directly connected, FastEthernet0/0
C 172.16.2.0/24 is directly connected, FastEthernet0/1
L 172.16.2.1/32 is directly connected, FastEthernet0/1
RT-A#
「S*」がデフォルトルートを示し、「Gateway of last resort is」にそのルートが表示されます。
「last resort」とは「最後の手段」という意味で、どこにも行くあてのない (ルーティングテーブルに宛先のルートがない) パケットが、最後の手段として送られる宛先が「Gateway」です。
- RT-B のルーティングテーブルを表示させなさい。
< RT-B >
RT-B# sh ip route | begin Gateway
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
S 10.10.10.0 [1/0] via 172.16.3.3
172.16.0.0/16 is variably subnetted, 5 subnets, 2 masks
S 172.16.1.0/24 [1/0] via 172.16.2.1
C 172.16.2.0/24 is directly connected, FastEthernet0/0
L 172.16.2.2/32 is directly connected, FastEthernet0/0
C 172.16.3.0/24 is directly connected, FastEthernet0/1
L 172.16.3.2/32 is directly connected, FastEthernet0/1
RT-B#
- RT-C のルーティングテーブルを表示させなさい。
< RT-C >
RT-C# sh ip route | begin Gateway
Gateway of last resort is 172.16.3.2 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 172.16.3.2
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.10.10.0/24 is directly connected, FastEthernet0/1
L 10.10.10.3/32 is directly connected, FastEthernet0/1
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.3.0/24 is directly connected, FastEthernet0/0
L 172.16.3.3/32 is directly connected, FastEthernet0/0
RT-C#
- PC-A からPC-C へ ping を実行しなさい。
< PC-A >
C:\> ping 10.10.10.10
10.10.10.10 に ping を送信しています 32 バイトのデータ:
10.10.10.10 からの応答: バイト数 =32 時間 =1ms TTL=125
10.10.10.10 からの応答: バイト数 =32 時間 =2ms TTL=125
10.10.10.10 からの応答: バイト数 =32 時間 =1ms TTL=125
10.10.10.10 からの応答: バイト数 =32 時間 =2ms TTL=125
10.10.10.10 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 1ms、最大 = 2ms、平均 = 1ms
C:\>
ping は成功しました。