Armadilloフォーラム

LTEにてFTP接続がタイムアウトにて送信できなくなってしまった

new_bee

2025年7月7日 10時00分

==========
製品型番:AG6221-C01Z
Debian/ABOSバージョン:3.19.1-at.3.20240527
カーネルバージョン:5.10.237-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:SDBOOT
==========

いつもお世話になっております。
pythonのftplibにてAWSのEC2に構築してあるFTPサーバに画像を転送する処理をコンテナ内で実行しています。

Jul 7 02:53 P25070702530364.jpg
Jul 7 09:33 P25070703030320.jpg
Jul 7 09:34 P25070703140337.jpg

2:53から9:33 にかけてtimeoutエラーが発生していました。
コンテナ内でping 8.8.8.8 は応答が返ってきており
https://host.containers.internal:58080/api/wwan/signal_quality
にて毎分取得している電波強度を確認する限り通信断が起こってはいなさそうでした。

2025/07/07 09:22:00 [MSG] {"signal_quality":"48"}
2025/07/07 09:23:00 [MSG] {"signal_quality":"45"}
2025/07/07 09:23:04 [ERR] Upload failed for P25070703030320.jpg: 421 Data timeout. Reconnect. Sorry.

またコンテナの外でmmcli -m 0 を実行するとモデムが見つからないといわれ詳細を確認できませんでした。
同様にコンテナ外でもping8.8.8.8 で応答は帰ってきます。

armadillo:~# mmcli -m 0
error: couldn't find modem

通信回りは iproute でLTEの優先度を1番高くしております。

事象発生時の詳細ログ等を確認できるようでしたら確認したいのですが
確認する方法等ございますでしょうか?
もしあるようでしたらご教授いただけると助かります。
お手数ですがよろしくお願い致します。

コメント

佐藤です。

> 事象発生時の詳細ログ等を確認できるようでしたら確認したいのですが
> 確認する方法等ございますでしょうか?
> もしあるようでしたらご教授いただけると助かります。
/var/log/messages ファイルを添付していただけますでしょうか。

佐藤様

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

messages を添付いたします。
ご確認の程宜しくお願い致します。

ファイル ファイルの説明
messages.txt

表題とは関係ないとは思いますが攻撃を受けていたので
ssh接続をiptbles にて塞ぎました。

> 佐藤様
>
> お世話になっております。
>
> messages を添付いたします。
> ご確認の程宜しくお願い致します。
>

佐藤です。

すいません。
以下の手順を参考にデバッグログを有効にした後、
armadilloを再起動していただき、また今回の現象が発生した場合にその時の /var/log/messages をいただけますでしょうか。
https://armadillo.atmark-techno.com/howto/mm-debug

また、以下のログの "421" とは ftp サーバのレスポンスコードを表していますでしょうか?
そうなのであれば、ftpサーバのレスポンス 421 とは
"Service not available, closing control connection. " とのことなので、サーバ側のログも確認してみるとなにかわかるかもしれません。

2025/07/07 09:23:04 [ERR] Upload failed for P25070703030320.jpg: 421 Data timeout. Reconnect. Sorry.

佐藤様

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

頂いた手順でmodemmanagerを作成ししばらく様子を見たいと思います。

> "Service not available, closing control connection. " とのことなので、サーバ側のログも確認してみるとなにかわかるかもしれません。
ひとまずサーバのログも確認してみようかと思います。

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

また事象が発生いたしましたら宜しくお願い致します。

> 佐藤です。
>
> すいません。
> 以下の手順を参考にデバッグログを有効にした後、
> armadilloを再起動していただき、また今回の現象が発生した場合にその時の /var/log/messages をいただけますでしょうか。
> https://armadillo.atmark-techno.com/howto/mm-debug
>
> また、以下のログの "421" とは ftp サーバのレスポンスコードを表していますでしょうか?
> そうなのであれば、ftpサーバのレスポンス 421 とは
> "Service not available, closing control connection. " とのことなので、サーバ側のログも確認してみるとなにかわかるかもしれません。
>

> 2025/07/07 09:23:04 [ERR] Upload failed for P25070703030320.jpg: 421 Data timeout. Reconnect. Sorry.
> 

