ACLとは、アクセスコントロールリストの略です。
一般的には略して ACLや、アクセスリストと呼ばれており、
通信アクセスを制御するためのリストのことです。
| ACLの種類 |
ACLには、4つの種類があります。
標準、拡張に対して、番号付きと名前付きのACLです。※1
| 標準ACL | 拡張ACL | |
| 番号 付き | 番号付き標準ACL access-list 10 permit host 192.168.0.123 access-list 10 permit 192.168.0.0 0.0.0.255 access-list 10 deny 192.168.0.0 0.0.0.255 | 番号付き拡張ACL access-list 101 permit icmp 2.2.2.0 0.0.0.255 any access-list 101 deny icmp 2.2.2.9 0.0.0.255 any |
| 名前 付き | 名前付き標準ACL ip access-list standard ABC deny 2.2.2.2 permit 1.1.1.1 | 名前付き拡張ACL ip access-list extended ABCDE permit tcp 1.1.1.0 0.0.0.255 eq 123 any permit udp 2.2.2.0 0.0.0.255 eq 123 any log |
※1 通し番号はshow ip access-listsで確認する
標準ACLは、パケットをチェックするのに、送信元IPアドレスを使用。
拡張ACLは、パケットをチェックするのに、送信元IPアドレス、宛先IPアドレス、プロトコル番号、ポート番号を使用。
| ACLの仕組み |
基本的に設定した順番に上から並びます。
最初に設定したものが、1行目に
次に設定したものが2行目に、といった形です。

