🔐 ステートフルFWとステートレスFWの違い

🗺️ イメージ図

クライアント                  Firewall                      サーバ
10.1.1.10   ---- SYN ----->   [ 判定 ]   ---- SYN ----->    203.0.113.10
            <--- SYN/ACK ---  [ 判定 ]   <--- SYN/ACK ---
            ---- ACK ----->   [ 判定 ]   ---- ACK ----->

ステートフル: 接続状態(SYN, ESTABLISHED など)を記録して判断
ステートレス: その瞬間のパケット情報だけで毎回判断

⚙️ それぞれの特徴

✅ ステートフルファイアウォール

通信セッションの状態をテーブルとして保持し、往復の整合性を見ながら許可/拒否します。

主な判断材料:
- 送信元/宛先IP
- 送信元/宛先ポート
- プロトコル(TCP/UDP/ICMP)
- セッション状態(NEW / ESTABLISHED / RELATED など)

内部から開始した通信の戻りトラフィックを自動で通しやすく、一般的な企業境界でよく使われます。

✅ ステートレスファイアウォール

各パケットを独立してチェックし、状態は保持しません。ルールはシンプルですが、戻り通信も明示的な許可が必要です。

主な判断材料:
- 送信元/宛先IP
- 送信元/宛先ポート
- プロトコル

※ セッション状態は見ない

処理が軽く高速に動作しやすいため、シンプルなACL用途や高スループットが必要な場面で有効です。

📌 比較表

項目                 ステートフル                 ステートレス
-----------------------------------------------------------------
状態管理             あり(セッション追跡)       なし
戻り通信の扱い       自動許可しやすい             明示ルールが必要
設定のしやすさ       比較的わかりやすい           ルール増加で複雑化しやすい
性能/負荷            負荷はやや高め               軽量で高速
代表的な用途         企業境界、一般FW             ACL、単純フィルタ、高速区間
💡 実運用では、境界防御はステートフル、内部の一部高速区間はステートレスACLというように使い分ける構成も一般的です。

📘 まとめ

ステートフルは「通信の流れ」を理解して安全に制御する方式、 ステートレスは「単発パケット」を高速に振り分ける方式です。
迷った場合は、まずステートフルを基本にし、要件に応じてステートレスを補助的に使うと設計しやすくなります。