佐藤様

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

ssh のアクセスブロックを追加した際にカメラ側からアルマジロ内のFTPコンテナにアクセスできなくなってしまいました。

iptables のinputルールに port 22 でブロックをかけたのみで他コンテナ等の設定ファイルを変更しておりません。
追加したルールを削除しても接続できない状況が続いております。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
NETAVARK_INPUT  all  --  0.0.0.0/0            0.0.0.0/0            /* netavark firewall rules */
ACCEPT     tcp  --  192.168.7.94         0.0.0.0/0            tcp dpt:8080
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
NETAVARK_FORWARD  all  --  0.0.0.0/0            0.0.0.0/0            /* netavark firewall rules */
ACCEPT     tcp  --  118.3.228.109        0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  192.168.7.94         0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  192.168.7.94         0.0.0.0/0            tcp dpt:8080
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
 
Chain NETAVARK_FORWARD (1 references)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
ACCEPT     all  --  0.0.0.0/0            10.88.0.0/16         ctstate RELATED,ESTABLISHED
ACCEPT     all  --  10.88.0.0/16         0.0.0.0/0
 
Chain NETAVARK_INPUT (1 references)
target     prot opt source               destination
ACCEPT     udp  --  10.88.0.0/16         0.0.0.0/0            udp dpt:153
ACCEPT     tcp  --  10.88.0.0/16         0.0.0.0/0            tcp dpt:153
 
Chain NETAVARK_ISOLATION_2 (1 references)
target     prot opt source               destination
 
Chain NETAVARK_ISOLATION_3 (0 references)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            0.0.0.0/0
[armadillo ~]# /etc/init.d/iptables save
[armadillo ~]# persist_file /etc/iptables/rules-save

でルールを更新しarmadillo本体の再起動を実行したのみで他の作業は行っていません。

ftp コンテナのconfファイルはで必要なポートは渡せていると思います。

set_image localhost/{{PROJECT}}:latest
 
add_volumes /sys:/sys
add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro
add_volumes /var/app/volumes/{{PROJECT}}:/vol_data
 
add_args -it
add_ports 21:21 21100-21110:21100-21110
# add_args --env=PASV_ADDRESS="192.168.7.96"
add_args --env=PASV_ADDRESS="192.168.10.100"
 
add_armadillo_env
add_volumes /var/app/volumes/shared/image:/var/local
add_volumes /var/app/rollback/volumes/vsftpd.conf:/etc/vsftpd/vsftpd.conf:ro
 
# set_command bash /vol_app/src/main.sh

新たにルールを追加したことによって変更されてしまうセキュリティがあるのでしょうか?

お手数ですがご教授いただけると助かります。

ファイル ファイルの説明
vsftpd.conf

佐藤様

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

カメラ自体はarmadilloのeth0に接続しており、
armadilloはIP:192.168.10.100
カメラは IP:192.168.10.50

で接続しています。

ABOSWEBにてNAT設定をしており
armadilloにUSBLANでeth1を追加してある
192.168.7.98 から接続するようになっております。

以下で教えていただいた際に作成したイメージを使用しております。
https://armadillo.atmark-techno.com/forum/armadillo/26278

こういった設定等も影響しますでしょうか?
お忙しいところ恐縮ですがよろしくお願い致します。

佐藤です。

> ssh のアクセスブロックを追加した際にカメラ側からアルマジロ内のFTPコンテナにアクセスできなくなってしまいました。
とのことですが、どのようなコマンドで ssh のアクセスブロックを追加しましたか。

> 追加したルールを削除しても接続できない状況が続いております。
こちらはどのようなコマンドでルールを削除しましたか。

ssh を使わないのであれば、アクセスをブロックするよりも
以下のようにssh自体を起動しないようにしたほうが良いかと思います。

[armadillo]# rc-update del sshd
[armadillo]# persist_file -d /etc/runlevel/sshd

佐藤様

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

カメラの間欠テストを行っている関係でシリアル接続が移動しないと接続できないため
テスト期間中のみsshを使用してアクセスしようと考えてました。
出荷する際はsshを起動しないようにした状態でイメージを作成しようと思います。
教えていただきありがとうございます。

