前話では、ACL を「通信を通す / 止める条件表」として見た。けれど現場で急に手が止まるのは、「その表に何を条件として書けばいいのか」が分からなくなる瞬間だ。
「この人からの通信は全部止めたい」と「この人から Web だけ通したい」。どちらも通す / 止める判断に見える。けれど、この 2 つは同じ細かさの条件で表せるだろうか。
前者は「誰から」を見れば言えそうだ。後者は「誰から」だけでは足りない。どの宛先へ向かったのか、何番の通信なのか、そこまで見ないと「Web だけ」という狙いが表に出ない。
L4 ヘッダは、ここで境界の判断材料として再登場する。port は、ホストの中の届け先を分けるためだけのものではない。境界から見ると、「何番の通信を通すか / 止めるか」を選ぶ材料にもなる。


考えてみよう: この人からの通信は全部止めたい、という判断と、この人から Web だけ通したい、という判断。どちらも ACL の条件表で扱う判断に見える。けれど、同じ列だけで表せるだろうか。5 秒だけ、自分の頭の中で条件表の列を並べてみてほしい。
1. 条件表には、見える範囲がある
ACL は条件表だが、すべての表が同じ細かさで通信を見ているわけではない。standard ACL と extended ACL は、見る条件の範囲が違う。
standard ACL は、主に送信元を見る。「誰から来た通信か」を条件にする。10.1.50.10 という端末から出る通信をまとめて扱いたいなら、送信元を見るだけでも意図は表しやすい。この人からの通信を通す、この人からの通信を止める、という粗い判断に向いている。
extended ACL は、宛先、protocol、port まで条件にできる。「10.1.50.10 からの通信」だけではなく、「10.1.50.10 から、10.1.1.80 へ、Web の通信だけ」のように、条件表の列を増やして狙いを細かくできる。
standard ACL が弱くて extended ACL が強い、という覚え方に寄せすぎない。見ている範囲の違いが本質だ。送信元だけで足りる判断もあれば、送信元だけでは足りない判断もある。「この人の通信全部」と「この人から Web だけ」は、必要な条件の細かさが違う。判断したい内容に対して、送信元だけで足りるのか、宛先や protocol / port まで必要なのかを先に問えば、standard / extended は構文暗記ではなく、条件表がどこまで見ているかの違いとして読める。
2. 送信元だけでは、「何へ、何番へ」が見えない
送信元だけを見る表は、「この端末から出た通信」をまとめて扱うには分かりやすい。ただし、その端末がどのサーバへ向かったのかは見えない。Web なのか、別の通信なのかも見えない。
ACL を読むときは、まず条件表の列を確認する。送信元だけで足りるのか、宛先や port まで見ないと狙いが表せないのか。この確認を飛ばして、送信元だけを見ている表に「Web だけ」という狙いを書いても、その表には Web かどうかを見分ける列がない。条件表にない列で判断することはできない。
extended ACL では、宛先、protocol、port を条件にできる。前のシリーズでは、port をホストの中の届け先として読んだ。IP アドレスがホストまで通信を届け、port がホストの中のどの処理へ渡すかを分ける。境界の条件表も、パケットの中の protocol や port を見て「この種類の通信だけ通す」「この番号の通信は止める」と選別する。同じ L4 ヘッダが、届け先の指定と境界での選別の両方の材料になる。「誰から」だけでなく、「誰から誰へ、何番へ」まで条件として並べられる。
3. 粗い条件と細かい条件を、使い分ける
extended ACL が常に良いわけではない。standard ACL と extended ACL の違いは、優劣ではなく条件の粒度の違いだ。
粗い条件は、表が短くなる。送信元単位でまとめて扱いやすい。「この送信元から来る通信はまとめて扱う」という判断なら、送信元を見る表で十分なことがある。
細かい条件は、狙いを絞りやすい。送信元だけでなく、宛先や port まで見れば、「この端末からこのサーバへの Web だけ」のように、表したい意図を狭くできる。細かく見るには、その分の列と材料が必要になる。
通す / 止める意図を言うために、どの列が必要か。送信元だけで言えるのか、宛先まで必要か、protocol や port まで必要か。この順番で考えると、standard / extended の違いは、通信のどこまでを見て判断するかという読み方になる。


4. 条件表を置く interface と向きで、その表の効き方が変わる
ACL の条件には、見る範囲の違いがある。standard ACL は主に送信元、extended ACL は宛先や protocol / port まで見る。現場で ACL の相談を受けたら、まず「どの通信を選びたいのか」を言葉にし、必要な列から条件の広さを決める。
列が分かっても、それだけでは通信の選別は完了しない。同じ条件表でも、どの interface に、どちら向きに置くかで、その表に出会う通信が変わる。列の確認の次は、条件表をどこに置き、どちら向きで通信に当てるかを読む。