変更要約: 初版
5.3ACL(アクセスコントロールリスト)
IOSでトラフィックを許可/拒否するACLの種類(番号付き/名前付き、標準(1-99/1300-1999・送信元のみ)と拡張(100-199・送信元/宛先/プロトコル/ポート))、末尾の暗黙のdeny、ワイルドカードマスク、そして標準は宛先近く/拡張は送信元近くという配置原則を、設定・検証コマンドと合わせて「要件どおりに絞り込む」判断ができるように学びます。
ACLはルータ/スイッチ上で「どのトラフィックを通し、どれを止めるか」を1行ずつ順番に判定するルールの並びです。実務では「特定サーバへの特定ポートだけ止めたい」「ある部門から別部門への通信だけ遮断したい」といった要件を、標準か拡張か、どのインタフェースのin/outに、どの順番で書くかという判断に落とし込みます。順序や配置を誤ると意図しない通信まで遮断してしまうため、仕組みの正確な理解が不可欠です。
5.3.1標準ACLと拡張ACL
- 標準ACL=送信元IPアドレスのみで許可/拒否を判定する。番号範囲は1-99(拡張範囲1300-1999)。判定材料が送信元だけなので、送信元に近い場所に置くと「その送信元から全宛先への通信」をまとめて落としてしまう。そのため宛先に近いインタフェースに配置して、必要な通信を巻き込まないようにするのが原則。
- 拡張ACL=送信元IP・宛先IP・プロトコル(TCP/UDP/ICMP等)・ポート番号まで指定して細かく判定する。番号範囲は100-199(拡張範囲2000-2699)。狙った通信だけをピンポイントで止められるので、送信元に近いインタフェースに配置して不要なトラフィックを早い段階で落とし、無駄な帯域消費を防ぐのが原則。
- 名前付きACL=番号の代わりに意味のある名前を付けるACL(
ip access-list standard 名前/ip access-list extended 名前)。標準/拡張の別は指定するが、シーケンス番号で行を挿入/削除でき編集性が高いのが番号付きに対する利点。番号付き・名前付きはあくまで識別方法の違いで、判定能力は標準/拡張の別で決まる。
5.3.2暗黙のdeny・ワイルドカードマスク・処理順
- ACLは上から順に評価し、最初に一致した行の許可/拒否で確定(以降の行は評価しない)。どのACLの末尾にも明示しない暗黙のdeny(deny any)があるため、1つも一致しなければ暗黙で拒否される。したがって最低1つはpermit行が必要で、また具体的な行を先に、包括的な行を後に書くのが鉄則。
- ワイルドカードマスク=ACLでアドレス範囲を指定する32ビット値で、サブネットマスクのビット反転(
0=一致必須、1=任意)。例:0.0.0.255は「先頭24ビット一致・末尾8ビット任意」=/24全体を意味する。単一ホストはhostキーワード(=0.0.0.0)、全アドレスはany(=0.0.0.0 255.255.255.255)で表せる。 - インタフェースへの適用は
ip access-group 番号|名前 in|out(VTYにはaccess-class)。in=ルータに入る方向、out=ルータから出る方向で、方向を誤ると意図と逆の通信を止める。検証はshow access-lists/show ip access-lists(ヒットカウント確認)、show running-config、show ip interface(適用状況)を使う。
「標準ACL=1-99/1300-1999・送信元のみ・宛先近くに配置」「拡張ACL=100-199・送信元/宛先/プロトコル/ポート・送信元近くに配置」「末尾に暗黙のdeny=最低1つpermitが必要」「上から順に最初の一致で確定」「ワイルドカードマスク=サブネットマスクのビット反転」が最頻出です。適用はip access-group ... in|out、検証はshow access-listsを確実に。
あなたはネットワーク管理者で、「開発部(10.1.10.0/24)のホストが、経理サーバ(10.1.99.5)のWeb管理画面(TCP443)にアクセスするのを禁止したい。ただし開発部からその他の通信や他サーバへのアクセスは一切妨げないこと」という要件を受けたとします。まず、送信元・宛先・プロトコル・ポートをすべて指定する必要があるため、送信元しか見られない標準ACLでは実現不可能で、拡張ACL(100-199)が必須と判断できます。ルールは順序が命で、(1)access-list 110 deny tcp 10.1.10.0 0.0.0.255 host 10.1.99.5 eq 443で狙った通信だけを拒否し、(2)access-list 110 permit ip any anyで残りをすべて許可します。もし(2)を書き忘れると、末尾の暗黙のdenyによって開発部の他の正当な通信まで全部遮断され「その他は妨げない」という要件に反します。次に配置ですが、拡張ACLの原則どおり送信元(開発部)に最も近いルータのインタフェースのin方向に適用すれば、無駄なトラフィックを経理サーバの手前まで運ぶ前に落とせます。仮にこれを標準ACLで代用しようとすると、送信元10.1.10.0/24しか判定できないため「開発部から経理サーバへの全通信」や「開発部からあらゆる宛先への通信」を巻き込んで落としてしまい、要件を満たせません。ここでの判断の核心は、「宛先やポートで絞る要件=拡張ACLが必須」「暗黙のdenyを踏まないよう明示的なpermitを最後に置く」「拡張は送信元近くのin方向」という3点です。
| 項目 | 標準ACL | 拡張ACL |
|---|---|---|
| 番号範囲 | 1-99(拡張1300-1999) | 100-199(拡張2000-2699) |
| 判定できる条件 | 送信元IPのみ | 送信元/宛先IP・プロトコル・ポート |
| 推奨配置 | 宛先に近いインタフェース | 送信元に近いインタフェース |
| 共通の性質 | 末尾に暗黙のdeny・上から順評価・ワイルドカードマスク | 末尾に暗黙のdeny・上から順評価・ワイルドカードマスク |
ひっかけ: 「標準ACLは送信元に近い場所に置くのが最適」は誤りです——標準ACLは送信元しか判定できず、送信元近くに置くと必要な通信まで巻き込むため、宛先に近い場所に配置します(送信元近くは拡張ACL)。また「ACLは末尾に自動でpermit anyがある」も誤り=末尾は暗黙のdenyで、明示のpermitが1つも無いと全遮断されます。「ワイルドカードマスクはサブネットマスクと同じ」も誤りで、ビットが反転(0=一致必須/1=任意)しています。
5.3.3この節のまとめ
- 標準ACL(1-99)は送信元のみ判定で宛先近く、拡張ACL(100-199)は送信元/宛先/ポートまで判定で送信元近くに配置する
- ACLは上から順に最初の一致で確定し、末尾の暗黙のdenyがあるため最低1つのpermitが必要。範囲指定はワイルドカードマスク(サブネットマスクのビット反転)
- 適用は
ip access-group 番号|名前 in|out(VTYはaccess-class)、検証はshow access-lists/show ip access-lists/show ip interface
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 「開発部10.1.10.0/24から経理サーバ10.1.99.5のTCP443へのアクセスのみを禁止し、開発部のその他の通信は一切妨げない」という要件がある。この要件を満たすACL設計として最も適切なものはどれか。
Q2. あるルータに標準ACL(`access-list 10 permit 192.168.1.0 0.0.0.255`の1行のみ)を適用したところ、192.168.1.0/24以外のすべてのホストからの通信が遮断されてしまった。この挙動の原因として最も適切なものはどれか。
Q3. 標準ACLと拡張ACLの推奨配置に関する記述として最も適切なものはどれか。