> とのことですが、どのようなコマンドで ssh のアクセスブロックを追加しましたか。
以下コマンドで追加、削除する場合は追加したルールの番号で削除しました。

iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -D INPUT 4

で永続化させて再起動しております。

また一度iptablesを
iptables -F
で初期化したのちに
FTP接続を試してもpingは通りますが接続ができない状態になってしまっています。

お手数ですがご確認の程宜しくお願い致します。
> 佐藤です。
>
> > ssh のアクセスブロックを追加した際にカメラ側からアルマジロ内のFTPコンテナにアクセスできなくなってしまいました。
> とのことですが、どのようなコマンドで ssh のアクセスブロックを追加しましたか。
>
> > 追加したルールを削除しても接続できない状況が続いております。
> こちらはどのようなコマンドでルールを削除しましたか。
>
> ssh を使わないのであれば、アクセスをブロックするよりも
> 以下のようにssh自体を起動しないようにしたほうが良いかと思います。
>

> [armadillo]# rc-update del sshd
> [armadillo]# persist_file -d /etc/runlevel/sshd
> 

佐藤です。

> iptables -A INPUT -p tcp --dport 22 -j DROP
> iptables -D INPUT 4
ありがとうございます。削除する前は
"iptables -L --line-numbers" で行数番号を確認して 4 だったのでそれを消したということですね。

> また一度iptablesを
> iptables -F
> で初期化したのちに
初期化したあとに、コンテナを再起動しましたでしょうか?
コンテナを再起動したあとの
"iptables -L" コマンドの結果はどうなっていますでしょうか。

佐藤様

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

> "iptables -L" コマンドの結果はどうなっていますでしょうか。
今一度初期化して以下の状態になっております。
podman restart ftp
及びarmadillo本体のrebootもかけております。

