Armadilloフォーラム

固定IPのSIMカードを使用した状態でAWSと通信ができない

suke_suta

2024年12月19日 0時55分

お世話になります、高橋です

armadilloで固定IPアドレスのSIMカードを使用し、AWSと通信をしたいのですが通信ができません
SIMカードの設定を行いアットマークテクノさんのサーバーとPING通信ができていることも確認できていますが、AWSにデータが送信されません
SIMルーターで使用し、armadilloとLANで接続した場合はAWSと接続ができます
AWSと通信できない原因は何が考えられるでしょうか、よろしくお願いします

==========
製品型番:Armadillo-IoT A6
Debian/ABOSバージョン:
カーネルバージョン:4.14-at41
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

コメント

佐藤です。

> SIMカードの設定を行いアットマークテクノさんのサーバーとPING通信ができていることも確認できていますが、AWSにデータが送信されません
AWSとはPING通信出来ていますでしょうか。pingコマンドの実行結果はどのようになっていますでしょうか。
出来ていない場合、名前解決が出来ていないのかもしれません。
その場合、以下のフォーラムが参考になるかと思います。
https://armadillo.atmark-techno.com/forum/armadillo/17396

高橋です

> AWSとはPING通信出来ていますでしょうか。pingコマンドの実行結果はどのようになっていますでしょうか。
AWSとはPING通信ができていない状態です

