tcpdump 4.1.1のマニュアルページで(はい、古いことを知っています)
-i Listen on interface. If unspecified, tcpdump searches the system interface list for the lowest numbered, configured up interface (excluding loopback). Ties are broken by choosing > the earliest match. On Linux systems with 2.2 or later kernels, an interface argument of ``any'' can be used to capture packets from all interfaces. Note that captures on the ``any'' device will not be done in promiscuous mode.
最後の文の正確な意味を説明できる人はいますか?私は多くのインターフェイスを持つIDSサーバーを使用していますが、tcpdump -i anyを使用すると、IDSサーバーへの開始/目的地ではなくトラフィックが明確に表示されます。しかし、すべてのインターフェイスを無差別モードに切り替える別のサービスがあります。 -iを使用すると、tcpdumpがインターフェイスをPROMISCモードに切り替えないことを意味しますか?
答え1
-iを使用すると、tcpdumpがインターフェイスをPROMISCモードに切り替えないことを意味しますか?
はい、それは私のことです。 「すべての」デバイスは、すべてのデバイスを独立して開いてキャプチャする方法では機能しません。特定のデバイスにバインドするのではなく、「パケットソケット」を開きます(Linuxでそのデバイスをキャプチャする方法で発生する現象)。すべてのソケットでリッスンするようにバインディングが解除されます。
無差別モードを設定する呼び出しはバインドされていないソケットで失敗するため(非常に新しいカーネルでテストしました)、libpcapは「すべての」デバイスに対して無差別モードを設定しません。
答え2
無差別モードを回避するには、次のように-pパラメーターを使用することもできます。
tcpdump -p -i eth0
インターフェイスを無差別モードに設定しないでください。小規模なネットワークやクラスタがある場合は、すべてのパケットを見るのが面白いかもしれません。そうでなく、無差別モードを有効にすると、ネットワークはコンピュータを簡単に圧倒することができます。