FreeBSD
すべてのインターフェースで聞く方法tcpdump
> tcpdump -i any
tcpdump: any: No such device exists
(BIOCSETIF failed: Device not configured)
(ICMPを聞きたい)
答え1
FreeBSD 11.3でこれを見ていますが、「何も」する方法がないようです。私は複数のsが動作できると思います-i
。マンページにはこれについての内容はありませんが、最初のsだけが必要です。 tcpdumpが複数をサポートするように強化されている場合は、-i
次のようにする必要があります(またはシステムにないことを証明できます)。
tcpdump --list-interfaces | grep Running | cut -f 1 -d ' ' | cut -f 2- -d '.' | awk '{ print "-i " $1 }' | xargs -t -Jinterfaces tcpdump interfaces host 8.8.8.8
答え2
tcpdumpのマニュアルページから:
インターフェイスパラメータ「all」または「pktap、all」を使用して、ループバックおよびトンネルインターフェイスを含むすべてのインターフェイスからパケットをキャプチャできます。
たとえば、次のように簡単に実行できます。
tcpdump -i all tcp port 80
-i フラグが指定されていない場合、デフォルトではループバックおよびトンネル インターフェイスを除いて、すべてのインターフェイス セットが擬似インターフェイスに再び含まれます。再度tcpdumpのマニュアルページから:
Darwinシステムバージョン13以降でインターフェイスが指定されていない場合、tcpdumpは擬似インターフェイスを使用して、カーネルによって決定されたインターフェイスセットからパケットをキャプチャします(デフォルトではループバックおよびトンネルインターフェイスを除く)。
答え3
このアプローチが特定のユースケースではうまく機能することを保証することはできませんが、FreeBSDでこれを行う強力な方法は、それぞれ既知のインターフェイスに対応するN
インスタンスを実行することです。グループ化およびバックグラウンドコマンドで実行して、結合された出力を単一のファイルに送信できます。出力ファイルには、パケットがインターフェイスaに到着したときにパケットを表示し、パケットがインターフェイスbを離れるときに再表示するなど、多くの冗長パケットがあることは避けられません。tcpdump
N
ifconfig
しかし、そうする必要がある場合は、次の点を考慮してください。
{
for i in $(ifconfig -l)
do
( tcpdump -i $i & )
done
} > tcpdump.out
答え4
FreeBSDのすべてと同様に、マンページを読むと、一般的にすべてが説明されます。
-i interface
--interface=interface
Listen on interface. If unspecified, tcpdump searches the sys-
tem interface list for the lowest numbered, configured up inter-
face (excluding loopback), which may turn out to be, for exam-
ple, ``eth0''.
On Linux systems with 2.2 or later kernels, an interface argu-
ment of ``any'' can be used to capture packets from all inter-
faces. Note that captures on the ``any'' device will not be
done in promiscuous mode.
If the -D flag is supported, an interface number as printed by
that flag can be used as the interface argument, if no interface
on the system has that number as a name.