libpcap を使用してパケットをキャプチャするアプリケーションを作成しました。しかし、アプリケーションは数パケットしかキャプチャできず、トラフィックは数 kbps 程度です。ただし、tcpdump を開くと、キャプチャされたトラフィックは 10Mbps を超えます。tcpdump を閉じると、キャプチャされたトラフィックは再び数 kbps に落ちました。
理由を知っている人はいますか?どうもありがとうございました。
を呼び出している場合pcap_open_live()
、''promisc'' 引数として 0 を渡している可能性があります。pcap_create()
とを呼び出している場合pcap_activate()
、おそらくpcap_set_promisc()
それらの呼び出しの間に呼び出しを行っていません (またはpcap_set_promisc()
、0 の ''promisc'' 引数を渡しています)。
つまり、おそらく無差別モードをオンにしていないため、マシンはネットワーク上の他のトラフィックではなく、マシンとの間のトラフィックのみをキャプチャしています。デフォルトでは、tcpdump はプロミスキャス モードをオンにします。そのため、実行中は、キャプチャしているアダプタ (おそらく tcpdump がキャプチャしているアダプタと同じアダプタ) がプロミスキャス モードになり、次のように表示されます。ネットワーク上の他のトラフィック。