デバイス内のpingリクエストのソースをどのように見つけますか?

デバイス内のpingリクエストのソースをどのように見つけますか?

私は4〜6週間ごとにGoogle IPアドレスを毎分10〜12回pingし始めるLinuxベースのモバイルデバイスを持っています。このように増加したpingはランダムに開始して終了するように見え、数日間続いた後は正常(つまり、pingなし)に戻り、ping要求は例外なく成功した応答を受け取るようです。 pingは常にGoogleアドレスを使用しているように見えますが、リクエストに使用されるIPアドレスは、pingアクティビティが新しく増加するたびに変わります。

私のデバイスでpingを開始するアプリケーション/プログラムを見つける方法はありますか?私は走った

grep -r "Google"

他のIPアドレスのソースとして使用するデバイスのリストやデータベースの種類を探したいのですが、運がありません。どんなアドバイス/フィードバック/地図でもいただきありがとうございます。

ベストアンサー1

ftrace がカーネルに設定され、root アクセス権があると仮定すると、カーネルトレース機能を使用できます。

bpftrace などの最新のツールを使用できますが、組み込みデバイスには必要な依存関係をインストールするために必要なスペースが不足していることがよくあります。このソリューションは、長年にわたり使用されてきた ftrace を使用しています。これは単に生ファイルを使用するだけで、これらの手順の一部を自動化するためのツールがあります。

debugfsがまだインストールされていない場合はインストールします。

[ -e /sys/kernel/debug/tracing/README ] || mount -t debugfs debugfs /sys/kernel/debug

追跡の無効化、機能追跡のためのレポート設定、監視する機能の設定

 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

トレースの有効化

 echo 1 > tracing_on

pingイベントが発生するのを待ってから、traceファイルの内容を確認してください。

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を送信していることを示します。運が良ければ、pingを実行するプロセスはまだ実行中であるため、出力で見つけることができますps。それ以外の場合は、認識可能な名前を使用することをお勧めします。

どちらも失敗した場合https://github.com/brendangregg/perf-tools/blob/master/deprecated/execsnoop-proc助けることができる

おすすめ記事