vsftpd-linux を使用して Azure 仮想マシンでパッシブ FTP を実行する

vsftpd-linux を使用して Azure 仮想マシンでパッシブ FTP を実行する

Azure Linux 仮想マシンでパッシブ FTP サーバーを実行する方法は?

Azure ファイアウォールと PASV ポートのエンドポイントを構成するだけでは不十分で、クライアントが「パッシブ モードに入る」状態でハングします。

答え1

現在、専用サーバーで行う場合と同じようにスムーズにパッシブ FTP を実行することは、次の 2 つの理由により不可能です。1 つは、Azure では現在、サーバーごとに 25 個のエンドポイントしか開くことができない (間違っていたら訂正してください) こと、もう 1 つは、Azure が使用する LAN<-> 仮想 IP 接続です。問題を 1 つずつ見ていきましょう。

Azure は現在、外部仮想 IP から内部ネットワーク アドレス (10.0.0.0/8クラス) にトラフィックを転送する NAT/ファイアウォール/ロード バランサーを実装しています。ifconfig仮想マシンで実行すると、私が何を言っているのかがわかります。1 つのエンドポイントは SSH 用に予約されており、これを無効にしたいとは思わないでしょう。したがって、別のエンドポイントがポート 21 に予約されている場合は、23 個の PASV ポートのみを使用できます (他のサービスをホストしていない場合)。これにより、同時に接続できるクライアントの数が厳密に制限されます。これに同意したら、次に進みましょう。

ポート25003~25006を1つずつ開いた場合は、次の設定を使用して有効にすることができます。

pasv_enable=YES
pasv_min_port=25003
pasv_max_port=25006

vsftpdそして、他の FTP サーバーはPASV基本的に「ポート AA で XYWZ に接続」というコマンドを発行します。どの FTP サーバーも、ネットワーク アドレスを取得するためにマシンの構成を読み取ることになっています。これが、vsftp が基本的に「ポート 25003 で 10.XYZ に接続」というコマンドを発行し、クライアントがハングアップする理由です。

vsftpdに別の外部アドレスを使用するように指示するには、以下を使用します。

pasv_addr_resolve=YES
pasv_address=dom.cloudapp.net

テストし、動作させ、コミュニティと共有しました。

注: アクティブ FTP は、クライアントがファイアウォールや万里の長城の背後にいなければすぐに機能します。また、SFTP は FTP の最適な代替手段ですが、残念ながら多くのレガシー アプリケーションはこれをサポートしていません。

関連情報