tcpdump(iptraceなど)とfirewall(ipsec、iptablesなど)はどっちが先?

ソケット通信がハーフオープンになってしまうって事象が発生しました。

 

こういう時には、tcpdumpで調べますよねってことで、通信トレースを取得して解析をしてみると、どうやら、ハンドシェイクの時に、syn、syn ackと通信があってackが返せていないって感じでした。

 

syn、syn ackまで通信ができているってことは、ネットワークルーティングや機器間のFirewallとかには問題ないだろうって推測で、

ソースとなる機器側がackを返せない理由を調べていました。

結果として、機器自体のfirewall(AIXでしたので、IPsecのフィルター)で該当のインバウンド通信が閉じていたからなんですけど、

まてよと、インバウンドを閉じているなら、tcpdumpにsyn ackが記録されたのは何故だろうと思ったので、その理由をメモしておきます。

 

まず、結果から
NIC → tcpdump(iptrace)  → firewall(ipsec) という処理順になっていると思われます。

 

その理由:

NIC (L1) → tcpdump(L2での処理) → firewall(L3-L4での処理)  だからですね。
ネットワークの通信は、OSI参照モデルの順で処理されているからってことで、納得。

備考:

Firewallのパケットフィルタとは、OSI参照モデルにおけるネットワーク層(レイヤ3)やトランスポート層(レイヤ4)に相当するIPからTCP、UDP層の条件(ポリシー)で、通信の許可/不許可を判断するもの。