ACL とは
アクセスリストは正式にはアクセスコントロールリスト、略してACL (読み方:アクル) と呼びます。
IP 通信の通過を許可したり拒否したりするルールを記載するリストです。
ACL の中身は、「この IP アドレスからの通信を拒否する」、「この IP アドレスからの通信を許可する」というルールを一行ずつ書いていったリストになります。
ACL の定義を行い、それをインタフェースに適用することで、そのインタフェースで通過させる、させない、の選択を ACL で定義したルール通りにさせることができます。
Cisco では標準 ACL、拡張 ACL の 2 種類があり、それぞれ以下の書き方をします。
標準ACL
標準 ACL では、送信元 IP での制御しかできません (宛先 IP での制御は、必要に応じてルーティングで null ルートを設定すれば良い、という考え)。
ACL 番号 1~99、もしくは 1300~1999 で設定した場合、それは標準 ACL になります。
ACL#番号 10 の例です。
(config)# access-list 10 deny 192.168.1.1 0.0.0.0 (config)# access-list 10 permit 192.168.1.0 0.0.0.255 (config)# interface fastEthernet 0/1 (config-if)# ip access-group 10 in
この設定により、fastEthernet 0/1 に入ってくる通信は 192.168.1.1 を除いた192.168.1.0/24 からの通信だけが許可されます。上から順番に見るため、192.168.1.1 は拒否されます。
192.168.1.0/24 以外は書かれていませんが、書かれていない場合は暗黙のdeny (拒否) というルールにより拒否されます。ACL の最後に必ず deny any というルールが入るということです。
また、番号ベースではなく名前付き ACL というのも機能としては同じです。この場合、番号ではなく名前により管理ができます。
(config)# ip access-list standard EIGYOUBU (config-std-nacl)# deny 192.168.1.1 0.0.0.0 (config-std-nacl)# permit 192.168.1.0 0.0.0.255 (config-std-nacl)# exit (config)# interface fastEthernet 0/1 (config-if)# ip access-group EIGYOUBU in
この場合、効果は全く同じですが、名前付きのほうが、「これは営業部用の ACL だ」と管理しやすいです。
拡張 ACL
拡張 ACL では「送信元 IP アドレス」だけでなく、「宛先 IP アドレス」「プロトコル (ip/tcp/udp/icmp)」「送信元ポート」「宛先ポート」「(TCP の場合はさらに) established (TCP syn が送られた以降であることを意味する)」の組み合わせでのアクセス制御ができます。
つまり、TCP に限っては established を使うことで「戻りのパケットなら許可する」といった制御ができるのです。
ACL 番号 100~199、もしくは 2000~2699 で設定した場合、それは拡張 ACL になります。
ACL 番号 110 の例です。
(config)# access-list 110 deny tcp 192.168.1.0 0.0.0.255 10.1.1.0 0.0.0.255 eq 80 (config)# access-list 110 permit ip 192.168.0.0 0.0.255.255 10.1.1.0 0.0.0.255 (config)# interface fastEthernet 0/1 (config-if)# ip access-group 110 in
この場合、192.168.1.0/24 は 10.1.1.0/24 の tcp 80 (http) を拒否されますが、それ以外のプロトコルは下のルールで許可されています。
192.168.1.0/24 以外の 192.168.0.0/16 は 10.1.1.0/24 へは tcp 80 ももちろん、それ以外のポートもすべて許可されます。
名前付き ACL の場合は以下のようになります。
(config)# ip access-list extended GIJUTSUBU (config-ext-nacl)# deny tcp 192.168.1.0 0.0.0.255 10.1.1.0 0.255.255.255 eq 80 (config-ext-nacl)# permit ip 192.168.0.0 0.0.255.255 10.1.1.0 0.255.255.255 (config-ext-nacl)# exit (config)# interface fastEthernet 0/1 (config-if)# ip access-group EIGYOUBU in
正直、拡張 ACL は標準 ACL を包含しているので標準 ACL は無くても良いように思います。ただ、他のメーカでの例ではありますが、CoPP や SNMP への ACL については標準 ACL じゃないと動作しない、というコマンドもありますので、注意が必要です (Cisco でもあるかも)。
コメント
初めまして。
いつも拝見させて頂いています。
アクセスリストの設定でわからないことがあり、ご教授頂けると幸いです。
パケットトレーサーで番号付き拡張アクセスリストを試したのですが
Vlanで3つに分けたネットワーク(下記参照)で、icmpを全て拒否するリストを作っても
同じVlan同士はpingが飛んでしまいます。
PC_1 (VLAN10)―| |―| |―| |―| |―PC_4 (VLAN10)
PC_2 (VLAN20)―|SW1|―|L3①|―|L3②|―|SW2|―PC_5 (VLAN20)
PC_3 (VLAN30)―| |―| |―| |―| |―PC_6 (VLAN30)
書いたリストは下記の通りです。
access-list 100 deny icmp any any
access-list 100 permit ip any any
インターフェースへの設定は、vlan10-30に全てinで設定しています。
リストの書き方に間違いがあるのか、インターフェースの設定が違うのか
色々試しましたがうまくいく組み合わせを見つけられませんでした。
> まるさん
コメントありがとうございます。ご質問の件ですが、Cisco では同一 VLAN は通常の ACL では制御できません。
VLAN map というやつを使ったりします。(https://www.cisco.com/cisco/web/support/JP/docs/SW/LANSWT-Access/CAT3550SWT/CG/003/swacl.html?bid=0900e4b1834c5443#58493)
実はこのあたりの仕様はメーカによってまちまちで、たしか Alaxala だと同一 VLAN でも VLAN インタフェースへの ACL 設定で制御できた気がします。
nesuke様
ご回答ありがとうございます。
メーカーによってできること、できないこと、があるとは全く考えつきませんでした。
大変勉強になりました。
ご教示頂いたサイトなど拝見して、勉強してみます。
ありがとうございました。