ACLとは?現役が教える基本と、遠方のルータを復旧不能にする落とし穴

CCNAと実務

ACL(アクセスコントロールリスト)は、CCNAの学習でも実務でも必ず出てくる技術です。「通信を許可・拒否するルール」——説明としてはそのとおりなのですが、実際に手を動かし始めると、途端に難しく感じる人が多い。

この記事では、現役10年のネットワークエンジニアとして、ACLの基本から解説します。そして後半では、現場でACLを触るときの「本当の怖さ」——遠方のルータを復旧不可能にしてしまう事故の話まで踏み込みます。教科書には書かれていませんが、知らないと本当にやらかします。

ACLとは:通信を通すか止めるかのルールリスト

ACL(Access Control List)は、ルータやスイッチを通過するパケットをチェックして、通信を許可(permit)するか拒否(deny)するかを制御する仕組みです。パケットフィルタリングとも呼ばれます。

サイト主
サイト主

ACLは“通すか止めるか”のルール表。シンプルなんですが、この後の“暗黙のdeny”と“リモートで触る怖さ”だけは、知らないと現場で本当に痛い目を見ます。

動作の基本ルールは2つだけです。ここを最初に押さえてください。

  • 上から順番に評価される:条件に一致した時点で処理が決まり、それ以降の行は読まれません。
  • 最後に「暗黙のdeny」がある:どの行にも一致しなかったパケットは、書かれていなくても自動的に破棄されます。

このシンプルな2つのルールが、後々あらゆるトラブルの原因になります。

標準ACLと拡張ACLの違い

ACLには大きく2種類あります。

標準ACL拡張ACL
判断材料送信元IPアドレスのみ送信元IP・宛先IP・プロトコル・ポート番号
番号の範囲1〜99、1300〜1999100〜199、2000〜2699
細かさざっくり細かく指定できる

標準ACLは「どこから来た通信か」しか見ません。一方、拡張ACLは「どこから来て、どこ宛てで、何のプロトコルで、どのポートか」まで判断できます。実務で細かい制御をしたい場面では、拡張ACLを使うことがほとんどです。

なお、番号ではなく名前でACLを識別する「名前付きACL」もあります。番号だけだと何のためのACLか分からなくなるので、管理のしやすさから名前付きが好まれる現場も多いです。

ワイルドカードマスク:サブネットマスクの「逆」

ACLでIPアドレスの範囲を指定するときに使うのが、ワイルドカードマスクです。ここも初学者がつまずくポイントですが、覚え方は単純です。

  • ビットが 0 の部分 → チェックする(一致していなければならない)
  • ビットが 1 の部分 → チェックしない(何でもよい)

サブネットマスクとは0と1の意味が逆になっている、と覚えておけば大丈夫です。

たとえば 192.168.10.0 0.0.0.255 と書けば、「192.168.10.」までは一致必須で、最後の1オクテットは何でもよい——つまり192.168.10.0〜192.168.10.255の範囲を指定したことになります。

よく使う省略形も覚えておくと便利です。

  • 0.0.0.0 255.255.255.255(すべてのIP)→ any
  • 192.168.1.1 0.0.0.0(特定の1台)→ host 192.168.1.1

ワイルドカードマスクの計算は、サブネットマスクの理解が土台になります。不安な方はサブネット計算の記事を先に読んでみてください。

適用位置:なぜ「標準は宛先近く、拡張は送信元近く」なのか

ACLは作っただけでは効果がなく、インターフェースに適用(in / out を指定)して初めて動きます。そして適用位置には、一般的な原則があります。

  • 標準ACL → 宛先に近い場所に適用
  • 拡張ACL → 送信元に近い場所に適用

多くの解説はここを暗記事項として提示しますが、理由を理解したほうが忘れません。

標準ACLは送信元IPしか見られません。もし送信元の近くで止めてしまうと、「その送信元から出る通信すべて」を落とすことになり、本来通したい別の宛先への通信まで巻き添えにしてしまいます。だから、なるべく宛先に近い場所——本当に止めたい相手の直前——で判断させるのが安全です。

一方、拡張ACLは宛先やプロトコルまで判別できます。狙った通信だけをピンポイントで落とせるので、なるべく早い段階(送信元の近く)で落としてしまったほうが、無駄なトラフィックがネットワークを流れずに済みます。

「細かく判断できないものは慎重に(宛先近く)、細かく判断できるものは早めに(送信元近く)」——この理屈で覚えると、試験でも迷いません。

