Armadilloフォーラム

tcpdumpを導入方法

y_seto

2024年11月7日 19時00分

==========
製品型番:AGX4520-C03D0
Debian/ABOSバージョン:3.20.3-at.3
カーネルバージョン:5.10.226-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

ArmadilloのWifiをAPに設定し、無線デバイスと接続してUDPで通信しています。
通信用のソフトはC言語でコンテナとしてSWUをインストールしています。
通信データの中身とタイムスタンプを取得したく、tcpdumpを実装したいのですが、
具体的な方法がわかりません(自分の勉強不足です)

前回の質問の最後に、マルティネさんにコンテナにインストールするというアドバイスを頂いています。
VSCodeでSWUコンテナを作っていますが、
SWU作る→ABOS Webでインストールはできているのですが、コンテナにtcpdumpをインストールというのが
いまいちどうしたらよいかわかりません。

レベルの低い話で申し訳ありませんが、
ご助力宜しくお願い致します。

コメント

at_reika.yamazaki

2024年11月7日 19時45分

お世話になっております。山崎です。

>VSCodeでSWUコンテナを作っていますが、
>SWU作る→ABOS Webでインストールはできているのですが、コンテナにtcpdumpをインストールというのが

上記についてですが、こちらは ABOSDE で C言語用のプロジェクトを作成して、生成した SWU をインストールしているということで相違ないでしょうか?

その場合はプロジェクト内の container ディレクトリにある packages.txt にインストールしたいパッケージ名を記載することでご使用のコンテナにインストールすることが可能です。
packages.txt に以下のように記載してください。

tcpdump
[build]
build-essential

詳細についてはマニュアルの以下の章をご確認ください。
・C 言語によるアプリケーションの開発
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

packages.txt を編集後、SWU イメージを作成しなおして Armadillo にインストールしてご使用ください。
以上、どうぞよろしくお願いいたします。

y_setoです。
山崎様 ご回答ありがとうございます。

アドバイス通りにSWUを再生成してインストールしたところ、無事tcpdumpのコマンドを認識できました。
しかし、コマンド実行でエラーが起こっています。

今回、tcpdumpをインストールしたコンテナはudp_gateway_cです。

podman exec -it udp_gateway_c tcpdump
tcpdump: eth0 : You don't have permission to capture on that device
(socket : Operation not permitted)

コンテナにインストールしたtcpdumpでarmadilloの通信を確認するのにはほかに
設定など必要でしょうか。

at_reika.yamazaki

2024年11月11日 11時27分

お世話になっております。山崎です。

エラー内容を確認したところ、コンテナから tcpdump を実行するための権限が不足しているみたいです。
プロジェクト内の config ディレクトリにある app.conf に以下の二行を追加してください。

add_args --cap-add=NET_ADMIN
add_args --cap-add=NET_RAW

編集後、 SWU イメージを再作成して Armadillo にインストールしてご確認ください。

以上、どうぞよろしくお願いいたします。

y_setoです。

山崎様
ありがとうございます。

上記のapp.config修正により
無事にtcpdumpにてeth0のデータを取得することができました。