2009-05-06 5 views
3

udp/tcpパケットと一致する文字列をドロップするようにルールが設定されています。しかし、libpcapを使ってパケットをキャプチャする私のプログラムは、このパケットをまだ見ることができます。iptablesとlibpcap

なぜこれ/それはlibpcapので見られる前にパケットをドロップするのiptableルールがどうあるべきか、ですか?

は、それがのlibpcap/tcpdumpので見られる前に、このパケットをドロップするように、iptablesのルールよりもおそらく他、とにかくありますか?

答えて

7

Yes, libpcap sees all the packets.。 これらはネットフィルタによって処理される前にキャプチャされています。

+0

iptablesとは別に、libpcapに達する前にこのパケットを破棄していただきありがとうございます。 – Kazoom

+0

これらがnon-lanパケットの場合は、それらをルータにドロップできます。 –

+0

また、libpcapベースのプログラムでは、通常、標準のtcpdump形式でフィルタを提供することができます。 –

-2

netfilterの前にパケットを見る方法はありません.netfilterはカーネルモジュールであり、ユーザモードに入る前にすべてのパケットを処理します。カーネルが見る前にパケットを見ることさえできます。 説明をさらに説明できますか? libpcapは、iptablesのものを上書きするnetfilterのフックも設定する可能性があります。本当の問題は、探しているものと、netfilterでどのようなフックが設定されているかは、ささいなことではなく、カーネルモードでしかできないということです。 libpcapがパケットを取得する方法を調べてください。

+0

libpcapはパケットをキャプチャするためにnetfilterフックを使用しません。 libpcapはTCP/IPスタックに渡される前にパケットをキャプチャします – codingfreak

0

使用しているnetfilterフックの優先度を変更しようとしましたか?入ってくるパケットの優先度を最大にしてフックしようとすると、パケットを取得するためにlibpcapが使用する方法であるパケットソケットカーネルコードの前にパケットを取得します。 - OSに応じ libpcapのパケットをキャプチャするさまざまな方法を使用しています:

*私はあなたが*

EDIT Linuxを使用していると仮定します。 linuxではnetfilterフレームワークを使ってカーネルコードで実装されたパケットソケットを使います。