Windows 2008サーバー(R2)にFTPサーバーをセットアップしています。
すべてが正しくインストールされているようですが、FTPクライアントを使用してFTPサーバーにログインできません。
サーバーにデスクトップをリモートで接続でき、DOSコマンドを使用してかなり簡単にログインできます。
しかし、「DIR」のようなコマンドを発行すると、次のようにハングします。150 Opening ASCII mode data connection。
私が調査したすべてのものとファイアウォールポートおよび/またはパッシブ/アクティブモード設定へのポイントを読みました。
ここで私が気になるのは... DOS FTPコマンドを使用する場合、自分のアドレスとして「localhost」を使用する場合にのみ、ログインして「DIR」コマンドを使用できます。
完全なFTP URLを指定すると、ハングエラーが発生します。
「localhost」のURLを指定しても、エラーは発生しません。
これにより、ファイアウォールの問題(またはIIS7の問題でも?)を信じるようになりましたが、どのポートを開く必要があるかわかりません。
Windowsファイアウォールでポート20、21を開いています。また、AWS(Amazon)ファイアウォールでこれらのポートを開きました。
FTPクライアントが、2つのファイアウォールのいずれかによってブロックされている可能性があるいくつかの長いポート番号を使用していると思います。ネットワーク監視ツールを使用して、どのポートが呼び出しているかを確認してみましたが、それを理解することができません。
アイデア、ヒント、トリック、助けはありますか?
FTPサーバーとFTPクライアントは、FTPの「制御チャネル」を使用して、データの転送に使用されるポート(「dir」または「ls」を実行したときのディレクトリリストを含む)をネゴシエートします。したがって、「AWSファイアウォール」がこのチャネルでプロトコルインスペクションを実行していない場合、トラフィックフローを許可するために動的に開く必要があるポートを知ることはできません(これらのポートが使用されなくなったら閉じる)。
ネットワーク監視を使用してどのポートが使用されているかを検出するIMHOは、これらのポートが新しいFTPセッションごとに変更されるため、努力する価値はありません。
あなたがすでにそれを行っていない限り、この問題のトラブルシューティングのベストショットは、FTPサーバーを保護しているファイアウォールでTweakを探して(質問を正しく理解していれば、これは「AWSファイアウォール」です)、そこにあるかどうかを確認することですFTPプロトコルの検査を有効にする任意の「ノブ」です。
ls
コマンドを使用して、UbuntuコマンドラインからUNIX FTPホストサーバーに保存されているファイルを一覧表示しようとすると、同じメッセージが表示されました。 ftp ftp.example.com
を使用してログインでき、プロンプトが表示されたらユーザー名とパスワードを入力できました。しかし、150 Opening ASCII mode data connection
メッセージが表示され、何も起こりませんでした。次に、コマンドでオプション-p
(ファイアウォールに対応するために「パッシブ」モードに変更)を入力するだけで、コマンドが機能しました。
ftp -p ftp.example.com
プロンプトが表示されたらユーザー名とパスワードを入力すると、ls
やcd
などのコマンドが機能します。このコマンドを入力しても同じことができると思いますが、テストはしていません。
pftp ftp.example.com
質問がWindowsに関係していることは知っています。ただし、同じエラーが発生したことを考えると、このヒントは投稿する価値があると考えられました。
接続がスタックしている理由に関する実際の情報を取得するには、すべてのプロトコルコマンドをログに記録するクライアントを使用して、実際に何が起こっているのかを確認する必要があります。ログにサンプルログがあるFTPの適切なサイト here があります。
おそらく、どちらか
SSLを使用している場合の唯一の答えは、ファイアウォールでポートの範囲(たとえば、10000-11000)を開き、FTPサーバーを構成してパッシブモードを強制し、そのポート範囲を使用することです。サーバーがNAT=を使用している場合、サーバーがクライアントにアドバタイズするために適切なIPアドレスを設定する必要があります。ほとんどの場合、サーバーがパッシブモードの接続文字列として提供するものに従ってください。サーバーはそれが10.1.1.1だと思っています。それがクライアントに伝えることです。
SSLを使用していない場合、最良の答えは、ファイアウォールでFTPのプロトコル検査を実行できるかどうかを確認することです。ファイアウォールはポート21のトラフィックを読み取り、サーバーが開くポートを開きます。これは多くの場合、NAT=アドレスも修正できます(ファイアウォールがNATも処理している場合)。FTPを設定する方法を知らない人もいるので、おそらくまだパッシブモードを強制したいでしょう。クライアントは正しく、ほとんどすべての人が最近ブロードバンドルーター/ファイアウォールの背後にいます。
よりスマートなファイアウォールを取得できない場合は、「ポートの束を開く」オプションを使用する必要があります(または、sshのsftpなどのランダムなポートの束を開く必要のないプロトコルに切り替えます)。
私はこの問題を抱えていましたが、次のようにして解決しました。
私はデフォルトでパッシブモードで接続するFireFTPを使用していました。 IISでFTPを設定する場合、デフォルトのポートは21になります。ファイアウォールでポート21を開く必要があり、さらに段階が上がりましたが、でハングしました。 ASCIIモードのデータ接続を開いています。
判明した後、他のいくつかの動的ポートを選択します。 FTPがオフのファイアウォールで問題なく接続されているので、それがファイアウォールの問題であることを知っていました。また、サーバー上でローカルに-問題はありません。
修正するには、ツリーのserverレベルでIIS(バージョン8.0を使用して、7.5でも同じだと信じています)をロードしました(それがトップノードです)それをシングルクリックして、「FTP Firewall support」を選択してください。使用する各FTPサイトはこれらのポート範囲を使用し、個々のFTPサイトはこのセクションから継承されているため、このオプションはグレー表示されます。
データチャネルポートの範囲で、xポートの数を指定します。私の場合は10000-10125。
次に、ファイアウォールでTCPポートの範囲を「FTPパッシブポート範囲」として開きます。
その後、問題は解決すると思ったが、完全には解決しなかった。 Microsoft FTPサービスサービスを再起動して、新しいポート範囲を取得してください。 FireFTP /クライアントを閉じて、再試行します。今度は、運が良ければそれを実行します。:)
サーバーの時刻同期を確認する
私にとっての問題は、リモートホストではなくローカルPCにありました。リモートホストへのFTPサービスのインストールで、サーバーファイアウォールの必要なすべてのポートが既に適切に開かれていることを確認しましたが、これは問題ではありませんでした。一緒に遊んでいなかったのは私のローカルクライアントPCでした。そう、
これでようやくこれが修正されました! LSコマンドを再試行すると、応答は瞬時になり、ハングアップはなくなりました。
セットアップで何も台無しにしないでください
セキュリティが強化されたWindowsファイアウォールに送信規則を追加し、ポート番号20を配置するだけです。
CLIでFTPを楽しむ
私はあなたと同じ問題を抱えており、今は修正されています。
私がしたことは、Windowsファイアウォール(Win7)を開き、[Windowsファイアウォールを介したプログラムまたは機能を許可する]をクリックし、[許可されたプログラムと機能]リストで[ファイル転送プログラム]を見つけて、チェックボックスをオンにします。
完了したら、コマンドプロンプトを開いてFTP X.X.X.Xを入力し、ログインしてからls/dir/get/putを実行します。
しかし、それでもFile ZillaとWebブラウザから接続できませんでした。
この問題は、Windowsファイアウォールの新しい受信の規則ウィザードを使用して解決しました。プログラムを選択し、C:\ Windows\System32\ftp.exe、接続を許可、オプションを確認します。ドメイン、プライベート、パブリック(必要に応じて後で制限できます)、ルールに名前を付ければ完了です。
Ftpサイトにftpして、dirまたはlsが正しく応答することを確認します。
OPと同じ問題が発生しました
200 PORTコマンドが成功しました。
150オープニングASCII=モードデータ接続。
425データ接続を開けません。
Windowsのコマンドラインでパッシブモードを使用しようとすると、上記の問題が発生しました。
資料を検索して、必要な情報を見つけました。
IEは通常パッシブモードを使用しますが、コマンドラインユーティリティ(ftpコマンド)は常にアクティブモードを使用します。
IE=で以前の操作を試しましたが、うまくいきました。問題は解決しました