web-dev-qa-db-ja.com

Windows 7のWindowsファイアウォールによってブロックされたアクティブFTPクライアント

サービスとして実行され、FTPクライアントを含むアプリケーションがあります。アクティブFTPのみをサポートするFTPサーバーに接続する必要があります。ファイルのリストを取得するか、ファイルをダウンロードしようとすると、WindowsファイアウォールがFTPサーバーからの受信接続をドロップします。 (Windowsでこの問題が発生したとは思わないXPまたはWindows Vista。)

アクティブFTPは、サーバーがクライアントへの接続を、クライアントが指定したポートで開くことを要求するプロトコルです。 ( http://slacksite.com/other/ftp.html

Windowsファイアウォールで大きなポート範囲を開いて、FTPクライアントにそれらのポートのみを使用するように強制できることは知っていますが、WindowsファイアウォールがアクティブFTPをネイティブでサポートすることを推測していました。

WindowsファイアウォールでアクティブFTPを自動的に検出し、必要に応じて必要なポートを開くために必要な設定はありますか?プログラムでその設定を変更できますか?

ありがとう。

4
Eli

Windowsファイアウォールの例外リストにポートを追加する代わりに、アクセスする必要があるアプリケーションを追加します。 Windowsファイアウォールは、そのアプリケーションがバインドして、必要なポートを使用できるようにします。

4
Josh Budde

アクティブモードとパッシブモードのどちらの場合も、サーバーは常にデータ接続用にポート20を使用し、クライアントがFTP PORTコマンドを発行したときに指定したポートに接続します。

Windows 7ファイアウォールを見ると、特定のプロトコルタイプ(TCP)の特定のリモートポート(20)から任意のローカルポートへの接続を許可するカスタム受信ルールを作成できるようです。このルールが適用されるローカルおよびリモートのIPアドレスを指定することもできます。

私はWindowsファイアウォールを使用したことがないことを認めざるを得ませんが、それはあなたにとってはうまくいくように思えます。

4
joeqwerty

ファイアウォールがステートフルFTPフィルタリングを実行していることを確認してみましたか?

これを行うには、管理者権限でコマンドプロンプトを開き、次のように入力します。

netsh advfirewallがグローバルなStatefulFtpを有効に設定

それがあなたの問題にまったく影響を与えたとしたら、私は興味があります。

0
Mr Furious

WindowsマシンでFTPサーバーを作成している間、多くの人は%SystemRoot%\ system32\inetsrv\inetinfo.exeを気にしません。

サブネットまたはインターネットから接続にアクセスする前に、アプリケーションがホワイトリストに登録されている必要があります。

まず、これらのポートを許可します:HTTPとFTPの両方で80、20、21。次に、「inetinfo.exe」の例外を追加します

0
Abbas

この問題は、インバウンドルールのトップをより正確に見て解決しました。ファイル転送プログラムと呼ばれる2つのルールがあることに注意してください(1つはTCPともう1つはUDP用)--blocking "c:\ windows\system32\ftp.exe"プログラム。両方を無効にすると、すべてが魅力のように機能しました!ちょうど私の2セント;-)

0
Olivit

Windows XP/Vista/7はすべて、「アプリケーションレイヤーゲートウェイサービス」をアクティブFTPの接続ヘルパーとして使用します。アクティブFTPが機能するためには、このサービスが開始されていることを確認する必要があります。

開始するには:

  1. Windowsの[スタート]ボタンをクリックします。
  2. 検索バーに「services.msc」と入力してEnterキーを押します(Windowsサービスパネルがポップアップします)。
  3. 「アプリケーションレイヤーゲートウェイサービス」が見つかるまで下にスクロールします。
  4. 「ステータス」列を見てください。「開始済み」と表示されているはずです。
  5. 開始されていない場合は、サービス名をダブルクリックしてオプションパネルを表示します。
  6. 「Statup Type」ドロップダウンを「Automatic」に変更します
  7. 「開始」というボタンをクリックします
  8. 「適用」をクリックします
  9. 「OK」をクリックします
0
SiegeX

イントラネットのFTPクライアントに問題があり、その特定のプログラムに対してファイアウォールの例外を作成したくありませんでした。クライアントプログラムを使用して、Active FTPを「Just Work」にしたかったのです。

「アプリケーション層ゲートウェイサービス」を有効にしようとしました(sc start ALG)、「statefulftp」が有効になっていることを確認しました(netsh advfirewall set global statefulftp enable)。これらはいくつかのケースで必要になると思いますが、私には違いはありませんでした。

最後に、ローカルIPから接続fromポート20を開いただけで、アクティブFTPはすべてのプログラムで機能します。

netsh advfirewall firewall add rule name="FTP (active)" action=allow protocol=TCP dir=in remoteport=20 remoteip=localsubnet

Remoteip = localsubnetの代わりに、特定のIPを指定することもできます。

0
mivk