Armadilloフォーラム

AP設定して接続したデバイスの通信データをArmadillo上で認識したい

y_seto

2024年11月6日 17時19分

==========
製品型番:AGX4520-C03D0
Debian/ABOSバージョン:3.20.3-at.3
カーネルバージョン:5.10.226-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
ABOSWebにてAP設定をしてスマホをWifi接続しています。スマホからデータを送信しているのですが、Armadillo上でどうやって認識すればいいかよくわかっていません。
現状で確認できていることは下記になります。
 ・外部からの入力(192.168.0.200)→eth0(192.168.0.100)→eth1(192.168.1.100)→スマホ(192.168.1.200) (Armadillo→スマホ)の通信
   ※eth0→eth1はArmadillo内でルーティング
 ・スマホ(192.168.1.200)→別デバイス(192.168.1.50)の通信

やりたいことは下記になります。
 ・スマホ(192.168.1.200)→eth1(192.168.1.100)→eth0(192.168.0.100)→別デバイス(192.168.0.50) Armadilloでルーティングして別のローカルネットワークにデータを流したい
   ※eth1→eth0はArmadillo内でルーティング

どうにかしてArmadilloにつないだスマホのデータをルーティングしたいのですが、スマホからの送信データをどうやって取得すればいいのかがわかりません。
アドバイスを頂けないでしょうか。
宜しくお願い致します。

コメント

at_dominique.m…

2024年11月6日 18時06分

y_setoさん

お世話になっています、
マルティネです。

助言する前に、できたこと・やりたいことを確認させてください。

以下のはできたという認識ですが、詳細を確認させてください(その次のコマンドを実行できた場合は細かく回答しなくていいです)
* Armadillo で AP を生成して、スマホから接続してます。
* サブネットは eth1 と同じなので、wlan は bridge しているだけで DHCP は別に用意してません?
* 外(192.168.0.200) からスマホ(192.168.1.200)へ送信できたので、外のデバイスに armadillo (192.168.0.100) を route にして少なくとも 192.168.1.0/24 をアクセスできるようにした?デフォルト route ですか? NAT していますか?
* スマホ(192.168.1.200) から 192.168.1.0/24 へ通信できてますが別のサブネットへ通信できてないということはスマホに route を教えてない、ですね。

言葉より実際の設定を確認した方が早いと思いますので、シリアル接続ができてる場合に armadillo 上に以下の三つのコマンドを実行していただければ幸いです:

ip route
iptables-save
cat /etc/dnsmasq.d/abos_web*

続きまして目的の確認ですが、私の認識では Armadillo は eth0 / (eth1+wlan) のネットワーク(192.168.0.0/24 と 192.168.1.0/24) のどちらも接続していて、Armadillo が橋になる形に片方に接続しているデバイスをもう片方に接続しているデバイスに両側通信できるようにしたいですね?
私の勝手な想像ではその二つのネットワークのどちらかはセキュリティのためインターネットに接続していなくて、もう片方(スマホ側?)はインターネットに接続しているように思いましたがあっていますか?
(その質問の裏には、すでに存在する dhcp サーバーの存在を確認したいです)

以上、確認項目が多くてすみませんがよろしくお願いします。

マルティネさん

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

> 助言する前に、できたこと・やりたいことを確認させてください。
>
> 以下のはできたという認識ですが、詳細を確認させてください(その次のコマンドを実行できた場合は細かく回答しなくていいです)
> * Armadillo で AP を生成して、スマホから接続してます。
> * サブネットは eth1 と同じなので、wlan は bridge しているだけで DHCP は別に用意してません?
> * 外(192.168.0.200) からスマホ(192.168.1.200)へ送信できたので、外のデバイスに armadillo (192.168.0.100) を route にして少なくとも 192.168.1.0/24 をアクセスできるようにした?デフォルト route ですか? NAT していますか?
> * スマホ(192.168.1.200) から 192.168.1.0/24 へ通信できてますが別のサブネットへ通信できてないということはスマホに route を教えてない、ですね。
>
> 言葉より実際の設定を確認した方が早いと思いますので、シリアル接続ができてる場合に armadillo 上に以下の三つのコマンドを実行していただければ幸いです:
>

> ip route
> iptables-save
> cat /etc/dnsmasq.d/abos_web*
> 

