動的フィルタ

動的フィルタを使用すると、パケットがフィルタルールにマッチした際に、動的に生成・削除されるパスルールのフィルタステートを生成することができます。

動的フィルタ

"filter.ipvX.[].state : enable" を指定されたフィルタは、動的フィルタとして動作し、パケットがフィルタルールにマッチした際にそのパケットに関連するパケットをパスさせるための優先的なパスルールのフィルタステートを生成します。

動的フィルタとブロックルールのフィルタと組み合わせることで、IN方向は通常はブロックとし、OUT方向のパケットをトリガーとして一時的にIN方向もパスする動的なフィルタとすることができます。
  • 処理内容にパスを指定したフィルタルールでのみ動作します。
  • 同じ内部IDを持つ、INとOUTの二つのパスルールを生成します。
1. 動的フィルタステートの保持数上限
機種 上限
SEIL/X4 65536
SEIL/x86 Ayame 65536
SEILアプライアンスシリーズ CA10 65536
注:

設定変更時の注意

コンフィグの変更は、生成済みのフィルタステートには反映されません。必要に応じてフィルタのステータスをクリアしてください。

生成条件

次の条件を満たす場合にフィルタステートを生成します。

  • 生成済みの動的フィルタステートの数が上限に達していないこと
  • 処理内容がパス(pass)であること
  • "state : enable" であるIPパケットフィルタのエントリの、以下の条件全てにパケットが適合すること
    • interface
    • direction
    • protocol
    • icmp-type(ICMP あるいは ICMPv6 の場合のみ)
    • source.address
    • source.port(TCP あるいは UDP の場合のみ)
    • destination.address
    • destination.port(TCP あるいは UDP の場合のみ)
    • ipopts(IPv4の場合のみ)
    • exthdr(IPv6の場合のみ)
    注:

    動的フィルタのフィルタステートの生成条件としてipopts/exthdrを指定できますが、生成されたフィルタステートはipopts/exthdrをルールに引き継ぎません。

    • 特定のipopts/exthdrのパケットにのみマッチするパスルールの動的フィルタ設定によって生成されたフィルタステートは、特定のipopts/exthdrに一致しないパケットもマッチするパスルールとなるため注意が必要です。

生成されたフィルタステートのprotocolパラメータについて

生成元となるフィルタ設定のprotocolパラメータがanyやtcpudpであっても、ルールに一致したパケットがTCPであるならば、生成されたフィルタステートのprotocolパラメータはTCP(tcp)となります。

例外対応

  • TCPおよびUDP、その他プロトコルに一致するフィルタステートは、当該ステートに関係する次のパケットをパスします。
    • ICMP エラーパケット(IPv4の場合)
    • ICMPv6 エラーパケット(IPv6の場合)
    • ICMPエラーパケットは、TCPやUDPに限らず、GREやその他のプロトコルのステートであっても、そのステートに関するICMPエラーであればパスされます。
  • TCP 21番ポート(FTP)に一致するフィルタルールは、データ転送用ポートに対応するステートを生成します。

フィルタステートの削除条件

  • フィルタステートは生成時に設定されたTTL(有効時間)値が0になると削除されます。
  • "clear filter.ipv4"(IPv4)または"clear filter.ipv6"(IPv6)コマンドが実行されると、該当プロトコル(IPv4またはIPv6)の全てのフィルタステートが削除されます。

フィルタステートのTTL

  • フィルタステートのTTLは、ステート生成時に初期値となり、ステートが存在する間は1秒経過ごとに1づつ減算されます。
  • 当該フィルタステートに一致するパケットが通過すると、TTLは初期値に戻されます。
  • 不要となったフィルタステートの削除を早めるため、条件によってTTL値を小さな値に変更します。
    • TCPの場合において、当該セッションに関係するTCP FINまたはTCP RSTが通過したならば、当該TTLの初期値を5秒に変更します。
    • IPv4の場合において、当該セッションに関係するICMPエラーパケットが通過したならば、当該TTLの初期値を5秒に変更します。
    • IPv6の場合において、当該セッションに関係するICMPv6エラーパケットが通過したならば、当該TTLの初期値を5秒に変更します。

TTLの初期値は、コンフィグによる指定値またはデフォルトの180秒となりますが、下表の通信は設定値によらずTTLが固定となります。

2. TTLの初期値が固定の通信
パケットの種類 固定のTTL値
ICMP 10秒
ICMPv6 10秒
UDP 53 番ポート(domain) 15秒
UDP 123 番ポート(ntp) 15秒

フィルタルールの評価順序について

動的に生成されたパスルールを先に評価し、その次にパケットフィルタ設定のルールを順番に評価します。