TLSを使用したFTPは機能せず、pure-ftpdでポートを変更することもできません

TLSを使用したFTPは機能せず、pure-ftpdでポートを変更することもできません

FTP サーバーに問題があり、1 週間以上修復を試みてきました。

私の設定:

  • 私はRaspberry PiでRaspbianを実行しています。
  • 私の FTP サーバーは pure-ftpd であり、次のスイッチを使用して実行しています。

/usr/local/sbin/pure-ftpd -D -C 5 -E -A -H -x -p 35000:36000 -u 0 -y 5:3 -Y 1

  • オプション「--with-tls」を付けてコンパイルしました
  • 使っています明示的なTLS暗号化(暗黙的にも試してみましたが、結果は同じでした)
  • pure-ftpdの-pスイッチで定義されたパッシブポート範囲をポート転送しました。
  • ポート20を21にポート転送しました

私が実行している他のサーバー:

  • サンバサーバー
  • Apache ウェブサーバー
  • カスタム Python ソケット サーバー
  • 内蔵shh/sftpサーバー

no-ip DUCクライアントも実行しています

簡単に言うと、pure-ftpd で私が抱えている問題は次のとおりです。

  • TLSなしのLAN内のFTP(アクティブおよびパッシブ): 動作中
  • TLS(アクティブおよびパッシブ)を使用したLAN内のFTP:動作中
  • TLSなしのWANでのFTP(パッシブ): 動作中
  • TLS を使用した WAN 内の FTP (アクティブおよびパッシブ): 動作しない
  • WANでは機能しないためポートを変更できません

エラー ログと試したことは次のとおりです。

ftptest.net の結果 (FTP(TLS付き)の場合):

........

コマンド: PASV

返信: 227 パッシブモードに入る (192,168,0,4,138,78)

エラー: サーバーは PASV 応答でルーティングできないプライベート IP アドレスを返しました

フォーラムで、-P スイッチを使用して PASV IP アドレスを指定する必要があると読んだので、そのように実行したところ、次の結果が得られました。

返信: 211-サポートされている拡張機能:

...............................

エラー: 改行のない復帰を受信しました

そしてこれはTLS の有無にかかわらず!つまり、-P スイッチはまったく機能しません。

パッシブモードポートが正しいことも指摘しておくべきでしょう(PASVコマンドから取得)

Filezilla ログ (明示的な tls 付き):

コマンド: PASV

レスポンス: 227 パッシブモードに入る (192,168,0,4,138,251)

ステータス: サーバーはルーティングできないアドレスでパッシブ応答を送信しました。代わりにサーバー アドレスを使用します。

コマンド: MLSD

エラー: データ接続を確立できませんでした: ECONNREFUSED - サーバーによって接続が拒否されました

エラー: サーバーによって接続が閉じられました

エラー: ディレクトリリストの取得に失敗しました

-P スイッチを使用する場合:

「サーバーがルーティング不可能なアドレスを送信しました*」がない点を除いて同じです

また、次のコマンドを使用してすべてを許可し(つまりファイアウォールを無効にして)、ファイアウォール(iptables)を操作してみました。

iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

また、デフォルトのポートを変更すると、接続拒否エラーが発生するため、変更できません。

そして今日からまた別の奇妙な症状が出始めました。

ポート 20 を開くと SSH サーバーが取得されるため、ポート 21 を 21 にのみ開くことができます (動作します)。

ログ:

ステータス: 接続済み、ようこそメッセージを待っています... 返信:

SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2

エラー: 応答に有効な応答コードが含まれていません

また、ポート 443、989 から 990 (暗黙の TLS 用) へのポート転送も試し、Raspberry Pi を DMZ ホストとして設定してみました。

注: vsftpd は遅く、セキュア FTP をサポートしていなかったため、vsftpd から切り替えました (Raspberry Pi の 3.x はセキュア FTP サポートでコンパイルする必要がありますが、コンパイル時にエラーが発生しました)。また、proftpd は tls サポートでコンパイルできなかったため使用していません。

/var/log/messages は役に立つ情報を提供しません (ユーザーが tls の有無にかかわらず毎回ログインしていることのみを示します)

本当に困っているので、皆さんが助けてくれると嬉しいです!

答え1

ついに解決しました!私がしなければならなかったのは、パッシブ ポートの範囲を 50000 ~ 51000 から 12000 ~ 13000 に変更することだけでした。これですべてがうまく動作します。現在、私は pure-ftpd を次のように使用しています。

/usr/local/sbin/pure-ftpd -D -C 5 -E -A -H -x -S 192.168.0.4,60 -p 12000:13000 -u 0 -y 5:3 -Y 1 -P &

関連情報