>
コードを実行した結果は以下の通りになりました(コピーではなく手打ちなのでミスがあったらすみません)
色々と試していたので、質問したときとIPやサブネットマスクが変っています。スマホのIPは固定IPにしていて(192.168.1.49)です。

ip route
default via 192.168.0.1 dev eth0 metric 100
192.168.0.0/16 dev eth0 scope link src 192.168.0.100 metric 100
192.168.0.0/16 dev eth1 scope link src 192.168.44.31 metric 101
192.168.0.0/16 dev br_ap scope link src 192.168.1.1 metric 425
 
iptables-save
cat /dev/dnsmasq.d/abos_web*
interface=br_ap
bind-dynamic
dhcp-range=tag:br_ap, 192.168.1.10, 192.168.1.254, 24h

>
> 続きまして目的の確認ですが、私の認識では Armadillo は eth0 / (eth1+wlan) のネットワーク(192.168.0.0/24 と 192.168.1.0/24) のどちらも接続していて、Armadillo が橋になる形に片方に接続しているデバイスをもう片方に接続しているデバイスに両側通信できるようにしたいですね?
> 私の勝手な想像ではその二つのネットワークのどちらかはセキュリティのためインターネットに接続していなくて、もう片方(スマホ側?)はインターネットに接続しているように思いましたがあっていますか?
> (その質問の裏には、すでに存在する dhcp サーバーの存在を確認したいです)
基本的にはその認識ですが、最終的にはスマホ側はArmadilloのDHCP+固定IPにして、もう片側は固定IPで使用したいと思っています。
最終系ではスマホ側にも、もう片方側にもルーターなど(DHCPサーバー?)はいなくなる想定をしています。

> 以上、確認項目が多くてすみませんがよろしくお願いします。
ネットワークなどの知見があまりなく見当違いのことを言っているかもしれまでんが宜しくお願いします。

at_dominique.m…

2024年11月7日 13時15分

y_setoさん、

マルティネです。

回答ありがとうございます。

> コードを実行した結果は以下の通りになりました(コピーではなく手打ちなのでミスがあったらすみません)
> 色々と試していたので、質問したときとIPやサブネットマスクが変っています。スマホのIPは固定IPにしていて(192.168.1.49)です。

手打ちでコピーさせてしまってすみません、
情報ありがとうございました。

> 基本的にはその認識ですが、最終的にはスマホ側はArmadilloのDHCP+固定IPにして、もう片側は固定IPで使用したいと思っています。
> 最終系ではスマホ側にも、もう片方側にもルーターなど(DHCPサーバー?)はいなくなる想定をしています。

分かりました。

まず、現在の設定と説明で一つ気になった点があります。
"ip route" コマンドの出力では全てのインタフェースは 192.168.0.0/16 のサブネット(192.168.0.0 から 192.168.255.255 まで)として設定していますが、
今の説明では eth0 と eth1/wlan のネットワークを別けたいと思いましたので、
192.168.0.0/24 (192.168.0.[0-255]) と 192.168.1.0/24 で別けた方がいいかもしれません。

同じサブネットを使う場合でも armadillo を通って通信はできますが、それは routing ではなく switching になりますので、管理の仕方がだいぶ変わります。
(switching ですと broadcast も通りますし、dhcp 等の接知恵をインタフェースで管理しにくくなります)

サブネットを別けると両側に接続しているデバイスに Armadillo をデフォルト route として設定するだけで通信はできるはずです。

それ以外は、
* armadillo をルーターとして設定されることになりますので覚えやすい .1 か .254 の IP を設定した方が分かりやすいかもしれませんが動作に影響ないのでそこはお任せします。
* eth1 に関しても、wlan と同じがいいか、別のサブネットにするかを決める必要があります。

それでよろしければ以下の設定で試してみてください。
ABOS Web で「各接続設定」の画面から設定できます:
* eth0, ipv4.method=manual という認識ですので ipv4.addresses をなおして 192.168.0.1/24 等にして保存します。
* br_ap、同じくアドレスを 192.168.1.1/24 等に変更します。
* eth1, 別のサブネットにする場合は同じく 192.168.2.1/24 にするか、アドレスの設定を無視して
「詳細を表示」のなかで「connection.master」を検索して「br_ap」にして「connection.slave-type」を「bridge」にして保存します。※
その設定では wlan の bridge に入りますので、br_ap の設定は全て eth1 にも適用されます。

