CCNAワイルドカードマスクの計算方法|ACL・OSPFでの書き方【200-301対応】

ワイルドカードマスクとACLの動作イメージを示すネットワーク構成図

ACLを書こうとした瞬間、あの「0.0.0.255」という謎の数字が出てくる。OSPFのnetworkコマンドでも同じ。サブネットマスクに慣れていると、これがけっこうな違和感なんですよね。自分もCCNAを受けた当時、ワイルドカードマスクで何度もケアレスミスをやらかしました。

この記事では、ワイルドカードマスクの計算方法と、ACL・OSPFでの実際の書き方をまとめます。暗算で解くテクニックと、試験でよく狙われる「連続じゃないIP範囲」のパターンも現場で使っているやり方で解説。読み終わった頃には、ワイルドカードマスクを見ても3秒で計算できる状態になっているはずです。

ワイルドカードマスクってそもそも何?サブネットマスクと何が違うのか

ワイルドカードマスクの基本

ワイルドカードマスクは、IPアドレスのうち「どのビットを見るか、どのビットを無視するか」を指定するための32ビットの値です。ざっくり言えば、サブネットマスクの逆。0のビットは「一致必須」、1のビットは「何でもOK」を意味します。

Ciscoの公式ドキュメントでもこう定義されていて、ACLやOSPFのnetworkコマンド、EIGRPのnetworkコマンドなど、Ciscoの色々なところで出てきます。ぶっちゃけサブネットマスクと似た形式で書かれているのに意味が逆だから、試験でも現場でも混同する人が後を絶たない。

📝 補足情報

ワイルドカードマスクの「0=一致」「1=無視」という仕様はRFCで標準化されたものではなく、Cisco独自の記法です。JuniperやFortiGateではまた別の書き方をするので、マルチベンダー環境だとこれが地味に混乱の種になります。

項目サブネットマスクワイルドカードマスク
0の意味ホスト部一致必須(チェック対象)
1の意味ネットワーク部無視(何でもOK)
ビット配置先頭から連続で1不連続でもOK
代表例(/24)255.255.255.00.0.0.255
主な用途IPアドレス設計ACL、OSPF/EIGRPのnetwork
💡 現場での体験談

以前、客先でACLを書いていて「10.0.0.0 255.255.255.0」と無意識でサブネットマスクを書いてしまい、意図しないレンジをブロックしてしまったことがあります。深夜のメンテ中で、疎通が落ちた瞬間に一気に目が覚めた記憶があります。Ciscoのルーターは(一部を除き)サブネットマスクを書いてもエラーを返さないので、本当に厄介。show access-listで展開して必ず確認するクセが付きました。

ワイルドカードマスクの計算方法|255引き算と2進数の2通り

計算方法

計算方法は2パターン。基本は「255からの引き算」で、これで9割の問題は解けます。ただ、2進数で考える方法も頭に入れておくと、不連続ビットの問題に出会ったとき一気に有利になります。

方法1:255から引き算する

サブネットマスクの各オクテットを、255から引くだけ。暗算でもいけるレベル。

サブネットマスク  255.255.255.0
                  ↓ 255から引き算
ワイルドカード    0.  0.  0.255

サブネットマスク  255.255.240.0   (/20)
                  ↓
ワイルドカード    0.  0. 15.255

255-255=0、255-240=15、255-0=255。この3パターンが頭に入っていればOK。/20の240はCCNAで本当によく出るやつです。

方法2:2進数で考える(ビット反転)

サブネットマスクを2進数で書いて、0と1を全部ひっくり返すだけ。不連続ビットの問題を解くときはこっちが早い。

255.255.255.0
= 11111111.11111111.11111111.00000000
             ↓ 全ビット反転
= 00000000.00000000.00000000.11111111
= 0.0.0.255
プレフィックスサブネットマスクワイルドカード
/24255.255.255.00.0.0.255
/25255.255.255.1280.0.0.127
/26255.255.255.1920.0.0.63
/27255.255.255.2240.0.0.31
/28255.255.255.2400.0.0.15
/30255.255.255.2520.0.0.3
/16255.255.0.00.0.255.255
host指定255.255.255.2550.0.0.0
any指定0.0.0.0255.255.255.255

