linux 如何记录所有 ping 响应

linux 如何记录所有 ping 响应

在linux(特别是RHEL/CentOS 7)中,有没有办法,例如/var/log/audit/audit.log记录所有响应ping

如果网络上有人对我的 Linux 计算机执行 ping 操作,有没有办法记录下来,并在稍后知道发生这种情况的时间以及从哪个 IP 地址对我执行 ping 操作?

答案1

首先确保您的系统安装了 tcpdump。然后创建脚本文件并在脚本文件中添加以下命令。

sudo tcpdump -i ethX icmp and icmp[icmptype]=icmp-echo >> ping.log

然后在cronjob中添加这个脚本文件。

答案2

这就是我决定做的对我来说足够有效的事情。

参考man tcpdump

tcpdump  -U  -i eth0   icmp and icmp[icmptype]=icmp-echo   -C 10   -w /root/ping_`date '+%Y%m%d_%H%M'`.log &

这将保存到二进制日志文件中,并-w在日志文件名后附加日志文件启动时的日期+时间。

-C将日志文件限制为 # MB

-U很重要,因为它会导致文件刷新,没有它,您将永远不会看到其中的内容/root/ping.log直到您按 Ctrl-C tcpdump。

需要读取二进制格式的 ping 日志,tcpdump并且可以通过以下方式轻松完成

tcpdump  -r <log file>  -tttt

tcpdump  -r <log file>  -tttt -n

我无法ts通过管道从 moreutils 获取工作。通过 tcpdump 重定向标准输出也>>不起作用。这是在 RHEL 7.9 上

为了停止这个后台 tcpdump 进程,我正在执行 aps -ef | grep tcpdump | grep root来识别其 PID,然后kill -9 <PID>对其执行 a 。

相关内容