以上 Armadillo の設定です。

上記の設定ではスマホを dhcp にすると br_ap の ip を default route として取得するはずなので、eth0 側のデバイスへ接続できるはずです。
eth0 側のデバイスは固定 IP になっていますので、そちらは固定に armadillo の IP を route として設定する必要があります。(ものによりますが ipv4 gatewayの設定に armadillo の ip を登録するなど)

この設定では Armadillo に iptables を追加したり、フィルターも実装可能になります(ABOS Web ではそういうフィルターを対応してませんのでコンソールの操作になります)

返事が長くなりましたがいかがでしょうか。

ちなみに、逆に switching の方がよろしかった場合は eth0 も bridge に入れて br_ap に /16 のアドレスを登録すれば、接続されているデバイスは直接(gateway無し)に通信できるようになりますが、フィルター等は難しくなります。

※ ABOS web の不具合で、eth1 を一度 bridge 設定にした場合に「詳細を表示」ボタンが使えなくなりますので、設定を解除できません。eth1 を元に戻したい場合はコンソールで「nmcli c mod 'Wired connection 2' connection.master '' connection.slave-type ''」を実行してください。
この不具合は今月のリリースで修正します。

よろしくお願いします。

y-setoです。

マルティネさん
ご助言ありがとうございます。

アドバイス通りにbr_ap,eth0,eth1を設定したところ、送受信ともに意図通りにできました。

追加での質問になってしまうのですが、
スマホとArmadillo間の通信ログをwiresharkなどで取得したいのですが、推奨の方法は何でしょうか。
pnp方式などでwiresharkで時間とデータ部が見れるようにしたいです。

申し訳ありませんが、ご助言頂けないでしょうか。

【追記】
通信がうまくできたときの設定は下記です。
br_ap: 192.168.1.1/24
eth0: 192.168.0.100/24
eth1: 192.168.44.31/24

スマホ
IP: 192.168.1.49/24
GW:192.168.1.1

at_dominique.m…

2024年11月7日 14時58分

y-setoさん

マルティネです。

> アドバイス通りにbr_ap,eth0,eth1を設定したところ、送受信ともに意図通りにできました。

操作できて何よりです。

> 追加での質問になってしまうのですが、
> スマホとArmadillo間の通信ログをwiresharkなどで取得したいのですが、推奨の方法は何でしょうか。
> pnp方式などでwiresharkで時間とデータ部が見れるようにしたいです。

pnp方式と言うのは分かりませんが、後でログを見返せるようにしたいですね。

wireshark で見たい場合は tcpdump で一時的に保存するしかないと思います。
wireshark ではありませんが、長い時間で監視するためには netflow 等、モニターリングのツールがありますのでそちらのあたりに探していただければいいかもしれません。

実行方法ですが、ABOS ではプログラムをインストールしづらいので、コンテナに必要なツールをインストールしていただいてそのコンテナに set_network hostadd_args --cap-add=NET_ADMIN --cap-add=NET_RAW 等の設定を使えばそういうツールを実行できるようになります。

それ以上具体的にアドバイスはできませんが実装にまたなにか困ったことあればまた聞いてください。

よろしくお願いします。

マルティネさん

y_setoです。
ありがとうございます。

tcpdumpをコンテナにインストールしてやってみたいと思います。
わからないことあれば新しく質問し直そうと思います。

ありがとうございました。

y_setoです。
> wireshark で見たい場合は tcpdump で一時的に保存するしかないと思います。
> wireshark ではありませんが、長い時間で監視するためには netflow 等、モニターリングのツールがありますのでそちらのあたりに探していただければいいかもしれません。
>
> 実行方法ですが、ABOS ではプログラムをインストールしづらいので、コンテナに必要なツールをインストールしていただいてそのコンテナに set_network hostadd_args --cap-add=NET_ADMIN --cap-add=NET_RAW 等の設定を使えばそういうツールを実行できるようになります。

tcpdumpでデータを一時保存したいと思いますが、
tcpdumpの場合に必要になるツールと
その後の設定について具体的に教えていただけませんか?

よろしくお願いします。