サブネットマスクは、IPアドレスのどこまでがネットワーク部かを表すマスクです。一方、ワイルドカードマスクは、IPアドレスの各ビットについて、一致を確認するか、無視するかを指定するマスクです。
この記事では、サブネットマスクとワイルドカードマスクの違いを具体例で解説したうえで、実際にCisco機器でACL・OSPF・EIGRP・BGPなどのコマンドを入力し、それぞれどのマスクが使用されるのかを確認してみます。
サブネットマスクとは?
サブネットマスクとは、IPアドレスのどこまでがネットワーク部で、どこからがホスト部なのかを判断するための値です。
例えば、次のIPアドレスを見てみましょう。
IPアドレス:192.168.1.10
サブネットマスク:255.255.255.0
サブネットマスクを2進数で表すと、以下のようになります。
11111111.11111111.11111111.00000000
サブネットマスクでは、
1:ネットワーク部0:ホスト部
を表します。
つまり、
192.168.1.10
255.255.255.0
の場合、
ネットワーク部:192.168.1
ホスト部 :10
となります。
このネットワークは一般的に、以下のように表記されます。
192.168.1.0/24
ワイルドカードマスクとは?
ワイルドカードマスクとは、IPアドレスのどの部分を判定し、どの部分を無視するかを指定するための値です。
例えば、CiscoルータやスイッチのACL(アクセスコントロールリスト)やOSPFなどで使用されます。
次の例を見てみましょう。
IPアドレス:192.168.1.0
ワイルドカードマスク:0.0.0.255
ワイルドカードマスクでは、
0:一致を確認する1:一致を確認しない(無視する)
という意味になります。
そのため、
192.168.1.0 0.0.0.255
は、
192.168.1.0 ~ 192.168.1.255
の範囲を表します。
つまり、192.168.1.x のすべてのIPアドレスに一致します。
サブネットマスクとワイルドカードマスクの最大の違い
両者の最も大きな違いは、0と1の意味が逆であることです。
| 種類 | 1の意味 | 0の意味 |
|---|---|---|
| サブネットマスク | ネットワーク部 | ホスト部 |
| ワイルドカードマスク | 無視する | 一致を確認する |
例えば、以下のサブネットマスクを考えます。
サブネットマスク
255.255.255.0
これに対応するワイルドカードマスクは、
0.0.0.255
です。
つまり、
255.255.255.0
と
0.0.0.255
は、ビットを反転させた関係になっています。
サブネットマスクからワイルドカードマスクを計算する方法
ワイルドカードマスクは、基本的に次の計算で求めることができます。
255.255.255.255
- サブネットマスク
= ワイルドカードマスク
例えば、
サブネットマスク:255.255.255.0
の場合、
255.255.255.255
- 255.255.255.0
= 0.0.0.255
となります。
実際にCiscoルータで確認してみた
サブネットマスクとワイルドカードマスクの違いを理解するため、実際に自宅のCiscoルータでコマンドを入力して確認してみました。
Cisco IOSでは、コマンド入力中に?を入力することで、その位置で入力できるキーワードやパラメータの候補を確認できます。
今回は、ルーティングコマンドとアクセスリストのコマンド、ルーティングプロトコルコマンドで、それぞれどのような値が求められるのかを確認してみます。
ルーティングコマンドの場合
まず、スタティックルートを設定するip routeコマンドを入力して確認します。
宛先ネットワークのアドレスを入力したあとに?を入力すると、次にサブネットマスクの入力が求められます。

このことから、ip routeコマンドでは、宛先ネットワークを指定する際にサブネットマスクを使用することが分かります。
アクセスリストの場合
次に、アクセスリストの設定を確認します。
アクセスリストでネットワークアドレスを入力したあとに?を入力すると、次にワイルドカードマスクの入力が求められます。

