ACL はある。条件も正しい。なのに効いていない。
こういう場面では、どうしても条件表の中身をにらみたくなる。送信元が違うのか、宛先が違うのか、port が違うのか。条件のどこかに見落としがあるのではないか、と考え始める。
ACL は interface に in か out の向きで適用されて初めて通信を見る。通信の通り道と重ならなければ、条件が正しくても評価されない。
条件表を作っただけでは、まだ通信の通り道に立っていない。装置の interface を指定し、入る向きか出る向きかを指定して適用して初めて、選別の対象になる。


考えてみよう: OPS-PC01 から WEB-SRV01 へ向かう通信を、R-EDGE の上でなぞってみてほしい。その通信は R-EDGE のどの口を、どちら向きに通るだろう。ACL を R-EDGE の outside interface の
inに置いたら、この通信はその ACL の前を通るだろうか。条件表の中身はいったん忘れて、通り道だけを追ってみる。
1. 条件表は、置くまで通信を見ない
ACL は、通信を通す / 止める条件の表として見える。前話では、送信元だけを見る表と、宛先や protocol / port まで見る表の違いを見た。
ACL には 2 つの段階がある。まず条件表を作る。次に、その条件表を装置の口の in または out に置く。設定行で言えば、作った ACL を interface に適用する操作が必要になる。社内側へつながる口もあれば、外側へつながる口もある。
「正しい ACL はあるのに効かない」というときは、条件表は正しいが、通信の通り道に置かれていないことが多い。あるいは、置かれていても指定された向きが違う。その場合、通信はそもそもその条件表の前を通っていないため評価されない。
2. in は入る、out は出る
in は、通信がその interface に入る向き。装置の外から、その interface を通って装置の中へ入ってくる瞬間を見る。out は、装置の中で処理された通信が、その interface から外へ出ていく瞬間を見る。
in と out を読むときは、通信の出発点から見た外向き / 内向きではなく、ACL を置く interface から見た入る / 出るで判断する。
同じ通信でも、通る interface が変われば、入る場所と出る場所も変わる。OPS-PC01 から出た通信が R-EDGE に入るときは、ある interface では in になる。R-EDGE から WEB-SRV01 側へ出るときは、別の interface では out になる。出発点から宛先まで通信の矢印を 1 本引き、その矢印が ACL を置いた interface の in を通るのか、out を通るのかを見る。この矢印が packet path だ。
3. packet path に重なっているかを見る
OPS-PC01 から WEB-SRV01 へ通信する。通信は OPS-PC01 から出て、R-EDGE を通り、WEB-SRV01 へ向かう。このとき、ACL の条件ではなく、通信が R-EDGE のどの interface をどちら向きに通るかを描く。
その通信が R-EDGE の inside interface に入るなら、inside interface の in に置いた ACL は、その通信を見る。R-EDGE が処理したあと、別の interface から出るなら、その interface の out に置いた ACL も、出口で通信を見る。
逆に、R-EDGE の outside interface の in に ACL が置かれていても、OPS-PC01 から WEB-SRV01 へ向かう通信がそこを通らないなら、その ACL はこの通信を見ない。条件表がどれだけ正しくても、通信の通り道と重なっていなければ評価されない。


4. 同じ条件表でも、見える通信が変わる
条件表が間違っているとは限らない。表は正しいが、通信の通り道に置かれていない。あるいは、同じ interface でも逆向きに置かれている。
同じ条件表でも、inside interface の in に置くのか、inside interface の out に置くのか、outside interface の in に置くのかで、見える通信は変わる。ACL はネットワーク全体を眺めているわけではない。指定された interface の、指定された向きを通る通信だけを見る。
条件を読む前に、通信の通り道を描き、どの interface を通るのか、そこで in なのか out なのか、ACL はそこに置かれているのかを確かめる。
条件表は、通信が通う場所でだけ評価される
条件が正しいのに効かないとき、条件表だけをにらむ前に通信の通り道を描く。通信はどの interface を通るのか。そこに ACL は置かれているのか。向きは合っているのか。通信の通り道と interface の向きが重なっていれば ACL はその通信を評価し、重なっていなければ条件表は正しくても評価されない。
条件の範囲と、置く場所と向き。この 2 つが揃ったら、次に見るのは、同じ場所にある複数行がどの順番で読まれるか。