• ベストアンサー

FTP通信がおかしい

自宅のパソコンWindows2000ServerのIISでFTPサーバを構築しました。 外部インターネット環境でコマンドプロンプトからログインし、テキストファイルのアップロードが無事に行えることを確認することができましたが、なんだか変なことがいくつかあります。 (1)かなり高い確率で、コマンド入力後(put *、dir等)、固まってしまい、反応がなくなってしまう(テキストファイルの場合、サイズが小さいためか成功することが多いがワード等大きいものの時よく起こるようです、その場合FTPディレクトリには0バイトのファイルがアップされています) (2)アクセス拒否されてしまうことがある(読み取りも書き込みもOKにしています) 何かご存知の方いらっしゃいましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nipotan
  • ベストアンサー率59% (134/227)
回答No.2

「外部インターネット環境」は「NAT 下」、乃至は「ファイヤウォール下」の環境じゃないですか? 基本的に Windows 環境にある ftp コマンドは、「アクティブモード」しか受け付けません。 要するに、FTP サーバ側から、IP マスカレード下にあるノードに対して、データ転送のセッションを張る事が出来ていない (うまくいってない) 可能性が考えられます。 アクティブモードの PORT コマンドは、平文でセッションを受け付ける自らの IP アドレスを指定してサーバに送るんですが、オモテに出ているルータから要求のノードの NAT 変換は行われますが、PORT コマンドで指定する IP アドレスやポートは、プライベートアドレスであり、ローカルノードの開放ポートのみを申告するので、サーバ側からデータ転送のセッションを張れず (NAT 変換されたセッション元には勿論張るが…) にコケる可能性が高いです。 実際にどこでコケてるか調べるには、debug モードを使ってください。 --- C:\>ftp ftp> debug Debugging On . ftp> open hogehoge.**.jp Connected to hogehoge.**.jp 220 hogehoge.**.jp server (****) ready. User (hogehoge.xx.jp:(none)): hogehoge ---> USER hogehoge 331 Password required for hogehoge. Password: ---> PASS ABCDEFG 230 User hogehoge logged in. ftp> ls -la ---> PORT 192,168,0,123,5,34 --- debug モードでは上記のように、サーバに送信したコマンドを "---> " という矢印の後に表示してくれます。 多分、PORT コマンドを発した時に、レスポンスがかなり遅くなると思います。 その点、UNIX 環境等に存在する ftp コマンドは、パッシブモード (PASV) を実装しているのでクライアントからサーバのデータ転送用ポートに対してセッションを張る事が可能です。 ちなみに、パッシブモードは、Windows に実装できないわけではなく、「Windows の ftp コマンドに実装されていない」ってだけなので、パッシブモードは Windows でも実装できる機能です。 フリーウェア等の ftp クライアントとかでも、パッシブモードに対応しているのがいくつかあります。しかし残念ながら、Windows の ftp コマンドでは、パッシブモードは扱えません。 こういった状況で、FTP が詰まっちゃったら、パッシブモードをお使いになることをお勧めします。

rio_grande
質問者

お礼

nipotanさん、とても詳しいご回答ありがとうございます。 外部インターネット環境は、LAN内からでなくダイヤルアップでつないでいるのでやはり外部からの接続です。固まってしまったように見えたFTPコマンドも、随分待つとアップロードできました。単純にレスポンスが悪かったように感じます。 パッシブモードやアクティブモードに関することは知識として私になかったので大変参考になりました。 ありがとうございました。

その他の回答 (2)

noname#41381
noname#41381
回答No.3

よく言われるのに「PMTUDブラックホール問題」ってのがありますね。 これが原因であればMTU値、RWIN値を変更することで直ります。 変更は例えばNetTuneなどのツールで行ってください。 http://members.tripod.co.jp/mimi1014/

参考URL:
http://www.kjps.net/faq/pmtud.htm
  • 7_11shop
  • ベストアンサー率25% (42/168)
回答No.1

単純に、パソコンのパフォーマンスが悪いのかもしれません。 また、コマンドプロンプトからではなく、 FTPソフトをご使用になられてみてはどうでしょうか。 ひょっとしたら、そのほうがうまくいく可能性もあります。

rio_grande
質問者

お礼

