Armadilloフォーラム

Armadilloもしくはコンテナが実施している外部への通信について調べたい

takeshita_kyouhei

2025年7月11日 18時06分

==========
製品型番:AGX4520-C02D0
Debian/ABOSバージョン:3.20.3-at.3
カーネルバージョン:5.10.226-1-at
ファームウェアバージョン:2.2.0
ブートローダバージョン:2020.4-at.24
その他:
==========

Armadillo-IoT G4にSORACOMのSIMカードを挿入し、ソフトウェアの動作をさせています
 ソフトウェア(コンテナ)は4種類
  Modbus通信でデータを取得するもの
  Modbus通信でデータの書き込みをするもの
  IoTHUBへCSVファイルを送信するもの(最大サイズ1.5kB程度、1分間に最大2ファイル(1日に最大で2880ファイル)を送信)
  IoTHUBからのメッセージ送信を待ち受けるもの

これらソフトウェアを稼働させているArmadillo-IoT G4について、通信量が非常に大きくなる事象が発生しています

添付の画像の通り、ずっと通信量が多いわけではなくいくつかの日付だけが跳ね上がっています(1GB近く)
Armadillo内のコンテナはずっと稼働しているので、「毎日多量の通信が発生している」であればわかるのですが、
現状心当たりのない日に多量の通信が発生しています
 唯一、コンテナ「IoTHUBからのメッセージ送信を待ち受けるもの」だけは膨大なメッセージを送る可能性があるため、
 通信量が多くなる可能性がありますが、画像上で通信量が多い日にメッセージを受信したという履歴はありません

この原因を調べるために、Armadilloが行っている外部との通信(SORACOM回線経由)について、調査したいのですが何か打ち手はありますでしょうか?
また、Armadilloの機能やIoTHUBとの通信(メッセージ受信、CSVファイル送信)で通信量が大きくなる可能性があるものに心当たりがありましたら教示いただけますと幸いです

以上、よろしくお願いいたします

ファイル ファイルの説明
SORACOM_通信量.png SORACOMサイトでSIM詳細画面を開き、通信量履歴を表示したもの 契約しているSIMはVPG (Virtual Private Gateway) Type-F2
コメント

マルティネです。

> この原因を調べるために、Armadilloが行っている外部との通信(SORACOM回線経由)について、調査したいのですが何か打ち手はありますでしょうか?

コンテナが再起動していなければ、インタフェース情報でどのコンテナが通信しているのかを確認できます
( /sys/class/net/*/statistics/[rt]x_bytes と同じ情報です)

armadillo:~# apk add iproute2
# コンテナ名をコンテナの名前と入れ替えてください
armadillo:~# nsenter -n$(podman inspect --format {{.NetworkSettings.SandboxKey}} コンテナ名) ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX:  bytes packets errors dropped  missed   mcast           
             0       0      0       0       0       0 
    TX:  bytes packets errors dropped carrier collsns           
             0       0      0       0       0       0 
2: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether a2:18:2c:74:c1:d9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    RX:  bytes packets errors dropped  missed   mcast           
       4961765     393      0       0       0       0 
    TX:  bytes packets errors dropped carrier collsns           
         18540     210      0       0       0       0 

これでも心当たりなければ netflow を記録するなどがいいかもしれません。

# メモリ上で試しましたが、長く実行する予定でしあらコンテナに set_network host
# と add_args --cap-add NET_RAW/NET_ADMIN を設定してコンテナで実行可能なはずです
armadillo:~# apk add fprobe nfdump
# ログ先は /etc/conf.d/nfcapd の BASEDIR で調整可能です
armadillo:~# rc-service nfcapd start
# /etc/conf.d/fprobe の IFACE 設定を ppp0 等の LTE インタフェースに変更してください
# (あるいは、全インタフェースを「any」で設定可能なはずです)
armadillo:~# rc-service fprobe start
 
# ログ確認例
armadillo:~# nfdump -r /var/log/nfcapd/nfcapd.202507112110 
Date first seen         Duration         Proto      Src IP Addr:Port          Dst IP Addr:Port   Packets    Bytes Flows
2025-07-11 21:08:57.059     00:00:00.000 UDP        192.0.2.31:65397 ->  255.255.255.255:1947         1       68     1
2025-07-11 21:08:57.058     00:00:00.000 UDP        192.0.2.31:65395 ->   192.0.2.255:1947         1       68     1   
2025-07-11 21:09:05.715     00:00:00.000 UDP       192.0.2.50:50700 ->   192.0.2.255:7788         1      104     1    
2025-07-11 21:09:21.038     00:00:00.000 UDP       192.0.2.15:137   ->   192.0.2.255:137          1       78     1    
2025-07-11 21:09:27.124     00:00:00.764 UDP        192.0.2.3:5353  ->      224.0.0.251:5353         6     1711     1 
...
Summary: total flows: 80, total bytes: 195954, total packets: 1294, avg bps: 3903, avg pps: 3, avg bpp: 151
Time window: 2025-07-11 21:07:30.579 - 2025-07-11 21:14:12.212, Duration:    00:06:41.633
Total records processed: 80, passed: 80, Blocks skipped: 0, Bytes read: 6784
Sys: 0.0000s User: 0.0064s Wall: 0.0042s flows/second: 18940.2 Runtime: 0.0043s

上記を解析すればどのサーバーへ通信が発生したかを確認できますので、それで何かわかるかもしれません。
(わからない場合は特定した通信を行うプロセスまで確認できますが、やや面倒なので必要でしたら聞いてください)

> また、Armadilloの機能やIoTHUBとの通信(メッセージ受信、CSVファイル送信)で通信量が大きくなる可能性があるものに心当たりがありましたら教示いただけますと幸いです

(そちらはわかりませんので、別の誰かあれば…)

よろしくお願いします