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.