動的フィルタリングとは
静的フィルタリングには、弱点があります。
それは、内側から外側へパケットが流れていないときも、戻りのパケットのためにを穴を開けておかなければならないということです。

上の図の例では、内側から外側にあるWebサーバへのアクセスがない場合、外側から内側への侵入経路である「IN」の穴は、開けておく必要はありません。そこから、許可すべきでないパケットを通過させてしまう可能性があります。

TCPヘッダの中身を確認できるファイアウォールであれば、TCPヘッダ内ののSYNやACKフラグのハンドシェイクの状態を確認して、内側から発したパケットの戻りでないパケットを遮断することができますが、ハンドシェイクの状態を偽装されれば通過させてしまうこととなります。
また、UDPの場合は、UDPヘッダ内にSYNやACKフラグがないので、ハンドシェイクの状態も確認することすらできません。
静的フィルタリングでは、常時、経路となる穴を開けておかなければならないので、その開けたままの状態となる穴が弱点となります。
アプリケーションによっては、非常にたくさんの穴を開けておかなければならないものもあります。
例えば、DirectXを使用するゲームでは、以下のポート番号の通信を開けておく必要があります。
プロトコル | ポート番号 |
UDP | 2300 ~ 2400 |
TCP | 2300 ~ 2400 |
TCP | 47624 |
UDP | 6073 |
※DirectXのバージョン、ホストかクライアントであるのか、ゲームの種類によって異なります。
内部で使用するアプリケーションの種類が多ければ多いほど、たくさんの穴を開けておく必要があります。

上図のように穴だらけだと、セキュリティ面で心配です。
セキュリティを確保するには、通過させたいときにだけ、穴を開けたいところなのですが、静的フィルタリングでは、それができないのです。
そこで、静的フィルタリングの弱点を解消するために考えられたのが、動的フィルタリングなのです。
動的フィルタリング機能を備えるファイアウォールが、非常に高価なものでしたが、最近では安価なルータでも、その機能を備える製品が増えており、その機能を活用する場面も多くなっています。