1

私は、ネットワーク接続のライフサイクルのさまざまな段階で、Linux マシンから発信され、Linux マシンに着信するネットワーク接続を傍受する機能を提供するプロジェクトに取り組んでいます。

これらの段階には次のものが含まれます。

  1. 送信ネットワーク接続が確立される直前、つまり最初の SYN パケットが送信されるとき。
  2. アウトバウンド ネットワーク接続が確立された直後。
  3. 接続が終了した直後。
  4. インバウンド接続が確立されたとき、つまり、最初の SYN パケットが外部から受信されたとき。

上記の要件について、私は netfilter_queue を評価してユーザー空間でパケットを取得し、パケットを許可するか破棄するかの判断を下していました。

ここでの主な関心事は、netfilter_queue の登録が完了すると、すべてのパケットの取得を開始することです。しかし、私は制御パケットにのみ関心があり、データ パケットをユーザー空間に送信したくありません。

それで、私の質問は - netfilter_queue カーネルモジュールにデータパケットではなく制御パケットのみを送信するように指示する既存の方法はありますか? また、接続の確立と終了について通知を受けることは可能でしょうか?

上記を達成するための準備ができていない場合、libnfnetfilter_queue および netfilter_queue カーネル モジュールを変更して、構成モード セットに応じて制御パケットのみを提供すること、つまり、制御パケットのみをユーザー空間にコピーするために NFQNL_COPY_CONTROL_PACKET を導入することは理にかなっていますか?

私はまだ netfilter_queue を調査しているので、私の質問が素朴に思われる場合は申し訳ありません。

netfilter メーリング リストにも同じ質問を投稿しましたが、今のところ返信がありません :(

すべての助けをありがとう。

ガウラフ

4

1 に答える 1

1

特定のパケットをキューに追加するには、iptables ルールを作成する必要があります。必要なパケットのみをキューに入れるルールを作成できます。例えば:

ip6tables -I INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j QUEUE

オプションについては、次の--tcp-flagsページで説明しています: http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html#ss7.3

于 2014-01-06T16:15:44.183 に答える