図1: 計算方法ごとの習得スピード体感比較

255引き算法

92%

早見表暗記

78%

2進数ビット反転

55%

ブロックサイズ計算

35%

個人的には、最初は255引き算法だけで押し通して、余裕が出てきたら2進数法を覚える順番がおすすめ。全部同時に覚えようとすると頭がパンクします。

ACLで使うワイルドカードマスク|標準・拡張の書き方

ACLでの書き方

ACLにはstandard(1-99、1300-1999)とextended(100-199、2000-2699)があって、どちらでもワイルドカードマスクを書く場面が出てきます。standardは送信元IPのみ、extendedは送信元・宛先・プロトコル・ポートまで指定できる。で、この「IPの指定」のところでワイルドカードマスクが登場します。

Step 1: 標準ACLでネットワーク単位を許可する
Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255
Router(config)# access-list 10 deny   any
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip access-group 10 in

! 確認
Router# show access-lists 10
Standard IP access list 10
    10 permit 192.168.1.0, wildcard bits 0.0.0.255
    20 deny   any
Step 2: 拡張ACLで送信元・宛先を両方指定する
! 192.168.1.0/24 → 10.0.0.0/8 のHTTPを許可
Router(config)# ip access-list extended WEB-ACL
Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255 eq 80
Router(config-ext-nacl)# deny   ip any any log
Router(config-ext-nacl)# exit
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip access-group WEB-ACL in
ホスト1台だけ指定するときはhost省略形を使う
! 長い書き方
access-list 20 permit 192.168.1.10 0.0.0.0

! 短縮形(同じ意味)
access-list 20 permit host 192.168.1.10

! 全許可の短縮形
access-list 30 permit 0.0.0.0 255.255.255.255
access-list 30 permit any
⚠ よくあるミス

ACLは暗黙のdeny anyが末尾に入ります。permit文を1つも書かずにdenyだけ並べると、全通信が落ちます。試験でも現場でも、permitを必ず1行は入れること。あと、既存のnumbered ACLに行を追加したつもりが「一番下」に追加されて、暗黙のdenyの上には来てもpermitより下に来てしまうパターンも要注意。順序が大事です。

OSPFのnetworkコマンドで使うワイルドカードマスク

OSPFでの書き方

OSPFのnetworkコマンドは「OSPFを有効にするインターフェースを指定する」ためのもの。IPアドレスとワイルドカードマスクを書くと、そのレンジにマッチするインターフェースでOSPFが動き出します。

Router(config)# router ospf 1
! 192.168.1.0/24 のインターフェースをarea 0で有効化
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0

! 10.0.0.0/8 全体を有効化
Router(config-router)# network 10.0.0.0 0.255.255.255 area 0

! 特定インターフェース1つだけを有効化
Router(config-router)# network 192.168.1.1 0.0.0.0 area 0
💡 ポイント

最後の「network 192.168.1.1 0.0.0.0 area 0」のように0.0.0.0(完全一致)を指定すれば、インターフェース単位でピンポイントにOSPFを有効化できます。現場ではこのやり方が一番安全。間違って余計なインターフェースでOSPFが動いて、意図しないアドバタイズが始まる事故を防げる。個人的にはこっちの書き方を使うことが多いです。

CCNA試験で狙われるパターンと解き方

CCNA試験での出題パターン

パターン1:連続した複数サブネットをまとめて指定

「192.168.0.0/24から192.168.3.0/24までをACLで1行で書け」みたいな問題。4つのサブネットを合わせると/22になるので、ワイルドカードマスクは0.0.3.255。

192.168.0.0/24  ┐
192.168.1.0/24  │  4つまとめて /22 = 0.0.3.255
192.168.2.0/24  │
192.168.3.0/24  ┘

