首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在设备中找到ping请求的源?

如何在设备中找到ping请求的源?
EN

Unix & Linux用户
提问于 2020-01-12 16:23:47
回答 1查看 322关注 0票数 1

我有一个基于linux的移动设备,每隔4-6周就会开始每分钟10到12倍地敲击Google地址。这种增加的敲击开始和结束似乎是随机的,持续几天后才恢复正常(即不敲击),并且ping请求似乎毫无例外地收到了成功的响应。每次开始新的ping活动时,用于请求的IP地址都会发生变化,尽管ping似乎总是使用Google地址。

有什么方法可以找到在我的设备上启动pings的应用程序/程序吗?我跑了

代码语言:javascript
运行
复制
grep -r "Google"

希望能找到某种类型的列表或数据库,该设备将其用作不同IP地址的源,但没有任何运气。如有任何建议/反馈/指导,将不胜感激。

EN

回答 1

Unix & Linux用户

发布于 2020-01-13 07:56:15

假设ftrace是在内核中配置的,并且您有根访问权限,那么您可以使用内核跟踪工具。

有较新的工具可用,特别是bpftrace,但嵌入式设备通常缺乏安装所需依赖项所需的空间。此解决方案使用了多年来可用的ftrace。这只是使用原始文件,有一些工具将自动化这些步骤。

如果调试器尚未挂载,则挂载它。

代码语言:javascript
运行
复制
[ -e /sys/kernel/debug/tracing/README ] || mount -t debugfs debugfs /sys/kernel/debug

禁用跟踪,将报表设置为跟踪函数,设置要监视的函数

代码语言:javascript
运行
复制
 cd /sys/kernel/debug/tracing
 echo 0 > tracing_on
 echo function > current_tracer
 echo ping_init_sock > set_ftrace_filter
 echo sock_sendmsg >> set_ftrace_filter # Optional, omit if ping_init_sock gives results

启用跟踪

代码语言:javascript
运行
复制
 echo 1 > tracing_on

等待ping事件发生,然后检查trace文件中的内容。

代码语言:javascript
运行
复制
cat trace
# tracer: function
#
# entries-in-buffer/entries-written: 56/56   #P:1
#
#                              _-----=> irqs-off
#                             / _----=> need-resched
#                            | / _---=> hardirq/softirq
#                            || / _--=> preempt-depth
#                            ||| /     delay
#           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
#              | |       |   ||||       |         |
            ping-3085  [000] .... 8035797.349326: ping_init_sock <-inet_create
            ping-3085  [000] .... 8035797.349352: ping_init_sock <-inet6_create
            ping-3085  [000] .... 8035797.349739: sock_sendmsg <-___sys_sendmsg
            ping-3085  [000] .... 8035797.349764: sock_sendmsg <-___sys_sendmsg
            ping-3085  [000] .... 8035797.365248: sock_sendmsg <-__sys_sendto
            ping-3085  [000] .... 8035797.365486: sock_sendmsg <-__sys_sendto
            ping-3085  [000] .... 8035797.379917: sock_sendmsg <-__sys_sendto
            ping-3085  [000] .... 8035797.387487: sock_sendmsg <-__sys_sendto

这表明PID 3085正在执行ping操作。如果幸运的话,执行find操作的进程将仍然在运行,所以您可以在ps输出中找到它。如果没有,你可能希望它有一个可识别的名字。

如果这两种方法都失败了,那么也许https://github.com/brendangregg/perf-tools/blob/master/deprecated/execsnoop-proc可以帮上忙。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/561729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档