armadillo:~# podman ps -a
CONTAINER ID  IMAGE                          COMMAND               CREATED        STATUS        PORTS                                                             NAMES
9b2f38d8c731  localhost/ftp:latest           bash /vol_app/src...  9 minutes ago  Up 9 minutes  0.0.0.0:21->21/tcp, 0.0.0.0:21100-21110->21100-21110/tcp, 20/tcp  ftp
armadillo:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
NETAVARK_INPUT  all  --  anywhere             anywhere             /* netavark f
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
NETAVARK_FORWARD  all  --  anywhere             anywhere             /* netavark
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
 
Chain NETAVARK_FORWARD (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     all  --  anywhere             10.88.0.0/16         ctstate RELATED,ES
ACCEPT     all  --  10.88.0.0/16         anywhere
 
Chain NETAVARK_INPUT (1 references)
target     prot opt source               destination
ACCEPT     udp  --  10.88.0.0/16         anywhere             udp dpt:153
ACCEPT     tcp  --  10.88.0.0/16         anywhere             tcp dpt:153
 
Chain NETAVARK_ISOLATION_2 (1 references)
target     prot opt source               destination
 
Chain NETAVARK_ISOLATION_3 (0 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
NETAVARK_ISOLATION_2  all  --  anywhere             anywhere

ご確認の程宜しくお願い致します。

> 佐藤です。
>
> > iptables -A INPUT -p tcp --dport 22 -j DROP
> > iptables -D INPUT 4
> ありがとうございます。削除する前は
> "iptables -L --line-numbers" で行数番号を確認して 4 だったのでそれを消したということですね。
>
>
> > また一度iptablesを
> > iptables -F
> > で初期化したのちに
> 初期化したあとに、コンテナを再起動しましたでしょうか?
> コンテナを再起動したあとの
> "iptables -L" コマンドの結果はどうなっていますでしょうか。
>

佐藤です。

以前貼っていただいたftp コンテナのconfファイルは
以下のようになっていますが、 20番ポートもadd_portsする必要があるかと思います。

set_image localhost/{{PROJECT}}:latest
 
add_volumes /sys:/sys
add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro
add_volumes /var/app/volumes/{{PROJECT}}:/vol_data
 
add_args -it
add_ports 21:21 21100-21110:21100-21110
# add_args --env=PASV_ADDRESS="192.168.7.96"
add_args --env=PASV_ADDRESS="192.168.10.100"
 
add_armadillo_env
add_volumes /var/app/volumes/shared/image:/var/local
add_volumes /var/app/rollback/volumes/vsftpd.conf:/etc/vsftpd/vsftpd.conf:ro
 
# set_command bash /vol_app/src/main.sh

佐藤様

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

ひとまず20番も追加しましたが接続できないままです。
取説6.9.8.2. FTP サーバを構築する
を参考に作成したものになります。

set_image localhost/{{PROJECT}}:latest
 
add_volumes /sys:/sys
add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro
add_volumes /var/app/volumes/{{PROJECT}}:/vol_data
 
add_args -it
add_ports 20-21:20-21 21100-21110:21100-21110
# add_args --env=PASV_ADDRESS="192.168.7.96"
add_args --env=PASV_ADDRESS="192.168.10.100"
 
add_armadillo_env
add_volumes /var/app/volumes/shared/image:/var/local
add_volumes /var/app/rollback/volumes/vsftpd.conf:/etc/vsftpd/vsftpd.conf:ro
 
set_command bash /vol_app/src/main.sh

at_makoto.sato

2025年7月9日 9時32分

佐藤です。

> ひとまず20番も追加しましたが接続できないままです。
eth0につないだカメラ内には何かFTP接続に失敗してるエラーは出てますでしょうか。
あるいは、armadilloとpcをLANで接続して、ftpコマンドで "ftp 192.168.10.100" とするとどのようなエラーが出ますでしょうか。

佐藤様

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

カメラ側のエラーは以下になります。テスト送信を実行した際の
Failed to connect the test server.
またPC側で実行したら
PS C:\Users\AC477> ftp 192.168.10.100
> ftp: connect :接続が拒否されました
になります。

宜しくお願い致します。

佐藤です。

> またPC側で実行したら
> PS C:\Users\AC477> ftp 192.168.10.100
> > ftp: connect :接続が拒否されました
ありがとうございます。ポートが開いていないか vsftpd が起動していないかだと思われます。
PC上でATDEは動かせる状況でしょうか。
もしATDEを起動できるのであれば、ATDE上から以下を実行してもらえますでしょうか。
これでポートが空いているかどうか確認できます。

[ATDE]$ sudo apt install nmap
[ATDE]$ nmap -sT 192.168.10.100

また、main.shの中でvsftpdを起動していると推察しますが、
armadillo上で以下を実行したときの結果はどうなってますでしょうか。

[armadillo]# # ps ax | grep vsftpd

佐藤様

お世話になっております。
PS C:\Users> nmap -sT 192.168.10.100
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-09 10:38 東京 (標準時)
Nmap scan report for 192.168.10.100
Host is up (0.0019s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
8080/tcp open http-proxy
58080/tcp open unknown
MAC Address: 00:11:0C:35:01:A2 (Atmark Techno)

ATDE上ではないのですが問題ないでしょうか?
PCから1対1でarmadilloと接続し確認したところ
portが空いてないようですね

以下コマンドはコンテナ内で間違いないでしょうか
ps ax | grep vsftpd
出力ができていないため
起動できなくなっているようです

docker file 内で
CMD ["/usr/sbin/vsftpd", "/etc/vsftpd/vsftpd.conf"]
実行していました。
Dockerfike

ARG ARCH
FROM docker.io/${ARCH}/alpine:latest
LABEL version="2.0.0"
ARG PRODUCT
COPY resources [r]esources_${PRODUCT} /
ARG PACKAGES
RUN apk update && apk upgrade \
&& apk add --no-cache ${PACKAGES} 
 
RUN adduser -D -u 1000 -h /var/local atmark && \
    echo "user:pass" | chpasswd  && \
    mkdir -p /var/local/get_image && \
    chown -R atmark:atmark /var/local/get_image && \
    chmod 755 /var/local/get_image
 
EXPOSE 20 21 21100-21110
 
CMD ["/usr/sbin/vsftpd", "/etc/vsftpd/vsftpd.conf"]

一度main.sh での起動するように切換をしイメージを作成しSWUインストールしようと思います。

宜しくお願い致します。

> 佐藤です。
>
> > またPC側で実行したら
> > PS C:\Users\AC477> ftp 192.168.10.100
> > > ftp: connect :接続が拒否されました
> ありがとうございます。ポートが開いていないか vsftpd が起動していないかだと思われます。
> PC上でATDEは動かせる状況でしょうか。
> もしATDEを起動できるのであれば、ATDE上から以下を実行してもらえますでしょうか。
> これでポートが空いているかどうか確認できます。
>

> [ATDE]$ sudo apt install nmap
> [ATDE]$ nmap -sT 192.168.10.100
> 

>
> また、main.shの中でvsftpdを起動していると推察しますが、
> armadillo上で以下を実行したときの結果はどうなってますでしょうか。
>

> [armadillo]# # ps ax | grep vsftpd
> 

佐藤です。

> 以下コマンドはコンテナ内で間違いないでしょうか
> ps ax | grep vsftpd
> 出力ができていないため
> 起動できなくなっているようです
" 3 root 0:00 vsftpd /etc/vsftpd/vsftpd.conf"
のような出力がないのであれば起動していないと思います。
念の為の確認ですが、コンテナ内で手動で "vsftpd /etc/vsftpd/vsftpd.conf" を実行すると
起動しますでしょうか。

佐藤様お世話になっております。

main.sh にて
vsftpd /etc/vsftpd/vsftpd.conf 
を実行するようにしたところ起動が確認できるようになりました。
またportが空いているのを確認できるようになりました。

Nmap scan report for 192.168.10.100
Host is up (0.0026s latency).
Not shown: 996 filtered tcp ports (no-response)
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
8080/tcp  open  http-proxy
58080/tcp open  unknown
MAC Address: 00:11:0C:35:01:A2 (Atmark Techno)
 
armadillo:~# ps ax | grep vsftpd
 2459 atmark    0:00 vsftpd /etc/vsftpd/vsftpd.conf
 2599 root      0:00 grep vsftpd

長い間お付き合い頂き誠に有難うございました。

またsshをブロックするコマンドを教えていただきましたが

> [armadillo]# rc-update del sshd
> [armadillo]# persist_file -d /etc/runlevel/sshd
を実行しようとすると
armadillo:~# persist_file -d /etc/runlevels/
boot/       default/    nonetwork/  shutdown/   sysinit/
 
armadillo:~# persist_file -d /etc/runlevels/sshd
Nothing to do, none of the requested files exist: /etc/runlevels/sshd
 
/sshdが存在しないため?ssh接続ができる状態のままになってしまいます。
 
別途設定が必要なのでしょうか?
 
また解除する際はhttps://armadillo.atmark-techno.com/forum/armadillo/24627
に記載されている以下で問題ないでしょうか?
[armadillo ~]# rc-update add sshd
[armadillo ~]# persist_file /etc/runlevels/default/sshd

お手数ですが解決方法をご教授いただけると助かります。

> 佐藤です。
>
> > 以下コマンドはコンテナ内で間違いないでしょうか
> > ps ax | grep vsftpd
> > 出力ができていないため
> > 起動できなくなっているようです
> " 3 root 0:00 vsftpd /etc/vsftpd/vsftpd.conf"
> のような出力がないのであれば起動していないと思います。
> 念の為の確認ですが、コンテナ内で手動で "vsftpd /etc/vsftpd/vsftpd.conf" を実行すると
> 起動しますでしょうか。

佐藤です。

> またsshをブロックするコマンドを教えていただきましたが
> 別途設定が必要なのでしょうか?
すいません、コマンドがファイルパスが間違っておりました。
正しくは "persist_file -d /etc/runlevels/default/sshd" になります。

>
> また解除する際はhttps://armadillo.atmark-techno.com/forum/armadillo/24627
> に記載されている以下で問題ないでしょうか?
> [armadillo ~]# rc-update add sshd
> [armadillo ~]# persist_file /etc/runlevels/default/sshd

はい、こちらで問題ありません。

佐藤様

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

sshブロック及び解除が問題なく行えました。
いろいろとありがとうございました。