access-list 10 permit 192.168.0.0 0.0.3.255
パターン2:偶数ホストだけ・奇数ホストだけを指定

これが意地悪な問題の代表格。「192.168.1.0/24の偶数IPだけ許可するACLを書け」というやつ。2進数で考えないと解けない。

偶数IPの特徴: 最終オクテットの最下位ビットが0
例: .0=00000000 .2=00000010 .4=00000100 .6=00000110

ワイルドカードマスク = 11111110 = 254
→ 最下位ビットだけ「一致必須」、それ以外は無視

access-list 10 permit 192.168.1.0 0.0.0.254

奇数IPなら開始アドレスを.1にして、ワイルドカードは同じ0.0.0.254。この不連続ビットのパターンは、連続マスクしか使わないサブネットマスクでは絶対に表現できません。ワイルドカードマスクならではの芸当。

パターン3:ブロックサイズ法で秒殺する

試験では「ワイルドカードマスク+1=ブロックサイズ」を覚えておくと速い。例えば0.0.0.31なら31+1=32なので32個単位のブロック、開始は32の倍数になります。

ワイルドカードブロックサイズ開始IPの条件
0.0.0.34(/30相当)4の倍数
0.0.0.78(/29相当)8の倍数
0.0.0.1516(/28相当)16の倍数
0.0.0.3132(/27相当)32の倍数
0.0.0.6364(/26相当)64の倍数
0.0.3.2551024(/22相当)第3オクテットが4の倍数
ワイルドカードマスクでよくあるミスとハマりどころ

よくあるミス

ミス内容結果対処法
サブネットマスクを書いた意図しないIPまでマッチshow access-listsで展開確認
開始IPがブロック境界でない範囲がズレるブロックサイズの倍数から開始
末尾の暗黙deny忘れ通したい通信が落ちるpermit anyを明示的に書く
in/outの向き間違い全く効かないトラフィック方向を図で確認
OSPFのnetworkが広すぎる意図せずOSPF動作0.0.0.0でインターフェース指定
🚫 やってはいけないこと

ACLをリモートアクセス中のインターフェースに適用するのは絶対NG。接続が切れて、シリアルコンソールまで行かないと復旧できません。自分は一度やらかして、片道2時間の客先にとんぼ返りした過去があります。ACLを入れる時は、できる限りreload in 10を仕込んでからadminとして試すのが鉄則。

まとめ

まとめ

📋 まとめ

ワイルドカードマスクは「0=一致、1=無視」のCisco独自表記。サブネットマスクを255から引けば9割OK、奇数・偶数指定など不連続パターンだけ2進数で考える。ACLとOSPFで使う場所は同じ書式。show access-listsで展開結果を必ず確認するクセを付けておくと、深夜の事故を1つ減らせます。

よくある質問(FAQ)

Q. ワイルドカードマスクは必ず連続ビットじゃないとダメ?

不連続でOKです。これはサブネットマスクとの決定的な違い。例えば0.0.0.254のように、最下位ビットだけ0にして残りを1にする書き方も有効。偶数IPだけマッチ、みたいなことができます。

Q. サブネットマスクをワイルドカードマスクの代わりに書いたらエラーになりますか?

Cisco IOSの多くのバージョンでエラーにならず受け付けてしまいます。ここが一番の罠。設定は通るけど意図と違うレンジがマッチするので、必ずshow access-listsで展開結果を確認してください。

Q. OSPFで「network 0.0.0.0 255.255.255.255 area 0」と書くとどうなる?

全インターフェースがarea 0でOSPF有効化されます。ラボ環境なら楽だけど、本番ではまず使わない。意図しないインターフェースにHelloが流れて、セキュリティ的にもよろしくないので、基本はインターフェース単位で指定するのが定石。

Q. CCNA試験ではワイルドカードマスクの計算問題、何問くらい出る?

直接的な計算問題は2〜3問、間接的にACLやOSPFの設定例の中で出てくるものを含めると5問前後、という印象です。配点比率は決して低くないので、早見表を叩き込んでおく価値は充分あります。