この質問をする方法が正確にはわかりませんでしたが、キーワードflagsを使用して、フィルタリングするフラグを指定できることは知っています。
パケットフィルターのドキュメントによると:
ルールの評価中に PF に TCP フラグを検査させるには、flags キーワードを次の構文で使用します。
フラグ チェック/マスク
フラグ 任意マスク部分は、指定されたフラグのみを検査するように PF に指示し、チェック部分は、一致が発生するためにヘッダーでどのフラグを「オン」にする必要があるかを指定します。any キーワードを使用すると、フラグの任意の組み合わせをヘッダーに設定できます。
fxp0 proto tcp で任意のポートから任意のポートに渡す ssh フラグ S/SA
fxp0 proto tcp で任意のポートから任意のポートに渡す sshフラグ S/SA はデフォルトで設定されているため、上記のルールは同等です。これらの各ルールは、SYN フラグと ACK フラグのみを確認しながら、SYN フラグが設定された TCP トラフィックを通過させます。SYN フラグと ECE フラグを含むパケットは上記のルールに一致しますが、SYN と ACK を含むパケット、または ACK だけを含むパケットは一致しません。
そのため、例と、フラグ S および E を持つパケットが通過できる理由 (マスク SA のために E フラグが考慮されないため) と、Ack フラグのみを持つパケットがファイアウォールを通過できない理由を理解しました。
私が理解できなかったのは、パケット ヘッダーでフラグ S が「オン」の場合、フラグ S と A を持つパケットがルール S/SA を通過できない理由です。多分ドキュメントがあいまいですか?これがばかげた質問または英語の誤解である場合は申し訳ありません。
フラグ Sのみが必要な場合にのみ通過できると思います。集合演算では、次のようになります。
ヘッダーでフラグを「オン」にする必要があります->フラグはマスクされたサブセットに関係します[pf doc]
ヘッダーでフラグのみを「オン」にする必要があります->フラグは次と同等ですマスクされたサブセット[与えられた例から私が理解したもの]
前もって感謝します!