sage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
            [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
            [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
            [-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
             [-l preload] [-m mark] [-M pmtudisc_option]
             [-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
             [-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
             [-W timeout] destination
 

AWSと接続しようとするとこのような結果が出ます
頂いだURLを一度拝見させていただきます

佐藤です。

>

> sage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
>             [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
>             [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
>             [-w deadline] [-W timeout] [hop1 ...] destination
> Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
>              [-l preload] [-m mark] [-M pmtudisc_option]
>              [-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
>              [-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
>              [-W timeout] destination
>  

>
> AWSと接続しようとするとこのような結果が出ます
ping コマンドの使い方に誤りがあるように見えます。
上記の結果となった際、どのような ping コマンドを打ったのか教えてもらって良いでしょうか。(URLの部分は隠していただいてもかまいません)

高橋です

> AWSと接続しようとするとこのような結果が出ます
> ping コマンドの使い方に誤りがあるように見えます。
> 上記の結果となった際、どのような ping コマンドを打ったのか教えてもらって良いでしょうか。(URLの部分は隠していただいてもかまいません)

ping -I www.APIのURL

という形で入力しました

高橋です

続けて申し訳ありません

通信させたいawsのURLが間違っていない場合でも

Name or service not known

の表示が出る可能性はあるでしょうか?

佐藤です。

ping は

ping -I ppp0 www.APIのURL

というふうにやってみてもらえますでしょうか。

> Name or service not known
>
> の表示が出る可能性はあるでしょうか?
URLが間違っていなくても名前解決できなければ出ます。

高橋です

/etc/ppp/peers/wvdialに「replacedefaultroute」を追加した上で

ping -I ppp0 www.APIのURL
 

をしたところName or service not knownが出てしまいました

また、atmark-techno.comで通信を試したところ

root@armadillo:~# ping -I ppp0 www.atmark-techno.com
PING waf0003.bluesphere.jp (18.181.73.254) from 125.196.73.246 ppp0: 56(84) bytes of data.

と出るので通信自体は出来ているような感じがします

高橋です続けて失礼します

やりたい事がarmadilloで収集したデータをAWSのSOLサーバーに上げることです

現象としてわからないのがarmadilloにLANを接続した場合はデータが上げられていることです

佐藤です。

LTE接続時に以下を実行した場合の結果はどうなってますでしょうか。

root@armadillo:~# cat /etc/resolv.conf

高橋です

このようになっています

root@armadillo:~# cat /etc/resolv.conf
nameserver 210.147.235.3
nameserver 133.205.66.51

佐藤です。

以下は繋がりますでしょうか。(LANケーブルは抜いた状態でお願いします)

root@armadillo:~# ping -I ppp0 aws.amazon.com

高橋です

root@armadillo:~# ping -I ppp0 aws.amazon.com
ping: aws.amazon.com: Temporary failure in name resolution
 

このように表示されるので、繋がりません

佐藤です。

"/etc/resolv.conf" ファイルの内容を以下のように編集したとにpingコマンドを打つとどうでしょうか。

nameserver 8.8.8.8
nameserver 8.8.4.4
#nameserver 210.147.235.3
#nameserver 133.205.66.51

高橋です

root@armadillo:~# ping -I ppp0 aws.amazon.com
PING dr49lng3n1n2s.cloudfront.net (18.65.168.18) from 125.196.73.246 ppp0: 56(8.
64 bytes from server-18-65-168-18.nrt57.r.cloudfront.net (18.65.168.18): icmp_ss
64 bytes from server-18-65-168-18.nrt57.r.cloudfront.net (18.65.168.18): icmp_ss
64 bytes from server-18-65-168-18.nrt57.r.cloudfront.net (18.65.168.18): icmp_ss
64 bytes from server-18-65-168-18.nrt57.r.cloudfront.net (18.65.168.18): icmp_ss
64 bytes from server-18-65-168-18.nrt57.r.cloudfront.net (18.65.168.18): icmp_ss

編集したところ通信ができました、何が起きたのでしょうか?

高橋です

ping -I ppp0 aws.amazon.com

では通信できていますが、実際に送信したいURLで通信すると Name or service not known が出てしまいます

 awsiot-lb-〇〇〇〇.ap-〇〇〇〇.elb.amazonaws.com/〇〇/app/Upload.php

という形式のURLになります

佐藤です。

awsiot-lb-〇〇〇〇.ap-〇〇〇〇.elb.amazonaws.com/〇〇/app/Upload.php

pingには".com"以下の部分は不要ですので、以下のようにしてみてください。

ping -I ppp0 awsiot-lb-〇〇〇〇.ap-〇〇〇〇.elb.amazonaws.com

編集前の "/etc/resolv.conf" の nameserver のアドレスから推察すると、お使いのSIMはBIGLOBEのSIMかと思います。
なぜ、BIGLOBEから与えられたnameserverでawsの名前が解決できないのかは、こちらでは分かりません。
BIGLOBEに問い合わせると何か分かるかもしれません。

8.8.8.8 と 8.8.4.4 は google が提供している Public DNS で、これを使うようにしたことにより名前解決ができるようになったということになります。

高橋です

com@armadillo:~# ping -I ppp0 awsiot-lb-〇〇〇〇.ap-〇〇〇〇.elb.amazonaws 
PING awsiot-lb-.ap〇〇〇〇-〇〇〇〇.elb.amazonaws.com (3.113.67.133) from 125.196.73.246 ppp0: 56(84) bytes of data.
^C
--- awsiot-lb-.〇〇〇〇.ap-〇〇〇〇.elb.amazonaws.com ping statistics ---
22 packets transmitted, 0 received, 100% packet loss, time 889ms
>

となってしまい、通信が始まりません

nameserverについてはわかりました、ありがとうございます

佐藤です。

PING awsiot-lb-.ap〇〇〇〇-〇〇〇〇.elb.amazonaws.com (3.113.67.133) from 125.196.73.246 ppp0: 56(84) bytes of data.

このように表示されている時点で、名前解決はできていると思います。
ping の応答がないのは aws サーバのほうがpingに応答しないように設定されているからだと思います。

実際に、収集したデータをAWSのSQLサーバーに上げることはできましたでしょうか。

高橋です、丁寧にありがとうございます

> 実際に、収集したデータをAWSのSQLサーバーに上げることはできましたでしょうか。

armadilloにSIMルーターを接続した状態では上げることは出来ていますが、本来の目的のSIMを使用してのLTE通信では上げられていません
プログラム的には収集したデータを時間ごとに上げるようにつくられているので、本来ならarmadilloの電源を入れると自動でデータを
上げ始めるようになると思います

佐藤です。

> armadilloにSIMルーターを接続した状態では上げることは出来ていますが、本来の目的のSIMを使用してのLTE通信では上げられていません
> プログラム的には収集したデータを時間ごとに上げるようにつくられているので、本来ならarmadilloの電源を入れると自動でデータを
> 上げ始めるようになると思います
resolv.conf の内容が元に戻ってしまってるのかもしれません。

高橋です

> resolv.conf の内容が元に戻ってしまってるのかもしれません。

resolv.confの内容が戻っているを確認し修正しましたが、データが上がりません
他に確認したり修正すべき場所はあるでしょうか?

佐藤です。

LTE接続した状態で以下を実行した結果はどのようになってますでしょうか。

root@armadillo:~# route

高橋ですです。

このような状態になっています
>

root@armadillo:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
192.168.50.1    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
> 

佐藤です。

ありがとうございます。
ネットワークには問題ないように見えます。
データを上げるプログラムがどのようなエラーを返してきているかや、
他にもSIMをお持ちであればそちらのSIMでも試してみる。
などを確認するといいかもしれません。

高橋です

続けて失礼します

root@armadillo:~# ip 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
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default 0
    link/ether 00:11:0c:2a:32:08 brd ff:ff:ff:ff:ff:ff
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group3
    link/ppp 
 

 
ip link を確認するとppp0 が state UNKNOWN mode になっていますがこれは問題がありますか?

佐藤です。

> AWS側の設定の問題の可能性も考えられますか?
考えられると思います。
 
> ip link を確認するとppp0 が state UNKNOWN mode になっていますがこれは問題がありますか?
こちらは今回の現象には関係ないと思われます。

高橋です、ありがとうございます

Armadillo-IoT ゲートウェイ A6 製品マニュアルで
aiot-modem-control の戻り値と意味を「表 6.16. aiot-modem-control 処理結果」に示します。

と出ていますが処理結果はどこから見ることができるでしょうか?
aiot-modem-control と入力しても戻り値らしいものは表示されません

佐藤です。

説明不足で申し訳ありません。
「表 6.11 aiot-modem-control コマンド一覧」にある中の
以下のコマンドを使用した場合の実行結果(エラーメッセージ)を記載しています。
set-apn
set-psm
set-edrx
set-sleep
set-suspend
send-at
send-at-echo

高橋です、ありがとうございます

現在、LTE設定のコマンドを入力すると
表示されるフォーマットの中に multiplex の項目がありません、これは後から追加する必要があるものでしょうか?

また、少し進展があり
LANを繋いでサーバーにデータを上げてる状態でLANを外し、LTEだけで通信をさせるとデータを上げ続ける状態になっています
このような状態の時に、どこか見直す場所などはありますでしょうか?

続けて失礼します、高橋です

現状、armadilloを立ち上げログインした直後に

aiot-modem-control status

を行うと

status: not registered

になっています
LTE設定で

auto_dial=true

を追加していれば、立ち上げてステータスを見れば

status: dial

になっていると思っていたのですが間違っているでしょうか?

佐藤です。

> 表示されるフォーマットの中に multiplex の項目がありません、これは後から追加する必要があるものでしょうか?
お使いになられているカーネルバージョンが4.14-at41なので無いです。
at43以降のバージョンにアップデートしていただけると現れるかと思います。

> 続けて失礼します、高橋です
>
> 現状、armadilloを立ち上げログインした直後に
>

> aiot-modem-control status
> 

> を行うと
>

> status: not registered
> 

> になっています
> LTE設定で
>

> auto_dial=true
> 

> を追加していれば、立ち上げてステータスを見れば
>

> status: dial
> 

> になっていると思っていたのですが間違っているでしょうか?
起動直後で、LTE接続を行っている最中などのタイミングであればnot registeredになるかもしれません。
起動後LTE接続が完了している状態でも not registered になっているということでしょうか?

高橋です、ありがとうございます

> お使いになられているカーネルバージョンが4.14-at41なので無いです。
> at43以降のバージョンにアップデートしていただけると現れるかと思います。

カーネルはアップデートしたほうが良いでしょうか?

> 起動直後で、LTE接続を行っている最中などのタイミングであればnot registeredになるかもしれません。
> 起動後LTE接続が完了している状態でも not registered になっているということでしょうか?

起動して少し置いてからステータスを確認するとdialになっていました、確認するのが早すぎただと思います、申し訳ありませんでした

at_makoto.sato

2025年1月8日 9時19分

佐藤です。

> カーネルはアップデートしたほうが良いでしょうか?
そうですね。アップデートしても問題ないようであればしてみると良いかもしれません。

高橋です

カーネルのアップデートをしたところ "/etc/resolv.conf" の中身を編集しなくてもAWSに通信するようになりました、
ですがLANで接続しないとサーバーにはデータが送信されません、LANで送信されたことを確認した後にarmadilloからLANを外すと継続して送信されています
考えられる原因は何かありますでしょうか?

佐藤です。

> ですがLANで接続しないとサーバーにはデータが送信されません、LANで送信されたことを確認した後にarmadilloからLANを外すと継続して送信されています
> 考えられる原因は何かありますでしょうか?
データが送信されない時、何かエラーは発生していますでしょうか。
たとえば、ご自身のデータ送信プログラムは何かエラーを出していないのでしょうか。

お世話になります、高橋です

LANを接続して通信しているときのログとLTEだけて通信しているときのログを記録してみました
それを添付させていただきます、やはりLTEだけの場合はエラーが出ています
送信するデータはプロトコルAとプロトコルBと言う物があります、よろしくお願いします

ファイル ファイルの説明
LAN A.txt 通信ができてAWSのSQLサーバーにデータが上がっています
LAN B.txt Bも同じです
LTE A.txt LTEのみではデータが上がりません
LTE B.txt

佐藤です。

HTTPレスポンスとして、
"LTE A.txt" では 404(not found)エラー
"LTE B.txt" では 500(Internal Server Error)エラーが
返って来ているように見えます。
サーバ側のアクセスログや、Upload.php の動作ログを確認してみてもらえますでしょうか。

お世話になります、高橋です

> サーバ側のアクセスログや、Upload.php の動作ログを確認してみてもらえますでしょうか。

申し訳ないのですが、上記2つの確認を方法を教えていただけますか?

佐藤です。

> 申し訳ないのですが、上記2つの確認を方法を教えていただけますか?
こちらでは、そちらのサーバ環境がわからないので適切なことは言えませんが、
awsの管理画面等でアクセスログの確認等はできないのでしょうか。
また、Upload.phpはどこか特定のディレクトリに動作ログを出力するようになっていたりはしないのでしょうか。