🔐 ステートフル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というように使い分ける構成も一般的です。
📘 まとめ
ステートフルは「通信の流れ」を理解して安全に制御する方式、
ステートレスは「単発パケット」を高速に振り分ける方式です。
迷った場合は、まずステートフルを基本にし、要件に応じてステートレスを補助的に使うと設計しやすくなります。
迷った場合は、まずステートフルを基本にし、要件に応じてステートレスを補助的に使うと設計しやすくなります。