iptablesおよびlibpcap
-
06-07-2019 - |
質問
iには、一致する文字列を持つudp / tcpパケットをドロップするようにルールが設定されています。ただし、libpcapを使用してパケットをキャプチャする私のプログラムは、このパケットを表示できます。
これはなぜですか、libpcapで認識される前にパケットをドロップするiptableルールはどうあるべきですか?
とにかく、おそらくiptablesルール以外に、このパケットをlibpcap / tcpdumpで見る前にドロップすることはありますか?
解決
はい、libpcapはすべてのパケットを表示します。。 これらは、netfilterによって処理される前にキャプチャされています。
他のヒント
使用するnetfilterフックの優先度を変更しようとしましたか?着信パケットに対して最高の優先度でフックしようとすると、パケットソケットカーネルコードの前にパケットを取得します。これは、libpcapがパケットをキャプチャするために使用する方法です。
* Linuxを使用していると仮定します*
編集: Libpcapは、OSに応じて、さまざまな方法でパケットをキャプチャします。 Linuxでは、netfilterフレームワークを使用してカーネルコードに実装されるパケットソケットを使用します。
libpcapがnetfilterの前にパケットを見る方法はありません。netfilterはカーネルモジュールであり、ユーザーモードに到達する前にすべてのパケットを処理します。カーネルが見る前にパケットを見ることができます。 さらに説明してもらえますか? libpcapは、iptables内のフックを上書きするフックをnetfilterに設定している可能性もあります。本当の問題は、netfilterで見るフックと設定するフックは簡単なことではなく、カーネルモードでしか実行できないことです。 libpcapがパケットを取得する方法を調査します。