ACL(アクセスコントロールリスト)は、パケットを条件で選び、通すか止めるかを決める仕組みです。通信の制限だけでなく、NATやPBR、QoSなどで「対象の通信を選ぶ」ためにも使われます。CCNP ENARSIでは、ACLの書き間違いを見つけるトラブルシューティングがよく出題されます。
先に結論から
- 標準ACLは送信元のアドレスだけ、拡張ACLは送信元・宛先・プロトコル・ポート番号で条件を決めます。
- ACLは上から順に評価され、最初に一致した行で処理が決まります。
- 最後には、どの行にも一致しない通信をすべて止める「暗黙のdeny」があります。
- 標準ACLは宛先の近く、拡張ACLは送信元の近くに適用するのが基本です。
ACLの種類

| 種類 | 番号 | 条件にできるもの |
|---|---|---|
| 標準ACL | 1〜99、1300〜1999 | 送信元のIPアドレス |
| 拡張ACL | 100〜199、2000〜2699 | 送信元・宛先のIPアドレス、プロトコル、ポート番号 |
| 名前付きACL | 番号の代わりに名前 | 標準・拡張のどちらでも作れる |
ACLの評価のルール

- 上の行から順に、パケットが条件に一致するかを調べます。
- 一致した行が見つかると、そこでpermit(通す)かdeny(止める)が決まり、下の行は見ません。
- どの行にも一致しなければ、最後の暗黙のdenyで止められます。
このため、細かい条件の行を上に、広い条件の行を下に書く必要があります。たとえば、先に「すべて許可」の行を書くと、その下の行は使われません。
ワイルドカードマスク
ACLでは、アドレスの範囲をワイルドカードマスクで指定します。0のビットは「一致が必要」、1のビットは「何でもよい」という意味です。
| 書き方 | 意味 |
|---|---|
| 192.168.1.0 0.0.0.255 | 192.168.1.0〜192.168.1.255 |
| host 192.168.1.10 | 192.168.1.10だけ(0.0.0.0と同じ) |
| any | すべてのアドレス(0.0.0.0 255.255.255.255と同じ) |
設定例
ip access-list extended BLOCK-TELNET
10 deny tcp 192.168.1.0 0.0.0.255 any eq 23
20 permit ip any any
!
interface GigabitEthernet0/0
ip access-group BLOCK-TELNET in
192.168.1.0/24からのTelnetだけを止め、それ以外は通す例です。20番の行がないと、暗黙のdenyですべての通信が止まってしまいます。名前付きACLでは、行番号(シーケンス番号)を指定して、途中に行を追加したり、1行だけ消したりできます。
適用する場所と向き
ip access-group 名前 in:インターフェースに入ってくる通信に適用するip access-group 名前 out:インターフェースから出ていく通信に適用する- ルーター自身から送る通信は、outのACLでは止まりません。
- VTY(Telnet・SSHのログイン)を制限するときは、
line vtyでaccess-classを使います。
IPv6 ACLの注意点
IPv6のACLにも最後に暗黙のdenyがありますが、その前に近隣探索(NDのNS・NA)を許可する行が暗黙的に入っています。ただし、自分で最後にdeny ipv6 any anyを書くと近隣探索も止まり、通信ができなくなるので注意が必要です。
ACLはNATやPBRでも使われます。ENARSI全体の勉強の進め方はENARSIの勉強法でまとめています。
よくある質問
標準ACLと拡張ACLの番号の範囲を教えてください。
標準ACLは1〜99と1300〜1999、拡張ACLは100〜199と2000〜2699です。
ACLのどの行にも一致しない通信はどうなりますか?
最後の暗黙のdenyにより、止められます。
標準ACLはどこに適用するのがよいですか?
送信元しか指定できないため、関係のない通信まで止めないよう、宛先の近くに適用するのが基本です。
