ネットワークエンジニアがCiscoルータを設定する際に必ず登場するのがアクセスリスト(ACL: Access Control List)です。 ACLは「どのトラフィックを許可(permit)するか」「どのトラフィックを拒否(deny)するか」を制御する重要な仕組みですが、設定の順序によって意図しない動作を引き起こすことがあります。 本記事では、ACLのpermit順序をどのように決めるべきかを実務的な観点から解説していきます。

ACLの基本動作:上から順に評価される

Ciscoルータのアクセスリストは上から順番に評価されるという特徴があります。 つまり、リストの最初に記述した条件に一致した場合、それ以降の条件はチェックされません。 この仕組みを理解していないと、本来許可すべき通信がブロックされてしまうケースが発生します。

例:順序の違いによる挙動の変化

! 悪い例(特定ホストが許可されない)
access-list 100 deny ip any any
access-list 100 permit ip host 192.168.1.10 any

! 良い例(特定ホストは許可される)
access-list 100 permit ip host 192.168.1.10 any
access-list 100 deny ip any any

上記の例では、最初に「deny ip any any」を書いてしまうと、すべての通信が拒否され、その後のpermitが評価されません。 逆に、先に許可したい通信を記述し、その後にdenyを入れることで意図した動作になります。

permitの順序を決める実務的な考え方

ACLのpermit順序を考えるときは、次のポイントを押さえることが重要です。

  • 具体的な条件を先に書く:特定のホストや特定のサブネットを許可/拒否するルールを先に記述します。
  • 汎用的な条件は後に書く:全体的なトラフィックを対象とするdenyやpermitは最後に書きます。
  • 明示的にdenyを記述:CiscoのACLは「最後に暗黙のdeny」が存在するため、必要に応じて明示的にdenyを追加します。
  • テスト環境で検証:GNS3シミュレータなどを使って実際にパケットを流し、意図通りの挙動を確認します。

標準ACLと拡張ACLでの順序の考え方

標準ACLの場合

標準ACLは送信元IPアドレスのみで制御するため、特定のホストを許可したい場合は必ずリストの上位に記述します。 その後に広い範囲のdenyやpermitを置くことで制御の粒度を調整します。

拡張ACLの場合

拡張ACLでは、送信元・宛先・ポート番号など複数条件を指定できます。 このため、特定のアプリケーションやポートに関するルールは上に汎用的な通信制御は下に置くことが推奨されます。

ACLの順序設計を誤った場合の典型的なトラブル

  • VPN(例:FortiGate VPN)接続が確立しない
  • 特定の監視ツール(例:SolarWinds)が通信できない
  • ネットワーク構成図通りの通信経路が動作しない
  • 業務アプリケーションが通信不可になる

ACL順序の検証方法

ACL設定後は、必ず以下の方法で検証を行いましょう。

  • show access-lists コマンドでマッチ数を確認する
  • Tera Termを使って実際に疎通テストを行う
  • Wiresharkでパケットキャプチャし、permitされているかを確認する
  • GNS3シミュレータで事前検証する

まとめ

Ciscoルータのアクセスリストでは、permitの順序が通信の成否を左右するため、設定時には以下の原則を守ることが重要です。

  • 特定の通信を許可するルールを先に書く
  • 広い範囲のルールは後に書く
  • 最後にdenyを明示的に記述する(または暗黙denyを理解する)
  • 必ずテスト環境やツールで検証する

正しいACLのpermit順序を理解し、実務でのトラブルを未然に防ぐことが、ネットワークエンジニアにとって重要なスキルです。 特に「Cisco ルータ 設定」や「FortiGate VPN」と組み合わせるケースでは、ACLの設計がシステム全体の安定性を左右します。 ぜひ今回のポイントを実践に活かしてみてください。