コマンドプロンプトでずいぶん待っているとレスポンスが返ってきました。7_11shopさんのおっしゃる通り、パフォーマンスが悪かったようです。 ご回答ありがとうございました。

関連するQ&A

  • CentOS7 FTPアップロードについて

    はじめてサーバーの構築をしており、ネットで調べながら、本を読みながら構築しているのですが、FTP接続について教えて下さい。 CentOS7でFTPの設定をし、自分のパソコンのFTPソフトから接続して、サーバーのディレクトリを見ることができました(ログインできました)が、ファイルのアップロードができません。。 本を参考にすると、SELinuxを設定するとありましたので、 setsebool -P ftp_home_dir on のコマンドを実行しましたが、 553 Could not create file. というエラーメッセージが出て、アップロードも、ディレクトリ作成もできません。 場所は、var/www/http/ の中です。 home/ユーザー名/ の中ならファイルのアップロードもディレクトリ作成もできます。 SELINUX=enforcing を SELINUX=disabled に変えると書いてあるサイトも有りますが、その設定をすると、サーバーが動かなくなる?という記述もあったりで、できたら他の方法がないのかなと思っていますが、問題のない方法でFTPアップロードをするやり方はありませんでしょうか。 教えて下さい。

  • IIS4.0のFTPサービスについて

    いつも大変お世話になっております。 本日はIIS4.0上のFTPサービスについて質問が ございます。 現在本サービスを使用した運用を検討しており ますが、データの転送(Putコマンド)に関して 質問がございます。 FTPサーバである「A」に対し、クライアントB からログオンします。 このまま「Putコマンド」を使用し、ファイルを 転送した場合の転送先はカレントディレクトリ、 ログオンしたばかりのこの場合、サーバA上に設定 されたホームディレクトリになると理解しております。 そこでご質問なのですが、FTPのコマンドでカレント ディレクトリ以外に対しファイル転送する事は 可能なのでしょうか? 逆にそのような事ができない為、仮想ディレクトリ という機能が存在しているのでしょうか? どなたか知識をおもちの方、ご回答宜しくお願い 致します。

  • FTPコマンドについて

    OSは2000Serverを使っています。コマンドプロンプトから入力するFTPコマンドにつき、二つ質問があります。 (1)ローカル(自分の端末)のあるディレクトリ配下すべてのディレクトリ・フォルダまるごとをFTPでアップロードしたい際、コマンドでなんと入力すればよろしいですか? (mput *ではすべてのファイルを転送するもののディレクトリは転送しないためmkdirでディレクトリを作成し、それぞれにmputするということしかできないのでしょうか?) (2)ログインするとC:に自分がいます。!dirでC直下のディレクトリを見るとたくさんありますが中でもDocuments and SettingsとProgram Filesについてはlcdで場所を移動できません。デスクトップにあるファイルを転送したいときなど、Documents and Settingsの下にいく必要がありますがどうすれば移動できますか?

  • FTPでのディレクトリのアップロード方法とタイムスタンプ

    (1)FTPでのディレクトリのアップロード方法 DOS窓から、FTPコマンドで、FTPサーバーにログインし、putやmputでファイルをアップロードする際に、ディレクトリをアップロードする方法をご存知の方がいらっしゃれば教えてください。 サブフォルダ以下すべて、ディレクトリ構成ごとアップロードしたいと考えています。FFFTP等のツールを使わずにコマンドラインからやりたいと思っています。 (2)FTP時のタイムスタンプ WindowsのクライアントPCから、UNIXのサーバーにファイルをアップロードすると、タイムスタンプがファイルをアップロードした時間に置き換わってしまい、もともとのタイムスタンプが書き換えられてしまいます。タイムスタンプをそのままにしてアップロードすることが可能であれば、教えてください。できれば、コマンドラインからがいいですが、不可能ならFFFTP等のツールを使用しようと思っています。 よろしくお願い致します。

  • ftpコマンドで再帰的にフォルダとファイルを見たい

    コマンドプロンプトのftpコマンドを使用して、あるディレクトリ配下にあるフォルダとファイル一覧を再帰的に見たいです。 「コマンド:dir」では、ディレクトリ配下のフォルダ一覧は見れるのですが、フォルダの下にあるファイルまでは見ることができません。 どなたかご教授頂けるとうれしいです。 よろしくお願いします。

  • FTPの作業をWindows上のバッチでおこないたい

    こんにちは。Windowsは初心者です。 あるファイルを別のサーバーにFTP(PUT)したいと考えています。 コマンドプロンプトからFTPのコマンドをたたくのではなく なにかバッチファイル?のようなもので、中に一連のFTP処理を記述し バッチファイルを起動という形で処理を行ないたいのです。 バッチファイルの作成の方法がわかりません。 またFTPの記述の仕方がわかりません。あるファイルを別のサーバに FTP(PUT)したいだけなのです。またエラーも認知したいとも思っています。 どんな本を読めば分かりますでしょうか? また具体的なコード(バッチに記述するFTPのコード)を知っていましたら 教えて下さい。

  • FTPサーバ(ACOS)にあるファイルをgetコマンドで取得したいです。

    (1)やりたいこと FTPサーバ(ACOS)にあるファイル(CSVファイル)を、クライアントPC(WindowsXP)から「getコマンド」を用いてダウンロードしたいです。 また、「putコマンド」を用いてファイルのアップロードも行いたいです。 (2)質問内容 上記の作業をクライアントPCのコマンドプロンプトより実施したいのですが、どのようなコマンドを入力していけばいいのかが分かりません。 何か分かる方がいらっしゃいましたら、教えてください。よろしくお願いします。 ※実はACOSというものを触ったことがなく、詳しい情報が書けません。(すいません。)

  • FTPで一覧リストを作成し取得(Get)したい

    VBで、FTPサーバに接続し、指定のディレクトリーからいくつかのファイルをダウンロードしています。ダウンロードするファイル数が沢山あり、出来る事なら、そのディレクトリー内のファイル名の一覧リストがほしいのです。DOSコマンドから見るときは、'ls'や'dir'は使えるのですが、一覧の作成ができません。DOSプロンプトからFTPサーバをOPENし、dir > aaa.txt と入力すると自端末のC:\document and Settings\自分のフォルダー配下に、そのaaa.txt は作られるのですが、中身が入ってきません。ファイルの一覧がほしいとき、VBではどのようにコーディングすればいいのでしょうか。教えていただければ本当に助かります。よろしくお願いいたします。

  • ftpの操作について・・・

    最近コマンドをいじるようになりましたが、 ftpでどうもつまづいています。 詳しい方がいましたら、いくつかまとめてお聞きしたいです。 最近ホームページを作ろうと思いまして、日々ftpの努力を致しております。 よろしくお願いします。 質問 (1) ftp時のputコマンドについて、 送り先のフォルダー(ディレクトリー)を指定できないのですか? ftp>put index.html /web 200 PORT command successful 550 /web: Not a regular file と言うエラーになる。 エラー内容 : 要求されたリクエストはアクセス権限やファイルシステムの理由で実行できない ※ほかに何か指定して、使うのですか? (2)ftp時、> が無い時は何を意味しているのですか? たとえば、 ftp>227   (IP) _  ←(ここ) cat時などは、ファイルの内容を書くと思いますが、 使い方が解らないときがあります。 良かったらよろしくお願いします。 (3)webで検索をかけると、ftp時に、LISTやモードを切り替える、passive など、いろんなコマンドがあるのですが、使おうとすると「コマンドが無効です。」 と出たりするのはなぜですか? ※コマンドプロンプトで検索して、?やHelpに無いコマンドで説明してあったりする。 よろしくお願いします。

  • FTPで存在しないファイルをGETしたときの動作について

    皆様 FTPコマンドで、FTPサーバ上に存在しないファイルをGETした場合の動作について教えてください。 Windowsのコマンドプロンプトで、FTPを使い、ファイルを取得しようとしています。 たまたま、取得対象ファイルがサーバ上に存在しない場合、サーバからのステータスコードは550であるのに、0バイトのファイルが保存されてしまいます。 これは、通常の動作でしょうか? (私の知る限り、0バイトファイルを生成するFTPクライアントは無いのですが…) あるいは、何か設定等に問題があるのでしょうか? 設定等に問題が有る可能性があれば、それを教えてください。 ちなみに環境は 【クライアント】 OS:WindowsXP SP2 【サーバ】 OS:Windows2003サーバ FTPサーバ:Microsoft FTP Service(IIS) です。 よろしくお願いします。