Armadilloフォーラム

WWAN経由のArmadillo-IoTへのWebアクセスができない

hata

2024年8月2日 16時25分

Armadillo-IoT A6EにWebサーバーを立ててブラウザから接続しています。
WWAN経由でArmadillo上のwebページの取得ができません。
なにか設定が必要でしょうか。

状況としては、以下です。
WWANのSIMはグローバルIPの契約です。
ドメイン名ではなく、IPアドレスでの接続です。
グローバルIPを調べるサービスで取得したIPアドレスに対して、他の端末からping送信して応答があります。
有線LANとWLAN(APモード)では、Armadillo上のwebページを取得できます。
以上、よろしくお願いします。

コメント

at_mitsuhiro.yoshida

2024年8月2日 17時29分

吉田です。

ご利用になられているのは Cat.1 モデルでしょうか、それとも Cat.M1 モデルでしょうか?

Cat.1 モデルでしたら、まずは LTE モジュールのファイアーウォール設定が無効になっているかを確認してもらえますでしょうか。
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

また、有線 LAN および無線 LAN を無効にした場合は WWAN 経由でのアクセスは可能でしょうか。

hata

2024年8月5日 16時15分

ご確認ありがとうございます。

> ご利用になられているのは Cat.1 モデルでしょうか、それとも Cat.M1 モデルでしょうか?
> Cat.1 モデルでしたら、まずは LTE モジュールのファイアーウォール設定が無効になっているかを確認してもらえますでしょうか。
Cat.1モデルです。設定なしでしたので、有効状態でした。
無効(disable)にします。

> また、有線 LAN および無線 LAN を無効にした場合は WWAN 経由でのアクセスは可能でしょうか。
無効にするとは、有線LAN:外す、 無線LAN:クライアントにして、無接続 でよろしいでしょうか。

at_mitsuhiro.yoshida

2024年8月5日 16時45分

吉田です。

> > また、有線 LAN および無線 LAN を無効にした場合は WWAN 経由でのアクセスは可能でしょうか。
> 無効にするとは、有線LAN:外す、 無線LAN:クライアントにして、無接続 でよろしいでしょうか。

はい、一旦 LTE だけを動作させてどうなるかを確認お願いします。

もしそれでアクセス可能であれば、以下のブログを参考に LTE のメトリックを調整ください。
https://armadillo.atmark-techno.com/blog/9492/3724

よろしくお願いします。

hata

2024年8月20日 12時41分

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

> もしそれでアクセス可能であれば、以下のブログを参考に LTE のメトリックを調整ください。
> https://armadillo.atmark-techno.com/blog/9492/3724
おかげさまで、LTEへの接続でwebページ取得ができました。
有線LAN接続があるとNGでしたので、LTEのメトリックの調整で有線LANあってもOKになりました。

しかし、再起動すると、メトリックが戻ってしまいました。
設定は以下のファイルに反映されるようです。永続化はこのファイルのみで問題ないでしょうか。
/etc/NetworkManager/system-connections/gsm-ttyCommModem.nmconnect

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

at_dominique.m…

2024年8月22日 16時00分

hataさん

返事が遅くなってすみません、
代わりにマルティネが回答します。

> 設定は以下のファイルに反映されるようです。永続化はこのファイルのみで問題ないでしょうか。
> /etc/NetworkManager/system-connections/gsm-ttyCommModem.nmconnect

すみません、あのブログは Armadillo IoT G3(L)世代の記事で永続化が不要なモデルですのでその説明がたりてませんでしたね。
はい、この NetworkManager の接続ファイルを persist_file で永続化していただければ大丈夫です。

よろしくお願いします。

hata

2024年8月23日 9時49分

マルティネさん
ご回答ありがとうございます。畑中です。

> はい、この NetworkManager の接続ファイルを persist_file で永続化していただければ大丈夫です。
承知しました。

もう一点確認させてください。本トピックの趣旨とは少しずれてしまいますが、
abosでポートの制限を何かされていますでしょうか。
以下のコマンドで nginxを動かして、外部からwebページを取得できます。
# podman run -d -p 8080:80 --name test_nginx nginx:alpine
しかし、ポートの設定を 80:80 と 8000:80 の場合は、webページに取得をしようとするとタイムアウトします。
適当なポート番号でもwebページの取得はできました。

セルラーに限らず、有線LAN、無線LAN、(abosから)localhost でも同様です。
netstat -ant でポート使用状況を確認すると使用中ではありません。
(そもそも、使用中だとコンテナ起動時に使用中のメッセージがでる)
コンテナに入って、curl localhost で取得できるのでコンテナは問題なく動いています。

