CCNA 200-301でACL(Access Control List)の問題、地味に厄介じゃないですか?「standardとextendedどっちが送信元側に置くんだっけ」とか「ワイルドカードマスクで0.0.0.255って何のレンジだ」とか、本番で詰まる人が本当に多い。私も初受験のとき、ACLの配置場所を逆に書いて1問落としました。あれは悔しかった。
この記事では、現役ネットワークエンジニアの目線で、CCNA試験のACL問題を本番30秒以内に解くための整理術をまとめます。standard/extendedの使い分け、配置場所のルール、implicit denyの罠、そしてワイルドカードマスクの暗算テクニックまで。実機(Catalyst 2960とISR 4321で検証済み)の出力例も貼っておくので、丸暗記じゃなく腹落ちさせてもらえれば。
CCNA試験でACLが頻出する3つの理由
200-301の出題範囲ではセキュリティとIPサービスの両方でACLが絡んできて、配点的にも軽くない。受験者の体感として2〜4問は出る印象です。試験問題の作り方としても扱いやすいんですよね。条件を1行変えるだけで通信が許可されたり遮断されたりするので、設問のバリエーションを作りやすい。
で、典型的な落とし穴は3つ。①standardとextendedの違いを理解していない。②配置場所のルールが逆。③implicit deny anyの存在を忘れて「permitだけ書けばOK」と思い込む。この3つ全部やられると、本番で2問は確実に落とす。
CCNA初受験で本番のACL問題、図を見てサッと「standard ACLだから送信元の近くだろ」と書いて即bookmark。あとで見返したら、それextended ACLだった。図に「TCP port 80のみ遮断」って書いてあったのに見落としたんです。プロトコル/ポートが指定された時点でstandardはほぼあり得ない。当たり前なんですけど焦るとこういうミスをやる。
Standard ACLとExtended ACLの違いを30秒で見分ける
最大の見分けポイントは「何を条件にしているか」。送信元IPだけを見るのがstandard、送信元と宛先IP+プロトコル+ポートまで見られるのがextended。番号も違って、standardは1〜99と1300〜1999、extendedは100〜199と2000〜2699。試験では番号からタイプを当てる問題も出るので暗記必須。
| 項目 | Standard ACL | Extended ACL |
|---|---|---|
| 番号範囲 | 1〜99 / 1300〜1999 | 100〜199 / 2000〜2699 |
| 条件にできる要素 | 送信元IPのみ | 送信元/宛先IP・プロトコル・ポート |
| 配置のセオリー | 宛先(destination)に近いI/F | 送信元(source)に近いI/F |
| 用途の例 | VTYアクセス制限など簡易的な制御 | サーバへのHTTP/HTTPS制御など細かい制御 |
| 名前付きACL | 対応(ip access-list standard) | 対応(ip access-list extended) |
番号付きACL(番号で識別)と名前付きACL(任意の名前で識別)の違いも問われます。Cisco IOS 12.3以降は名前付きACLの方が編集しやすく、現場では圧倒的に名前付き派。試験では両方の構文を見せられるのでどちらも書けるように。
ACL配置場所のセオリー|standardは宛先・extendedは送信元
これがCCNA最頻出の引っ掛けポイント。覚え方は単純で「standard = 宛先側」「extended = 送信元側」。理由も理屈で押さえればまず忘れない。
standardは送信元IPしか見られないから、送信元の近くに置くと「他の宛先への通信まで巻き添えで遮断」しちゃう。だから宛先の直前まで持っていくのが正解。一方extendedは宛先IPもプロトコルも指定できるので、送信元の近くで早めに弾けば無駄な転送を減らせる。要はリソースの節約という観点。
図1: ACL配置場所のイメージ(standard vs extended)
宛先近く
送信元近く
通信壊滅
試験で「Server2に対する10.1.1.0/24からのアクセスだけ拒否したい」みたいな問題が出たら、これはextended ACL一択。でも「最も効率的な配置は?」と聞かれて宛先近くを選んでしまうと不正解。standardかextendedかを先に判定する癖をつけておくと事故が減ります。
implicit deny anyとワイルドカードマスクの暗算
ACLの末尾には目に見えない「deny ip any any」が必ず付く。これがimplicit deny。試験では「permit文だけ書いた構成で、書いていない通信はどうなる?」と聞かれて「通る」を選んだら即アウト。書かれていないものは全部落ちます。
で、implicit denyはshow access-listsには表示されない。だから初学者が「カウンタが進んでないからACL効いてない」と勘違いしがち。実際は最後の行がカウントアップしないだけで、しっかり遮断されてます。
サブネットマスクのビットを「反転」させたものがワイルドカードマスク。255.255.255.0 → 0.0.0.255、255.255.255.240 → 0.0.0.15。これだけ。覚え方は「ホスト部のビット数を10進に直したものが末尾にくる」。/24なら8bit分のホスト部=255、/28なら4bit分=15、/30なら2bit分=3。
| プレフィックス | サブネットマスク | ワイルドカードマスク |
|---|---|---|
| /24 | 255.255.255.0 | 0.0.0.255 |
| /26 | 255.255.255.192 | 0.0.0.63 |
| /28 | 255.255.255.240 | 0.0.0.15 |
| /30 | 255.255.255.252 | 0.0.0.3 |
| /16 | 255.255.0.0 | 0.0.255.255 |
| 単一ホスト | 255.255.255.255 | 0.0.0.0(=hostキーワード) |
ちなみに「any」は「0.0.0.0 255.255.255.255」と等価で、「host 192.168.1.10」は「192.168.1.10 0.0.0.0」と等価。試験ではこの言い換えを混ぜて出してくるので、両方読めるように。
CCNA頻出問題パターン3選|実機コマンド付きで解いてみる
「管理セグメント192.168.10.0/24からのSSHだけ許可」というシナリオ。これは送信元IPだけ見ればよいのでstandard ACLでもOKだけど、現場ではextended+ポート指定の方が安全。試験は問題文どおりにstandardで解く問題が多い。
R1(config)# access-list 10 permit 192.168.10.0 0.0.0.255 R1(config)# line vty 0 4 R1(config-line)# access-class 10 in R1(config-line)# transport input ssh
R1(config)# ip access-list extended BLOCK-HTTP R1(config-ext-nacl)# deny tcp 192.168.20.0 0.0.0.255 host 10.10.10.50 eq 80 R1(config-ext-nacl)# permit ip any any R1(config-ext-nacl)# exit R1(config)# interface gi0/0 R1(config-if)# ip access-group BLOCK-HTTP in
ポイントは「permit ip any any」を末尾に書くこと。これを忘れるとimplicit denyで全通信が落ちて、教室や試験会場で「ACLかけたら全部繋がらなくなった」事案が発生する。設定後にpingが通らなくなったら、まずこの行が抜けてないか疑う。
名前付きACLは行番号(sequence number)を指定して挿入・削除できるのが強み。CCNAでも問われます。番号付きACLだと末尾追加しかできないので、現場で名前付きが好まれる理由でもある。
R1# show ip access-lists BLOCK-HTTP
Extended IP access list BLOCK-HTTP
10 deny tcp 192.168.20.0 0.0.0.255 host 10.10.10.50 eq www
20 permit ip any any
R1(config)# ip access-list extended BLOCK-HTTP
R1(config-ext-nacl)# 15 deny tcp 192.168.20.0 0.0.0.255 host 10.10.10.50 eq 443
R1(config-ext-nacl)# end
R1# show ip access-lists BLOCK-HTTP
Extended IP access list BLOCK-HTTP
10 deny tcp 192.168.20.0 0.0.0.255 host 10.10.10.50 eq www
15 deny tcp 192.168.20.0 0.0.0.255 host 10.10.10.50 eq 443
20 permit ip any any
番号付きACLは1行追加すると問答無用で末尾に追加されるので、途中に挟みたい時は一旦no access-list 100で全削除して書き直すしかない。本番運用中の機器で全削除は通信断のリスクが高いので、現場では名前付きで作るのが鉄則。試験でもこの違いはよく問われます。
show access-listsの読み方とトラブルシュート
設定が反映されているかは「show access-lists」と「show ip interface gi0/0 | include access list」のセットで確認する。前者でACLの中身、後者でI/Fへの適用状況を見る。試験では出力例を見せて「どのACLが何のI/Fにinかoutで適用されているか」を答えさせる問題が定番。
R1# show ip interface gi0/0 | include access list
Outgoing access list is not set
Inbound access list is BLOCK-HTTP
R1# show access-lists
Extended IP access list BLOCK-HTTP
10 deny tcp 192.168.20.0 0.0.0.255 host 10.10.10.50 eq www (47 matches)
20 permit ip any any (1283 matches)
「(47 matches)」がカウンタ。マッチした回数なので、ここが0のままなら本当にトラフィックが通ってない可能性が高い。逆に47件マッチしている=想定通り遮断できている。クリアしたいときは「clear ip access-list counters BLOCK-HTTP」。
図2: ACLトラブル時の切り分けフロー
必須
最重要
推奨
要点
| 症状 | よくある原因 | 確認コマンド |
|---|---|---|
| 全通信が落ちる | implicit denyに引っかかった(permit any忘れ) | show access-lists |
| ACLは存在するが効かない | I/Fに適用されていない | show ip interface | inc access list |
| 想定外の通信を遮断 | ワイルドカードマスクの計算ミス | show running-config | sec access-list |
| in/outを取り違え | 適用方向がトラフィックと逆 | show ip interface gi0/0 |
実機検証中に「設定したのに効かない」となったら、9割はI/F適用忘れか方向ミス。私はこれをやらかすたびに「ip access-group XXX in」を声に出して確認するようにしました。地味ですが意外と効きます。
まとめ|ACL問題は「タイプ→配置→implicit deny」の順で考える
CCNAのACL問題は、①番号/条件からstandardかextendedかを判定 → ②standardは宛先近く・extendedは送信元近くの原則で配置を決める → ③implicit deny anyで弾かれていないか確認、の3ステップで解ける。ワイルドカードマスクはサブネットマスクの反転と覚えれば暗算可能。show access-listsとshow ip interfaceのセットで設定確認できれば本番でも怖くない。
よくある質問(FAQ)
Q. standard ACLの番号と extended ACLの番号、覚えにくいんですが…
私は「1〜99はstandard、100〜199はextended、その後の拡張領域もそれぞれ近い側」というざっくり覚え方で乗り切りました。1300〜1999もstandardの仲間、2000〜2699はextendedの仲間。番号の最初の桁で見当をつける感じです。
Q. ACLとはそもそも何のために使うものですか?
フィルタリング(通信制御)が一番有名な用途ですが、CCNAではNATやroute-mapの参照リストとして「対象IPを絞る」目的で使われる場面も問われます。「ACL=パケットを通す/落とすだけのもの」と思っていると、NATの問題でつまずきます。
Q. CCNA試験当日に時間がなくなった時、ACL問題は捨てるべき?
捨てるのはもったいない。standard/extendedの判定とimplicit denyの存在を覚えていれば、消去法で2択まで絞れる問題が多いです。配点も他の問題と変わらないので、最後の数分で取り返せる科目だと思います。
Q. 名前付きACLって試験で出ますか?
出ます。番号付きと名前付きの構文の違い、sequence numberを使った行の挿入、両者の編集制限の違いはどれも頻出。実機で一回手を動かすと一気に覚えやすくなるので、Packet Tracerでもいいので試してみてください。



