如何知道谁在ping我的电脑?

rɑː*_*dʒɑ 13 networking linux ping

可能的重复:
我如何知道我的计算机何时被 ping 通?

我正在使用 Linux。我想知道如何知道谁在 ping 我的电脑。我在使用 Windows 时看到过类似的问题,但我不确定它是否适用于我。

Cha*_*les 32

看起来您是在问如何查看谁在 ping 您,对吗?一种快速而肮脏的方法是使用tcpdump简单地监视所有传入的 ICMP 回显请求:

sudo tcpdump -i ethX icmp and icmp[icmptype]=icmp-echo
Run Code Online (Sandbox Code Playgroud)

ethX您有兴趣收听的适配器的名称在哪里。

请注意,默认情况下 tcpdump 将解析主机名,因此您可能需要添加-n获取 IP的选项。

(顺便说一下,这与您链接的问题中给出的说明基本相同,尽管它们适用于 Wireshark,这是一个相关但独立的工具。)

  • 缺少撇号:`sudo tcpdump -i ethX 'icmp and icmp[icmptype]=icmp-echo'` (2认同)

use*_*517 17

你可以像这样使用 tcpdump

tcpdump ip proto \\icmp
Run Code Online (Sandbox Code Playgroud)

你会得到这种输出

09:25:22.650727 IP 192.168.1.69 > centos6.lan:ICMP echo request, id 1, seq 1, l ength 40 09:25:22.650816 IP centos6.lan > 192.168.1.1.69: ICMP echo,1 id eq 1.69 , 长度 40

你也可以使用 iptables

 iptables -I INPUT -p icmp --icmp-type 8 -m state  --state NEW,ESTABLISHED,RELATED -j LOG --log-level=1 --log-prefix "Ping Request "
Run Code Online (Sandbox Code Playgroud)

并在 /var/log/messages 中获取这样的消息(至少在 CentOS 上)

11 月 14 日 09:43:35 centos6 内核:Ping 请求 IN=eth0 OUT= MAC=00:0c:29:d2:2c:38:00:0c:29:fe:8e:bb:08:00 SRC=192.168。 1.69 DST=192.168.254.188 LEN=60 TOS=0x00 PREC=0x00 TTL=126 ID=6551 PROTO=ICMP TYPE=8 CODE=0 ID=1 SEQ=37