【現場の落とし穴①】暗黙のdenyで全部止まる

ここからが実務の話です。初心者が必ずと言っていいほどハマるのが暗黙のdenyです。

ACLの最終行には、書かれていなくても「それ以外はすべて拒否」というルールが存在します。

つまり、「特定の通信だけを拒否したい」と思って deny の行だけを書くと、その他の通信も暗黙のdenyによって全部落ちます

「1台だけブロックしたかったのに、ネットワーク全体が通信不能になった」という事故は、ここから生まれます。

ブロックしたいものだけを書く(ブラックリスト型)つもりなら、最後に「それ以外は許可」を明示的に書く必要があります。逆に、許可するものだけを書く(ホワイトリスト型)なら、暗黙のdenyがそのまま効いてくれます。自分がどちらの型で書いているのかを常に意識することが、事故を防ぐ第一歩です。

【現場の落とし穴②】ACLはフィルタだけの道具ではない

意外と知られていないのですが、ACLは通信の許可・拒否以外の用途でも使われます。代表例がNATです。

NATの設定では、「どの通信をアドレス変換の対象にするか」をACLで指定します。このとき、ACLの permit は「通信を許可する」という意味ではなく、「この範囲を変換対象にする」という”対象の指定”として機能します。同じACLという道具が、文脈によって別の目的で使われるわけです。

ここを理解していないと、現場で混乱します。実際、NAT用のACLをブラックリスト型で書くかホワイトリスト型で書くかによって、意図しない通信までNATがかかってしまったり、逆にNATが効かずに通信できなかったりということが起こります。

「ACLを書いたのにNATがおかしい」というときは、ACLをフィルタの感覚で読んでいないか、疑ってみてください。NATの仕組み自体はNATの記事で解説しています。

【現場の落とし穴③】リモート作業でACLを触る怖さ

サイト主
サイト主

正直、ここが一番怖いです。1行足しただけで自分の接続が切れて、遠方の機器に二度と入れなくなる。ベテランほどACL変更に時間をかけるのは、これを知っているからです。

これが、この記事で一番伝えたいことです。ACLの本当の怖さは、自分が閉じ込められることにあります。

想像してみてください。遠隔地にあるルータに、あなたはSSHでリモート接続して設定作業をしています。そこでACLの設定を変更する——このとき、誤って自分のリモート接続そのものを deny してしまったらどうなるか

接続は即座に切れます。そして二度と入れません。ACLで自分自身を締め出したので、リモートからは何もできない。設定を戻すには、その遠方の拠点まで人が行って、コンソールケーブルで直接つなぐしかありません。地方や離島の拠点だったら、復旧までに何時間、下手をすれば何日かかるか分かりません。

そして厄介なのは、これは「明らかにミスした」ときだけでなく、順番を少し変えただけでも起こりうるということです。

ACLは上から順に評価されるため、既存のACLに1行追加しただけで、これまで通っていた通信が、上の行の deny に先に引っかかるようになることがあります。

「追加しただけなのに」——その1行が、自分の命綱を切ることがあるのです。

だからこそ、リモートでACLを変更するときは慎重の上にも慎重に。変更前に必ず現在の設定を確認し、自分の接続元IPが許可され続けるかを確認する。

設定順序が変わることによる影響を、頭の中でシミュレーションする。可能なら、一定時間後に自動で設定が戻る仕組み(reloadの予約など)を使う。ベテランほど、ACLの変更には時間をかけます。

まとめ

  • ACLは通信の許可・拒否を制御する仕組み。上から順に評価され、最後に暗黙のdenyがある。
  • 標準ACLは送信元IPのみ、拡張ACLは宛先・プロトコル・ポートまで判断できる。
  • ワイルドカードマスクはサブネットマスクの逆(0はチェック、1は無視)。
  • 適用位置は「細かく判断できないものは宛先近く、細かく判断できるものは送信元近く」と理屈で覚える。
  • 現場の落とし穴:暗黙のdenyで全通信が落ちるNATの対象指定にもACLが使われる、そしてリモート作業で自分を締め出すと復旧不可になる

ACLは、CCNAでは「セキュリティの基礎」分野で問われる重要トピックであると同時に、現場では最も慎重さが求められる設定のひとつです。試験のために覚える知識が、そのまま「事故を起こさないための知識」になります。

関連して、ネットワークを分割するVLANの記事、現場で使うコマンドについてはCCNAコマンドの記事もあわせてどうぞ。

コメント

タイトルとURLをコピーしました