想定するネットワーク構成図
どのテキストを見ても「デフォルトルートを使用した時は ip classless が必須である」と記載しています。しかし、今までのシナリオには ip classless については何も触れませんでした。ip classless は IOS 11.3 以降デフォルトで有効化されており、RT-A で sh run を表示させても「ip classless」はどこにも載っていません。ip classless を無効化した時に「no ip classless」が sh run の中に載ります。
(ただし、使用している IOS によっては、sh run に ip classless が載っている場合もあります。)
ということで、前のシナリオは「ip classless」が有効化されている時の場合で、これを無効化した場合どうなるのかを次に行います。
ただしその前に、Cisco ルータで「ip cef」が有効になっている場合、ルーティングテーブル通りの動作をしないので、まず先に「ip cef」を無効にしてから行います。
- RT-A、RT-B、RT-C で ip cef を無効化させなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# no ip cef
< RT-B >
RT-B# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-B(config)# no ip cef
< RT-C >
RT-C# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-C(config)# no ip cef
- RT-A で ip classless を無効化させなさい。
< RT-A >
RT-A(config)# no ip classless
RT-A(config)# ^Z
RT-A#
- 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#
no ip classless を実行する前と変わりません。
ip classless はルーティング テーブル作成には影響を与えず、パケットの転送処理にのみ作用します。
- PC-A から RT-C の F0/0 へ ping を実行しなさい。
< PC-A >
C:\> ping 172.16.3.3
172.16.3.3 に ping を送信しています 32 バイトのデータ:
172.16.1.1 からの応答: 宛先ホストに到達できません。
172.16.1.1 からの応答: 宛先ホストに到達できません。
172.16.1.1 からの応答: 宛先ホストに到達できません。
172.16.1.1 からの応答: 宛先ホストに到達できません。
172.16.3.3 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
C:\>
ping は失敗しました。
- PC-A から RT-C の F0/1 へ ping を実行しなさい。
< PC-A >
C:\> ping 10.10.10.3
10.10.10.3 に ping を送信しています 32 バイトのデータ:
10.10.10.3 からの応答: バイト数 =32 時間 =3ms TTL=253
10.10.10.3 からの応答: バイト数 =32 時間 =3ms TTL=253
10.10.10.3 からの応答: バイト数 =32 時間 =3ms TTL=253
10.10.10.3 からの応答: バイト数 =32 時間 =3ms TTL=253
10.10.10.3 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 3ms、最大 = 3ms、平均 = 3ms
C:\>
ping は成功しました。
10.10.10.3 への ping は成功し、172.16.3.3 への ping は失敗したのは何故でしょうか?
両者に何の違いがあるのでしょうか?
以下は RT-A のルーティングテーブルです。
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
10.10.10.3 はこのルーティングテーブルに載っていない宛先です。
この場合は、no ip classless でもデフォルトルートに指定された宛先 (172.16.2.2) にパケットを転送します。
172.16.3.2 もこのルーティングテーブルに載っていない宛先ですが、no ip classless を実行すると、ルータはクラスフルな動作を行います。172.16.3.3 はクラスBのアドレスですので、172.16.0.0/16 のネットワーク上のアドレスです。このネットワークをサブネット化したネットワークが RT-A のルーティングテーブルには2つあります。
C 172.16.1.0/24 is directly connected, FastEthernet0/0
C 172.16.2.0/24 is directly connected, FastEthernet0/1
no ip classless では、ネットワークがサブネット化されている場合、メジャーネットワーク (172.16.0.0) が同じでかつ未知のサブネット (ルーティングテーブルに載っていないサブネット、つまり、172.16.1.0/24 と 172.16.2.0/24 以外) 宛てのパケットは破棄します。
(もちろん、172.16.1.0/24 宛てのパケットは FastEthernet0/0 に転送され、172.16.2.0/24 宛てのパケットは FastEthernet0/1 に転送します。)
そのため、メジャーネットワークが 172.16.0.0 でかつ、ルーティングテーブルに載っていないサブネット宛ての 172.16.3.3 のパケットは破棄されます。
これらを破棄させずにデフォルトルート宛てにパケットを転送するには ip classless が必須なわけです。
- RT-A の running-config を確認しなさい。
< RT-A >
RT-A# sh run
Building configuration...
!
no ip classless ← ip classless 無効
!
ip route 0.0.0.0 0.0.0.0 172.16.2.2 ← デフォルトルート
!
- RT-B の running-config を確認しなさい。
< RT-B >
RT-B# sh run
Building configuration...
!
ip route 10.10.10.0 255.255.255.0 172.16.3.3 ← スタティックルート
ip route 172.16.1.0 255.255.255.0 172.16.2.1 ← スタティックルート
!
- RT-C の running-config を確認しなさい。
< RT-C >
RT-C# sh run
Building configuration...
!
ip route 0.0.0.0 0.0.0.0 172.16.3.2 ← デフォルトルート
!