そして、上から順番に処理していき、条件に合致したら、パケットを許可、拒否の判断をし、処理が終了します。
また、ACLには「暗黙のdeny」というルールがあります。
「暗黙のdeny」は作成したACLの最終行に自動で追加され、全てのパケットを拒否するACLです。「暗黙のdeny」は表示されません。
| 番号付き標準ACL |
●Cisco機器によるACLの設定方法
(config)# access-list < ACL番号 > < permit or deny > < 送信元アドレス > < ワイルドカードマスク >
<ACL番号>・・・ 1 ~ 99、1300 ~ 1999 の範囲で指定。
< 送信元アドレス >・・送信元のアドレスを指定。
< ワイルドカードマスク >・・これの説明はこちらのページにて。
| access-list 12 permit host 192.168.0.123 | 送信元192.168.0.123からのパケットを許可 |
| access-list 12 deny host 192.168.0.123 | 送信元192.168.0.123からのパケットを遮断 |
| access-list 12 permit 192.168.0.0 0.0.0.255 | 送信元192.168.0.0のセグメントからのパケットを許可 |
| access-list 12 deny 192.168.0.0 0.0.0.255 | 送信元192.168.0.0のセグメントからのパケットを遮断 |
●IFへの適用方法
(config-if)# ip access-group < ACL番号 > < in |out >
< ACL番号 >・・・ACLの番号 1 ~ 99、1300 ~ 1999 の範囲で指定。
< in | out >・・・inは受信方向、outは送信方向を指定。
| 番号付き拡張ACL |
●Cisco機器によるACLの設定方法
(config)# access-list < ACL番号 > < permit or deny > < プロトコル > < 送信元 > <ワイルドカードマスク> < ポート番号 > <宛先> <ワイルドカードマスク> <ポート番号> < established or log or log-input >
< ACL番号 >・・・・ 100 ~ 199、2000 ~ 2699 の範囲で指定。
< プロトコル >・・・ ip,icmp,tcp,udpなどのプロトコル名を指定。
< 送信元>・・・・送信元のアドレスを指定。
< 宛先 >・・・・・宛先のアドレスを指定。
< ワイルドカードマスク >・・これの説明はこちらのページにて。
< ポート番号 >・・・ 以下の演算子の後にポート番号を指定する。
eq・・・・等しい
neq・・・等しくない
gt・・・・~以上
lt・・・・~以下
range・・~の範囲
| access-list 101 permit icmp 2.2.2.0 0.0.0.255 3.3.3.0 0.0.0.255 |
| 送信元2.2.2.0/24セグメントのICMPから、宛先3.3.3.0/24セグメントへの通信を許可 |
| access-list 101 deny tcp 2.2.2.0 0.0.0.255 eq 23 3.3.3.0 0.0.0.255 |
| 送信元2.2.2.0/24セグメントのtcp telnet通信から、宛先3.3.3.0/24セグメントへの通信を拒否 |
●IFへの適用方法
(config-if)# ip access-group < ACL番号 > < in |out >
< ACL番号 >・・・ACLの番号 100 ~ 199、2000 ~ 2699 の範囲で指定。
< in | out >・・・inは受信方向、outは送信方向を指定。
| 名前付き標準ACL |
●Cisco機器によるACLの設定方法
(config)# ip access-list standard < 名前 >
(config-std-nacl)# <番号>< permit or deny > <送信元> <ワイルドカードマスク>
<名前>・・・・ACLの名前
<番号>・・・・条件文のシーケンス番号。省略すると、上から10,20,30…と付加される
< permit or deny >・・・permit(許可)もしくは、deny(拒否)
<送信元>・・・送信元のアドレスを指定
< ワイルドカードマスク >・・これの説明はこちらのページにて。
| ip access-list standard ABC | 標準名前付きACLのABCを宣言 |
| deny 2.2.2.2 | 送信元のアドレス 2.2.2.2を拒否する |
| permit 1.1.1.1 | 送信元のアドレス 1.1.1.1を許可する |
●IFへの適用方法
(config-if)# ip access-group < ACL番号 > < in |out >
< ACL番号 >・・・ACLの番号 1 ~ 99、1300 ~ 1999 の範囲で指定。
< in | out >・・・inは受信方向、outは送信方向を指定。
| 名前付き拡張ACL |
●Cisco機器によるACLの設定方法
(config)# ip access-list extended < 名前 >
(config-ext-nacl)# <番号>< permit or deny > < protocol > <送信元> <ワイルドカードマスク> <ポート番号>
<宛先> <ワイルドカードマスク> <ポート番号> < established or log or log-input >
<名前>・・・・ACLの名前
<番号>・・・・条件文のシーケンス番号。省略すると、上から10,20,30…と付加される
< permit or deny >・・permit(許可)もしくは、deny(拒否)
< protocol >・・・・・ip,tcp,udp,icmpなどを指定
<送信元>・・・送信元のアドレスを指定
<宛先>・・・・宛先のアドレスを指定
< ワイルドカードマスク >・・これの説明はこちらのページにて。
< ポート番号 >・・・ 以下の演算子の後にポート番号を指定する。
eq・・・・等しい
neq・・・等しくない
gt・・・・~以上
lt・・・・~以下
range・・~の範囲
| ip access-list extended ABC | 名前付き拡張ACLでABCという名前をつける |
| permit ip 1.1.1.1 0.0.0.255 eq 23 2.2.2.2 0.0.0.255 | 1.1.1.1から2.2.2.2宛のtelnetを許可する |
●IFへの適用方法
(config-if)# ip access-group < ACL番号 > < in |out >
< ACL番号 >・・・ACLの番号 100 ~ 199、2000 ~ 2699 の範囲で指定。
< in | out >・・・inは受信方向、outは送信方向を指定。
| ACLの注意点 |
●以下を入れると、ACLには、最後に暗黙のdenyという全てのパケットを拒否するルールがあります。
その為、このACLは「192.168.0.0/24」からの通信を拒否して、それから残り全ての通信も
拒否するというリストになってしまいます。
Router1(config)# access-list 1 deny 192.168.0.0 0.0.0.255
●1行目に全ての通信の許可をしているので、全ての通信が該当してしまうので、
それ以降の行はチェックされませんので、その為2行目に拒否のエントリがあっても
チェックされません。
Router1(config)# access-list 1 permit any
Router1(config)# access-list 1 deny 192.168.0.0 0.0.0.255