よろしくお願いします。

at_dominique.m…

2024年8月23日 10時18分

hataさん

マルティネです。

> もう一点確認させてください。本トピックの趣旨とは少しずれてしまいますが、
> abosでポートの制限を何かされていますでしょうか。

abos-web のために使っている 58080/tcp 以外にありません。

> 以下のコマンドで nginxを動かして、外部からwebページを取得できます。
> # podman run -d -p 8080:80 --name test_nginx nginx:alpine
> しかし、ポートの設定を 80:80 と 8000:80 の場合は、webページに取得をしようとするとタイムアウトします。
> 適当なポート番号でもwebページの取得はできました。
>
> セルラーに限らず、有線LAN、無線LAN、(abosから)localhost でも同様です。
> netstat -ant でポート使用状況を確認すると使用中ではありません。
> (そもそも、使用中だとコンテナ起動時に使用中のメッセージがでる)
> コンテナに入って、curl localhost で取得できるのでコンテナは問題なく動いています。

おかしいですね。
手元の Armadillo IoT A6E に同様に試してみましたが abos からは問題なくアクセスできました:

armadillo:~# podman run -d -p 80:80 --name test_nginx docker.io/nginx:alpine
Trying to pull docker.io/library/nginx:alpine...
Getting image source signatures
[省略]
Copying config 2bba42ed7f done   | 
Writing manifest to image destination
72ec7dfc537d2deca018906c43cd1ad819683a6de92feaf8eeac54cdcd38b016
armadillo:~# curl http://localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[省略]

LTEからの外部アクセスの場合にプロバイダーの制限はあるかもしれませんが、ロカールネットワークやロカールホストでは動くはずですね。

timeout ということでしたら listen の問題ではなくフィルターの問題だと思いますので、何かの iptables を追加しましたか?
「iptables-save」の出力を確認してみてください。

よろしくお願いします。

hata

2024年8月23日 10時59分

マルティネさん

早速のご確認ありががとうございます。hataです。

> timeout ということでしたら listen の問題ではなくフィルターの問題だと思いますので、何かの iptables を追加しましたか?
iptablesは追加していないはずです。

> 「iptables-save」の出力を確認してみてください。
 iptables-save の出力です。

