「社内PCからWebサーバーのHTTPSだけ許可したい」。この要件をCiscoの設定へ写すとき、IPだけでなくTCPとポートまで選べるのが拡張ACLです。
最初は一行が長く見えますが、送信元、宛先、プロトコル、ポートへ分ければ読めます。ここでは一つのHTTPS要件を例に、L3・L4のどの情報を使うかを順番に説明します。入力例は、設定の意味を理解するためのものです。
拡張ACLは、パケットの複数の条件を組み合わせる
標準IPv4 ACLは主に送信元IPを条件にします。拡張IPv4 ACLは送信元・宛先IPに加え、IPプロトコル、TCP/UDPのポート、ICMPのタイプなどを条件にできます。
L3はここではIPの情報、L4はTCP/UDPの情報と考えてください。「誰から誰へ」と「どの通信か」を分けて指定できます。
| 要件表の項目 | ACLが参照する部分 | 例 |
|---|---|---|
| 送信元・宛先 | IPヘッダー(L3) | 10.10.0.0/16 → 172.28.31.10 |
| 通信種別 | IPプロトコル番号(L3) | TCP、UDP、ICMP |
| サービス | TCP/UDPヘッダーのポート(L4) | 宛先TCP/443 |
| ICMPの種類 | ICMPタイプ | echoなど。TCP/UDPポートではない |
拡張という名前でも、アプリの中身や接続状態を何でも判定できる意味ではありません。単純なインターフェースACLと、ステートフルFWの動作は区別します。
一つのHTTPS要件を、IPとTCPの条件へ分解する
送信元10.10.0.0/16から、宛先172.28.31.10のTCP443へ接続する例です。permit tcpでTCPを選び、そのあとに送信元、宛先、宛先ポートを記述します。
0.0.255.255はワイルドカードマスクです。0のビットは一致、1のビットは比較しない指定なので、この例では先頭の10.10が一致する範囲を表します。
- STEP 01通信要件表
- STEP 02L3 IP条件
- STEP 03L4 プロトコル/ポート
- STEP 04名前付き拡張ACL
ip access-list extended APP-ACL
10 permit tcp 10.10.0.0 0.0.255.255 host 172.28.31.10 eq 443
最後のeq 443は宛先側に書かれているため、宛先ポート443を選びます。送信元の指定の後ろへ書けば、送信元ポートの条件になります。位置にも意味があるので、前から順に読んでください。
返信ではIPとポートの向きが逆になります。別方向のACLがあるなら、その返信の条件も必要です。要求の一行をそのまま反対側に置いて済むとは限りません。
host、any、eq、rangeは、範囲を読み分ける
hostは一つのIPを指定する書き方です。anyはすべてのIPを表します。ワイルドカードで範囲を表す場合は、サブネットマスクと同じ数値をそのまま置かないようにします。
eqは一つのポート、rangeは連続するポート範囲です。必要なサービスが一つなら、その条件へ絞ると要件との対応が明確になります。
クライアントの送信元ポートは通常、一時ポートです。Webの443を送信元へ固定すると、普通のクライアントからの要求に合わない場合があります。
サービス名を使う場合も、対象OSでその名前がどの番号を表すかを確認します。同じ番号でもTCPとUDPは別の条件です。
ICMPとestablishedは、TCPポートの説明から切り離す
ICMPはTCP/UDPのポートを持ちません。pingの要求ならecho、返信ならecho-replyなど、タイプを使って条件を細かくします。到達不能通知やPath MTU Discoveryに必要な通知も、要件に合わせて検討します。
TCPのestablishedは、ACKやRSTのフラグを見る条件です。実際にその接続が開始され、許可された状態かを全部追跡するステートフルFWとは違います。
「戻り通信ならestablishedで全部安全」という説明にはしません。何のビットを見る条件か、何を保証しないかを確認します。
ICMP、TCP、UDPを別の行へ整理すると、ポートを持たない通信へポート条件を書こうとする混乱も減らせます。
名前付きACLは、要件と行番号を対応させて管理する
ip access-list extended APP-ACLのように名前を付けると、用途を示しながら行を管理できます。シーケンス番号は行の評価順を表すので、追加する位置も確認します。
通信要件のIDとACEの番号を対応させておくと、そのpermitが何のためかを説明できます。名前を付けただけで通信へ適用されたわけではなく、適用インターフェースとin/outも必要です。
NATがある場合は、その評価点で見えるIPへ条件を合わせます。送信元・宛先、プロトコル、ポート、方向、NAT前後を一つの表にすると、設定と試験がつながります。
既存ACLへの追加では、上位の広いpermitやdenyに先に一致しないかを確認します。新しい一行だけでなく、全体を上から読むことが必要です。
許可・拒否・返信を試して、条件の境界を確かめる
TCP443が通ることに加え、許可していないTCP22などが止まることを確認します。さらに戻り通信と、既存の業務通信も試します。
装置では対象ACEのカウンターを試験前後で比較し、端末側の結果と合わせます。成功・失敗だけでなく、どの条件で判定したかを残します。
拡張ACLの読み方は、長い一行を順に分けることです。「送信元から宛先へ、TCPの宛先443」と読めれば、要件から設定へ写す練習ができます。
次は図へ適用場所と方向を書き、その場所を通るパケットの値とACLの行が一致するかを確認してみてください。
動画・筆者の投稿で補足する
文章と図で流れをつかんだら、関連する動画も参考にしてください。画面の表示や操作は、機種・ソフトウェアの版によって異なる場合があります。
✅拡張ACLの設定をするときは
OSI参照モデルのL3/L4の理解が必要!?ACLはL3とL4の制御を行う部分
なので、OSI参照モデルの理解が必須!IP = L3
TCP/UDP = L4
ポート番号はL4の世界!OSI参照モデルを理解してないと
ACLの設定もわけわからん!
ってなりがちなので、一番基礎のOSI参照モデルは… pic.twitter.com/HhL8WgOGWT
— けんと@設計構築チャンネル (@yeiquer12) 2025年5月14日
拡張ACLはL3のIPとL4のTCP・UDP・ポート番号を理解して設定すると整理したポスト。
関連する動画・筆者の投稿:2025年5月14日 / 筆者のX投稿 / @yeiquer12 / 設計構築チャンネル
