アクセスリストの設定|CiscoのACLの書き方と設定例

アクセスリストの設定

アクセスリスト(ACL)の設定は、許可と拒否の行を上から並べてリストを作り、ip access-groupでインターフェースに貼る2段階です。ACLは上から順に見て最初に一致した行で決まり、どの行にも当たらない通信は最後の暗黙のdenyで捨てられます。

この記事でわかること

  • 標準・拡張・名前付きのACLの違いと書き方
  • 上から順に見るしくみと、最後の暗黙のdeny
  • inとoutの向きと、ACLを置く場所の決め方
  • そのまま使える設定例と、行の追加・削除のしかた
  • show access-listsでの確かめ方と、自分の接続を切らない手順

一次情報: Cisco「Security and VPN Configuration Guide, Cisco IOS XE 17.x」の IP Named Access Control Lists の章/Cisco「IPアクセスリストの設定とフィルタリング」※2026年10月時点

ACLは、CCNAの試験範囲でも配点の大きいテーマです。CCNAの受験料・勉強時間と、取得後に求人の見え方がどう変わるかは別の記事にまとめました。

目次

アクセスリストの設定とは?2段階で考える

アクセスリストの設定とは、ルーターやL3スイッチを通る通信を、条件に合わせて通したり止めたりする作業です。ACL(Access Control List)とも呼びます。

設定は2段階に分かれます。

  1. リストを作る:「この送信元からこの宛先へのこの通信は許可(permit)/拒否(deny)」の行を並べる
  2. インターフェースに貼る:ip access-groupで、どのインターフェースのどちら向きの通信に使うかを決める

リストを作っただけでは、通信は何も変わりません。貼って初めて効き目が出ます。

上から順に見て、最初の一致で決まる

ACLは、1行目から順番に条件を当てはめます。一致した行が見つかった時点で、その行のpermitかdenyで決まり、下の行は見ません。

そのため、行の順番が結果を左右します。細かい条件の行を上に、広い条件の行を下に置くのが基本です。

最後には見えないdenyがある

どの行にも当たらなかった通信は、リストの最後で捨てられます。これが「暗黙のdeny」で、設定には表示されません。Ciscoの資料でも、許可されていない送信元はリスト末尾の暗黙のdenyで拒否されると説明されています。

denyの行だけでリストを作ると、暗黙のdenyと合わせて全部の通信が止まります。止めたいものを書いた後に、残りを通す「permit ip any any」を最後に置くのを忘れないでください。

標準・拡張・名前付きの違い

ACLの種類は、見られる条件の多さで2つ。さらに、番号で呼ぶか名前で呼ぶかの違いがあります。

ACLの種類と見られる条件
種類番号の範囲見られる条件向いている使い方
標準ACL1〜99、1300〜1999送信元のアドレスだけ機器へのログイン元の制限、NATの対象指定
拡張ACL100〜199、2000〜2699送信元・宛先・プロトコル・ポート番号通信の中身ごとの許可と拒否
名前付きACL番号の代わりに名前標準・拡張のどちらでも作れる行の追加・削除が多い現場の設定

名前付きACLは、行ごとに番号(シーケンス番号)が付き、1行だけ足したり消したりできます。今から書くなら、名前付きの拡張ACLが扱いやすいです。

アドレスの書き方(host・any・ワイルドカード)

条件のアドレスは、ワイルドカードマスクと組み合わせて書きます。よく使う形は次のとおりです。

アドレス条件の書き方
書き方意味
host 192.168.100.10その1台だけ(192.168.100.10 0.0.0.0 と同じ)
192.168.10.0 0.0.0.255192.168.10.0/24 の全体
anyすべてのアドレス(0.0.0.0 255.255.255.255 と同じ)

ワイルドカードマスクは、サブネットマスクの各オクテットを255から引いた値です。/24なら0.0.0.255、/26なら0.0.0.63になります。

inとoutの向きと、ACLを置く場所

ip access-groupの最後には、inかoutを付けます。向きの基準は、ルーター全体ではなくそのインターフェースです。

  • in:そのインターフェースに外から入ってくる通信を調べる
  • out:そのインターフェースから外へ出ていく通信を調べる