armadillo:~# iptables-save
# Generated by iptables-save v1.8.10 (nf_tables) on Fri Aug 23 10:37:27 2024
*filter
:INPUT ACCEPT [55778:6643111]
:FORWARD ACCEPT [38510:8006465]
:OUTPUT ACCEPT [30503:4862097]
:NETAVARK_FORWARD - [0:0]
:NETAVARK_INPUT - [0:0]
:NETAVARK_ISOLATION_2 - [0:0]
:NETAVARK_ISOLATION_3 - [0:0]
-A INPUT -m comment --comment "netavark firewall rules" -j NETAVARK_INPUT
-A FORWARD -m comment --comment "netavark firewall rules" -j NETAVARK_FORWARD
-A NETAVARK_FORWARD -m conntrack --ctstate INVALID -j DROP
-A NETAVARK_FORWARD -d 10.88.0.0/16 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A NETAVARK_FORWARD -s 10.88.0.0/16 -j ACCEPT
-A NETAVARK_INPUT -s 10.88.0.0/16 -p udp -m udp --dport 153 -j ACCEPT
-A NETAVARK_ISOLATION_3 -o podman0 -j DROP
-A NETAVARK_ISOLATION_3 -j NETAVARK_ISOLATION_2
COMMIT
# Completed on Fri Aug 23 10:37:27 2024
# Generated by iptables-save v1.8.10 (nf_tables) on Fri Aug 23 10:37:27 2024
*nat
:PREROUTING ACCEPT [22860:2466149]
:INPUT ACCEPT [9315:646776]
:OUTPUT ACCEPT [13558:846632]
:POSTROUTING ACCEPT [18227:1725131]
:NETAVARK-1D8721804F16F - [0:0]
:NETAVARK-DN-1D8721804F16F - [0:0]
:NETAVARK-HOSTPORT-DNAT - [0:0]
:NETAVARK-HOSTPORT-MASQ - [0:0]
:NETAVARK-HOSTPORT-SETMARK - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j NETAVARK-HOSTPORT-DNAT
-A OUTPUT -m addrtype --dst-type LOCAL -j NETAVARK-HOSTPORT-DNAT
-A POSTROUTING -j NETAVARK-HOSTPORT-MASQ
-A POSTROUTING -s 10.88.0.0/16 -j NETAVARK-1D8721804F16F
-A NETAVARK-1D8721804F16F -d 10.88.0.0/16 -j ACCEPT
-A NETAVARK-1D8721804F16F ! -d 224.0.0.0/4 -j MASQUERADE
-A NETAVARK-DN-1D8721804F16F -s 10.88.0.0/16 -p tcp -m tcp --dport 80 -j NETAVARK-HOSTPORT-SETMARK
-A NETAVARK-DN-1D8721804F16F -s 127.0.0.1/32 -p tcp -m tcp --dport 80 -j NETAVARK-HOSTPORT-SETMARK
-A NETAVARK-DN-1D8721804F16F -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.88.0.5:80
-A NETAVARK-DN-1D8721804F16F -s 10.88.0.0/16 -p tcp -m tcp --dport 8000 -j NETAVARK-HOSTPORT-SETMARK
-A NETAVARK-DN-1D8721804F16F -s 127.0.0.1/32 -p tcp -m tcp --dport 8000 -j NETAVARK-HOSTPORT-SETMARK
-A NETAVARK-DN-1D8721804F16F -p tcp -m tcp --dport 8000 -j DNAT --to-destination 10.88.0.5:8000
-A NETAVARK-HOSTPORT-DNAT -p tcp -m tcp --dport 80 -m comment --comment "dnat name: podman id: 8b26a139a4c9b4ada55a284ccee279b9f23bccb6fae1da9d9d54a7f80dd08bc5" -j NETAVARK-DN-1D8721804F16F
-A NETAVARK-HOSTPORT-DNAT -p tcp -m tcp --dport 80 -m comment --comment "dnat name: podman id: 4bc43ee029638d12733c5cbada85b9a364b7914862ac148a4471db39890e0fb7" -j NETAVARK-DN-1D8721804F16F
-A NETAVARK-HOSTPORT-DNAT -d 10.88.0.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 10.88.0.1:153
-A NETAVARK-HOSTPORT-DNAT -p tcp -m tcp --dport 80 -m comment --comment "dnat name: podman id: c63f71d4224560850289bc0dc512bc878ebb963ac80dc55f8b5ad50094595de6" -j NETAVARK-DN-1D8721804F16F
-A NETAVARK-HOSTPORT-DNAT -p tcp -m tcp --dport 8000 -m comment --comment "dnat name: podman id: c63f71d4224560850289bc0dc512bc878ebb963ac80dc55f8b5ad50094595de6" -j NETAVARK-DN-1D8721804F16F
-A NETAVARK-HOSTPORT-MASQ -m comment --comment "netavark portfw masq mark" -m mark --mark 0x2000/0x2000 -j MASQUERADE
-A NETAVARK-HOSTPORT-SETMARK -j MARK --set-xmark 0x2000/0x2000
COMMIT
# Completed on Fri Aug 23 10:37:27 2024

*natで、動かしていないpodmanのポート番号80と8000のものがあり、これが原因と思われます。

この記事を参考にルーターの設定を触っていたことがあり、
https://armadillo.atmark-techno.com/blog/10899/16550
そのときに動いていたコンテナのnatの設定がそのまま永続化になった可能性はありそうでしょうか。

よろしくお願いします。

at_dominique.m…

2024年8月23日 12時12分

> > 「iptables-save」の出力を確認してみてください。

ありがとうございます。

> *natで、動かしていないpodmanのポート番号80と8000のものがあり、これが原因と思われます。
>
> この記事を参考にルーターの設定を触っていたことがあり、
> https://armadillo.atmark-techno.com/blog/10899/16550
> そのときに動いていたコンテナのnatの設定がそのまま永続化になった可能性はありそうでしょうか。

はい、それは原因だと思います。
つい先月に修正した不具合です(ABOS 3.20.2-at.1 に入れてる abos-web 1.4.0 以降では、abos-web で iptables を保存する際にコンテナのルールを保存しないように修正しましたが、すでに保存されているルールに問題があった場合の修正は用意してなかったです)

今後のアップデートで対応しようと思いますが、ひとまず /etc/iptables/rules-save を修正してください:

sed -i -e '/NETAVARK/d' /etc/iptables/rules-save
persist_file /etc/iptables/rules-save
rc-service iptables restart
# コンテナが起動している場合に iptables を復帰させる
podman network reload -a

よろしくお願いします

hata

2024年8月23日 12時53分

マルティネさん

hataです。
> 今後のアップデートで対応しようと思いますが、ひとまず /etc/iptables/rules-save を修正してください:
復旧できました。

いつも的確な回答をありがとうございます。
おかげさまで助かっております。