有没有办法知道谁在网络上 ping 我的 PC?是否有可能监控所有 ICMP 数据包?我该怎么做?
答案1
是的,可以使用tcpdump
,它是 Linux 上最强大和使用最广泛的命令行数据包嗅探器(包分析器)工具。
在您想要监控的计算机的终端应用程序中:
sudo tcpdump -i ethX icmp and icmp[icmptype]=icmp-echo
选项:
-n avoid a (potentially slow) reverse DNS query
−i interface
icmp[icmptype]=icmp-echo To print all ICMP packets that are echo requests/replies
它将开始监听ethX并等待数据包到达。
例如:我有 2 台 win710.1.1.8, 乌班图10.1.1.57这将监视到达的数据包:
在 Ubuntu 上:
参考 :nixCraft
答案2
很好的锻炼@nux我喜欢它。
我还想添加我使用的技巧,通过使用avahi
工具(可从 安装Synaptic
)来查找谁在 ping 我。
当我在终端中运行时avahi-browse -rat
,它会自动编译完整的连接列表,例如:
hostname = [xxx-xxx.local]
address = [xxx::x:xxx:xxx:xxx:xxx] physical
address = [xx.xx.xxx.xx] ipv4 or ipv6
port = [xxx]
txt = [xxx]
例如,当我运行此命令时,我始终可以看到我的 Internet 提供商在我的会话期间何时 ping 我。
要查看 avahi 可以做的一切,请运行:
avahi-browse --help
答案3
只需安装此包即可(如果您没有的话):
sudo apt-get install iptables-persistent
然后将此命令添加到/etc/iptables/rules.v4
文件中:
-A INPUT -p icmp --icmp-type echo-request -j LOG --log-prefix "LOG_IPTABLES_PING_REQUEST: "
要检查谁 ping 了你,只需检查日志文件:
grep 'LOG_IPTABLES_PING_REQUEST: ' /var/log/messages
您还可以使用监控应用程序,例如Wireshark。