置く場所は、ACLの種類で考え方が変わります。

ACLの種類ごとの置く場所
種類置く場所理由
拡張ACL送信元に近いインターフェースのin宛先まで見られるので、止める通信を早く捨てられる
標準ACL宛先に近いインターフェースのout送信元しか見られないので、手前で止めると関係ない宛先まで止まる

1つのインターフェースに貼れるACLは、1つの向きにつき1つです。同じ向きに別のACLを貼ると、前のものと置き換わります。

設定例|VLAN 10からサーバーへの通信を絞る

社内のVLAN 10(192.168.10.0/24)から、サーバーの192.168.100.10へはHTTPSとDNSだけを通す例です。それ以外のサーバーあての通信は止め、インターネットなどほかへの通信は通します。

Router(config)# ip access-list extended VLAN10-IN
Router(config-ext-nacl)# remark VLAN10 to server: HTTPS and DNS only
Router(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq 443
Router(config-ext-nacl)# permit udp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq 53
Router(config-ext-nacl)# deny ip 192.168.10.0 0.0.0.255 host 192.168.100.10
Router(config-ext-nacl)# permit ip any any
Router(config-ext-nacl)# exit
Router(config)# interface Vlan10
Router(config-if)# ip access-group VLAN10-IN in

VLAN 10のSVIのinに貼っているので、VLAN 10から入ってくる通信を、ルーターが先へ送る前に調べます。remarkは説明のメモで、動作には影響しません。後で読む人のために、目的を1行書いておきます。

VLAN 10 からの通信が通るかの判定

  • PC(192.168.10.25)から送られた通信
  • 1サーバーの443番あてか当てはまれば1行目で許可。ここで判定は終わり
  • 2サーバーの53番(UDP)あてか当てはまれば2行目で許可
  • 3それ以外のサーバーあてか3行目で拒否。RDPやSMBなどはここで止まる
  • 4サーバー以外あて4行目の permit ip any any で許可

4行目が無いと、暗黙のdenyでインターネットへの通信まで止まる。

図:上から順に当てはめ、最初に一致した行で決まる

戻りの通信を考える

ACLは1つ1つの通信を別々に見ていて、行きと帰りの関係は覚えていません。逆向きのACLを貼る場合は、戻りの通信も通すように書く必要があります。

TCPの戻りだけを通したいときは、establishedを付けた行が使えます。返事のパケットに付く印(ACKやRST)を見て通す書き方です。

permit tcp host 192.168.100.10 eq 443 192.168.10.0 0.0.0.255 established

行を足す・消す・確かめる

名前付きACLでは、行の頭に付いた番号で場所を指定して編集します。番号は、何も指定しなければ10から10刻みで付きます。

Router# show access-lists VLAN10-IN
Extended IP access list VLAN10-IN
    10 permit tcp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq 443 (1520 matches)
    20 permit udp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq domain (310 matches)
    30 deny ip 192.168.10.0 0.0.0.255 host 192.168.100.10 (12 matches)
    40 permit ip any any (8840 matches)
名前付きACLの編集コマンド
したいことコマンド(ip access-list extended VLAN10-IN の中で)
10と20の間に1行足す15 permit tcp 192.168.10.0 0.0.0.255 host 192.168.100.10 eq 22
30の行を消すno 30
番号を振り直す(設定モードで)ip access-list resequence VLAN10-IN 10 10

右端の「matches」は、その行に当たった回数です。設定した行のmatchesが増えているかで、ACLが狙いどおりに効いているかが分かります。止めたはずの通信が通るときは、上の行に先に当たっていないかを数字で確かめてください。

数字はclear access-list countersで0に戻せます。0にしてから問題の通信を流すと、どの行に当たったかが一目で分かります。

自分の接続を切らないための手順

ACLの作業で一番怖いのは、リモートから作業していて自分のSSHまで止めてしまうことです。暗黙のdenyは、自分の管理用の通信も例外にしません。

  1. 貼る前に、自分の作業端末からの通信を許可する行がリストにあるかを確かめる
  2. 本番機器では、先にreload in 10を入れておく(保存前の設定で10分後に再起動する予約)
  3. ip access-groupで貼り、別の画面からつながることと、業務の通信が通ることを確かめる
  4. 問題がなければreload cancelで予約を取り消し、copy running-config startup-configで保存する

reload inの予約があれば、締め出されても10分後に元の設定で立ち上がります。機器へのログイン元だけを絞りたいときは、インターフェースではなくline vtyにaccess-classで標準ACLを貼る方法が安全です。

Router(config)# ip access-list standard MGMT-ONLY
Router(config-std-nacl)# permit 192.168.99.0 0.0.0.255
Router(config-std-nacl)# exit
Router(config)# line vty 0 4
Router(config-line)# access-class MGMT-ONLY in

よくある質問

アクセスリストを設定したのに効いていません

ip access-groupでインターフェースに貼ったかを確かめてください。リストを作っただけでは効きません。show ip interfaceで、そのインターフェースに貼られているACLの名前と向きが表示されます。

deny 1行だけのACLを貼ったら、全部の通信が止まりました

リストの最後にある暗黙のdenyが原因です。止めたい通信をdenyで書いた後に、permit ip any anyを最後の行として足すと、ほかの通信も通るようになります。

標準ACLと拡張ACLはどう使い分けますか?

送信元だけで判断できるなら標準、宛先やポート番号まで見たいなら拡張、という分け方です。機器へのログイン元の制限は標準、サーバーへの通信をサービスごとに絞るなら拡張が向いています。

番号付きのACLの途中に1行足せますか?

古いIOSでは、番号付きのACLは途中に足せず、消して作り直す必要がありました。新しいIOSでは、ip access-list extended 100のように番号で編集モードに入れば、名前付きと同じくシーケンス番号で足せます。

ACLのワイルドカードマスクとサブネットマスクは何が違いますか?

0と1の意味が反対です。ワイルドカードマスクでは、0のビットが「一致が必要」、1のビットが「何でもよい」を表します。求め方は、サブネットマスクの各オクテットを255から引くだけです。

まとめ

  • ACLの設定は、リストを作る→ip access-groupでインターフェースに貼る、の2段階
  • 上から順に見て最初の一致で決まり、当たらない通信は最後の暗黙のdenyで捨てられる
  • 拡張ACLは送信元の近くのin、標準ACLは宛先の近くのoutに置く
  • 名前付きACLはシーケンス番号で1行ずつ足し引きでき、matchesで効き目を確かめられる
  • 本番では reload in を予約し、自分の接続を許可する行を確かめてから貼る

ACLでVLAN同士の通信を絞れるようになると、ネットワークの守りを自分で設計できるようになります。まずは検証用の機器で、matchesの数字が狙いどおりに増えるかを確かめながら練習してみてください。

ACLやVLANの設計を任される経験は、運用保守から構築へ進むときの大きな材料になります。運用保守から抜け出す人と、とどまる人の違いを整理した記事です。

運用保守からの転職で成功する形を見る


免責事項

※本記事はCiscoの公式ドキュメントなどの公開情報をもとに整理したものです。コマンドの書き方や表示は、機種やソフトウェアのバージョンによって変わる場合があります。業務で使う機器では、所属先の手順と各製品の最新資料をあわせてご確認ください。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Tanabeです。新卒でSIerに入り、ネットワークの設計から構築、運用保守、クラウド移行まで10年やってきました。その間に転職を3回、CCNPも取りました。

正直に言うと、資格を取っても年収はすぐには上がりませんでした。1回目の転職は失敗、2回目でようやく150万円上がり、3回目で今の事業会社に落ち着いた。動いてみて分かったのは、資格の有無より「現場で何を任されてきたか」で評価が決まる、ということです。

エージェントの言葉を鵜呑みにして、危うく後悔しかけた経験もあります。だからこそ、自分がやらかした失敗をそのまま書いて、同じ回り道をしなくて済むように残しています。転職を考え始めた人が、条件で損をしないための材料にしてもらえたら嬉しいです。

目次