Fritzbox NAS への FTPS 接続が失敗します - EPSV / PAS ポートの変更が原因でしょうか?

Fritzbox NAS への FTPS 接続が失敗します - EPSV / PAS ポートの変更が原因でしょうか?

USB HDD を接続した FRITZ!Box 3490 を NAS サーバーとして使用しています。FTP 通信用に特定のポート (32753) を設定しました。静的な静的サーバー名 (u**********u.myfritz.net) を確保するために、myFritz をアクティブ化して設定しました。

ローカルに接続されていないラップトップから WinSCP 経由で NAS にアクセスすると、NAS へのアクセスは正常に機能します。

しかし、Web スペースのリモート サーバーを介して NAS にアクセスしようとすると、EPSV または PAS コマンドの後に接続が失敗します。

ターミナルは次のとおりです。

$ curl -v --ftp-pasv --ssl -k -u speedITBackup 'ftp://u**********u.myfritz.net:32753/Backup/Superfein/'
Enter host password for user 'speedITBackup':
*   Trying 92.218.125.113...
* TCP_NODELAY set
* Connected to u**********u.myfritz.net (92.218.125.113) port 32753 (#0)
< 220 FRITZ!Box3490 FTP server ready.
> AUTH SSL
< 501 Use AUTH TLS for secure control connection.
> AUTH TLS
< 234 Authentication method accepted
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, [no content] (0):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* Server certificate:
*  subject: CN=u************u.myfritz.net
*  start date: Dec  9 12:27:41 2022 GMT
*  expire date: Jan 15 12:27:41 2038 GMT
*  issuer: CN=u**********u.myfritz.net
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> USER speedITBackup
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 331 Password required for speedITBackup.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PASS **************
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 230 User speedITBackup logged in.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PBSZ 0
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 200 ok
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PROT P
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 200 Data channel will be secured
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PWD
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 257 "/" is current directory.
* Entry path is '/'
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> CWD Backup
* ftp_perform ends with SECONDARY: 0
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 250 CWD command successful.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> CWD Superfein
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 250 CWD command successful.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> EPSV
* Connect data stream passively
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 229 Entering Extended Passive Mode (|||60770|)
*   Trying 92.218.125.113...
* TCP_NODELAY set
* Connecting to 92.218.125.113 (92.218.125.113) port 60770
* connect to 92.218.125.113 port 32753 failed: Connection refused
* Failed to connect to u***********u.myfritz.net port 32753: Connection refused
* Failed EPSV attempt. Disabling EPSV
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PASV
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 227 Entering Passive Mode (92,218,125,113,230,160)
* Skip 92.218.125.113 for data connection, re-use u************u.myfritz.net instead
*   Trying 92.218.125.113...
* TCP_NODELAY set
*** Connecting to 92.218.125.113 (92.218.125.113) port 59040**
* connect to 92.218.125.113 port 32753 failed: Connection refused
* Failed to connect to u**************u.myfritz.net port 32753: Connection refused
* Closing connection 0
* TLSv1.3 (OUT), TLS alert, [no content] (0):
* TLSv1.3 (OUT), TLS alert, close notify (256):
curl: (7) Failed to connect to upfamnsqwzodew4u.myfritz.net Port 32753: Connection refused

ここで何が起こっているのかわかりません。EPSV コマンドと PAS コマンドを使用すると、FRITZ!Box は新しいポート (60770 / 59040) を送信しているように見えますが、その後古いポートに接続しますか?

問題はサーバー側にありますか、それともクライアント側にありますか?

この通信を機能させる方法はありますか? おそらく FRITZ!Box の設定を通じてでしょうか?

Cygwin を使用して fritzbox にアクセスしようとしましたが、結果は次のとおりです。

$ curl -vvv --ftp-pasv --ssl -k -u speedITBackup 'ftp://u********u.myfritz.net:32753/Backup/Superfein/'
Enter host password for user 'speedITBackup':
*   Trying 92.218.125.113:32753...
* connect to 92.218.125.113 port 32753 failed: Timed out
* Failed to connect to u*************u.myfritz.net port 32753 after 21110 ms: Timed out
* Closing connection 0
curl: (28) Failed to connect to u************u.myfritz.net port 32753 after 21110 ms: Timed out

答え1

Android TV と Fritzbox 3490 に x-plore をインストールしました。また、Fritzbox smb ftp の USB 上の HDD を使用して、テレビで映画を視聴しました。

突然、x-plore から FTP 接続へのタイムアウトが発生しました。なぜこのようなことが起こるのか、何か考えはありますか? 設定は何も変更していません...

答え2

私は FRITZ!Box 7520 を持っており、FTP サーバーも実行しています。ローカル LAN からだけでなく、外部からもアクセスしています。Android では Total Commander + FTP プラグインを使用しています。myFritz も使用しています。

FTP には 3 つの種類があります。

  1. 暗号化されていない FTP (複数のポートを使用)
  2. FTPS (セキュア FTP、複数のポートを使用)
  3. SFTP (SSH 経由の FTP、1 つのポートを使用)

FRITZ!Box は 1 と 2 のみをサポートしています。SFTP は 1 つのポートしか必要としないため、ファイアウォールに関してはこれが最も簡単なオプションであるため残念です。

curl コマンドは FTPS を使用しています。接続はできますが、ファイルを一覧表示しようとすると、パッシブ モードに入ることができないため失敗します。

このログ行は疑わしいです:

*** Connecting to 92.218.125.113 (92.218.125.113) port 59040**
* connect to 92.218.125.113 port 32753 failed: Connection refused

ポート 59040 に接続しようとしましたが、ポート 32753 への接続に失敗したと表示されます。これは curl のバグのように見えます。

以下を実行してください:

curl --version

私のは 7.74.0 です。このバージョンに近いものであれば何でも大丈夫です。運が良ければ curl を更新するだけで済みます。

以下のことも試すことができます:

  • ローカル LAN で同じ curl コマンドを使用して、成功するかどうかを確認します。たとえば、Windows で実行するには、cygwin を使用できます。
  • 成功したら外から試す
  • curlの代わりにwgetを使用する

編集:コメントで、ホスティング会社が49152から65534の間の送信ポートをブロックしているとおっしゃっていました。これらのポートは、以下で読むことができるように、ダイナミック、プライベート、またはエフェメラルと呼ばれます。ウィキペディアしかし、これらのポートだけをブロックして、他のすべてのポートを許可することが理にかなっているかどうかはわかりません。

以下のスクリーンショットは、FRITZ!Box FTP 設定を示しています。パッシブ モード ポートを変更することはできないようです。変更できるのはメイン ポートのみです。

問題を解決するには、次の方法があります。

  • 別のホスティング会社に切り替える
  • プロキシを使用する(curl はプロキシをサポートしています)
  • FTPサーバーを実行するRaspberry Piを使用する
  • アクティブモードを使用する

ここに画像の説明を入力してください

関連情報