LAN スイッチ:ip subnet-zero - 何のために存在するのか?

ip subnet-zero ...... ほとんどすべてのCisco ルーターやCatalyst に設定されています。
ルーターを初期化しても必ず入っているこの設定。
気にはなっても、あえて触れなかった人も多いのではないでしょうか。
a
















Router#sh run
Building configuration...

Current configuration : 497 bytes
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname Router
!
!
clock timezone PST -8
ip subnet-zero
no ip domain lookup
!


クラスという枠の存在により、IP のアドレッシングが今よりもっと自由度が低かったころに話はさかのぼります。

インターネットに接続するためには、IP アドレスが必要になります。
大抵の場合、 割り当てられたアドレス・ブロックをそのまま使うのではなく、複数のサブネットに分割して、ルーターによりそれらのサブネットを束ねます。


ここに、220.220.220.0 というクラスC のネットワーク・アドレスを取得した企業があると仮定します。

8ビットあるホスト部から3ビットを借りてくると、次の八つのサブネットができます。カッコの中は2 進数です。

220.220.220.  0(000-00000)

220.220.220. 32(001-00000)

220.220.220. 64(010-00000)

220.220.220. 96(011-00000)

220.220.220.128(100-00000)

220.220.220.160(101-00000)

220.220.220.192(110-00000)

220.220.220.224(111-00000)


1 行目のサブネット番号は0 なので、このネットワークは220.220.220.0 になります。

サブネット分割する前のクラスC ネットワークと同じですよね。
220.220.220.0 と書いても、本来のクラスC なのか、分割した後のサブネットなのか区別ができません。

ルーターの実装によっては、この「区別できない」ことが致命的になる場合もあります。
そのため、サブネット番号がゼロとなるようなサブネットは使わないことが推奨されていました(RFC 950)。

Cisco のIOS でも、従来は、サブネット番号がゼロとなるようなIP アドレスは設定ができませんでした。

Router(config)#interface ethernet 0/0
Router(config-if)#
Router(config-if)#ip address 220.220.220.1 255.255.255.224
Bad mask /27 for address 220.220.220.1
Router(config-if)#

しかし、この制限はあくまでRFC の推奨に基づくものであって、禁止事項ではありません。

そのような状況を踏まえてCisco は、ip subnet-zero というコマンドを導入しました。
ip subnet-zero" を設定すると、サブネット番号がゼロとなるアドレスも設定可能となります。

推奨を理解したうえで、あえてsubnet-zero を使いたいという人向けの設定項目というわけです。

Router(config)#ip subnet-zero
Router(config)#
Router(config)#interface ethernet 0/0
Router(config-if)#ip address 220.220.220.1 255.255.255.224
Router(config-if)#

IOS バージョン12.0 からは、ip subnet-zero がデフォルトで有効になっています。

もちろん、no ip subnet-zero を設定することで無効にすることもできます。