このことから、アクセスリストではIPアドレスやネットワークを指定する際に、ワイルドカードマスクを使用することが分かります。
OSPFの場合
次に、OSPFの設定を確認します。
ネットワークアドレスを入力したあとに?を入力すると、次にワイルドカードマスクの入力が求められます。

EIGRPの場合
次に、EIGRPの設定を確認します。
ネットワークアドレスを入力したあとに?を入力すると、次にワイルドカードマスクの入力が求められます。

BGPの場合
次に、BGPの設定を確認します。
ネットワークアドレスを入力したあとに?を入力すると、OSPFやEIGRPと違い候補が複数ありました。
ワイルドカードマスクの指定はないようです。

maskを入力したあとに?を入力すると、次にサブネットマスクの入力が求められました。

確認結果
- スタティックルート → サブネットマスク
- ACL → ワイルドカードマスク
- OSPF → ワイルドカードマスク
- EIGRP → ワイルドカードマスク
- BGP → サブネットマスク
今回確認したCisco IOSのコマンドでは、スタティックルートとBGPではサブネットマスク、ACL・OSPF・EIGRPではワイルドカードマスクが使用されていました。
特に、ルーティングプロトコルの設定では、OSPF・EIGRPとBGPで使用するマスクが異なることが分かります。
「0.0.0.0」はどういう意味?
ワイルドカードマスクでは、0.0.0.0という値もよく使用されます。
例えば、
192.168.1.10 0.0.0.0
と指定した場合、
192.168.1.10というIPアドレスに完全一致するものだけを対象にする
という意味になります。
Cisco ACLでは、次のように記述されることがあります。
access-list 1 permit 192.168.1.10 0.0.0.0
また、Ciscoでは次のような省略形もあります。
access-list 1 permit host 192.168.1.10
「255.255.255.255」はどういう意味?
ワイルドカードマスクで、
0.0.0.0 255.255.255.255
と指定すると、すべてのビットを無視します。
つまり、
すべてのIPアドレスに一致する
という意味になります。
Ciscoでは、次のように省略できます。
any
例えば、
access-list 1 permit any
は、
access-list 1 permit 0.0.0.0 255.255.255.255
と同じ意味です。
まとめ
今回は、サブネットマスクとワイルドカードマスクの違いについて、具体例を交えながら確認しました。
サブネットマスクは、IPアドレスのネットワーク部とホスト部を区別するための値です。一方、ワイルドカードマスクは、IPアドレスのどの部分を一致させ、どの部分を無視するかを指定するための値です。
両者は、0と1の意味が逆になっており、通常のサブネットマスクからワイルドカードマスクを求める場合は、
255.255.255.255 − サブネットマスク
= ワイルドカードマスク
という計算で求めることができます。
また、実際にCisco IOSで?を使用して各コマンドを確認したところ、今回確認したコマンドでは以下のような違いがありました。
- スタティックルート(
ip route) → サブネットマスク - ACL → ワイルドカードマスク
- OSPF → ワイルドカードマスク
- EIGRP → ワイルドカードマスク
- BGP → サブネットマスク
特に覚えておきたいのが、OSPF・EIGRPではワイルドカードマスクを使用するのに対して、BGPではサブネットマスクを使用するという点です。
また、ワイルドカードマスクでは、
0.0.0.0 → すべてのビットを一致させる
255.255.255.255 → すべてのビットを無視する
という考え方が基本になります。
例えば、
192.168.1.10 0.0.0.0
であれば192.168.1.10に完全一致し、
0.0.0.0 255.255.255.255
であれば、すべてのIPアドレスに一致します。Ciscoでは、それぞれhostやanyというキーワードで表現することもできます。
サブネットマスクとワイルドカードマスクは見た目が似ていますが、「何を表すためのマスクなのか」を理解することが重要です。
Ciscoの設定では、コマンドによってサブネットマスクとワイルドカードマスクを使い分ける必要があるため、実際に?で確認しながらコマンドを入力してみると、違いをより理解しやすくなります。

