[PR]ネットとスマホ OCNでまとめておトク!

FTPで425エラーが出て困っています。
今まで繋がっていたのが突然繋がらなくなりました。
調べてみると20番ポートが遮断されている可能性が高く、
どこで遮断されているか調べる良い方法があれば教えて下さい。

・クライアント
OS:Windows 8.1、ファイアウォール: Norton Inernet Security
・サーバー(AWS)
OS:Red Hat Enterprise Linux Server release 7.1 (Maipo)
ファイアウォール:AWSのネットワークルール設定

接続は出来ていて、lsを打つとエラーになります。
サーバーにTertermでログインしてlocalhostにftpするとlsできるので、
ftpd自体に問題はなさそうです。
また、サーバー側の設定は直しておらず、突如動かなくなったので、
クライアントのファイアウォール設定が変わったのを疑っていますが、
ファイアウォールを一時停止しても解消しませんでした。
どこが悪いか原因を切り分けられるずに困っています。
原因箇所を調べる良い方法があればご教示ください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>FFFTPで繋いでいて拡張オプションのPASVモードにチェックをつけていないのでpassiveモードではないはずですが、



クライアントソフトはActive FTPで接続しようとしているのは間違いないですね。

>WireSharkで見たところ、後ろにPASVと書かれていました。
>Wireshark結果
>3967 345.551600000 52.27.XX.XXX 192.168.0.4 FTP 105 Response: 200 PORT command> successful. Consider using PASV. ← パッシブモードになっている?

良く読んで下さい。単に「Passiveモードでの使用を検討して下さい」というメッセージです。

クライアントソフトはActive FTPで接続しようとしているものの、サーバ側がActive FTPを恐らくサポートしていないので、「Passiveモードに移行してよ」とメッセージを出した。にも関わらずクライアントはPASVコマンドを実行することもなく、LISTコマンドを実行したので「425 Failed to establish connection」、つまり「だぁかぁらぁ、データセション張ってないんだから」と返したわけです。

「Passiveモードでの使用を検討して下さい」というメッセージは柔らかな表現ですが「いいか、俺はPassiveモードしか受け付けないからな。次はPASVコマンドを打てよな。それ以外は知らんからな」と等価です。まぁ、QUITやBINARYやASCII等は受け付けてくれるとは思いますが。

>またサーバーが20番ポートにセッションを張ろうとしている形跡がありませんでした。
>これはPASVモードになっているのでしょうか?

サーバは少なくともPassiveモードしかサポートしていないようです。なので、サーバからクライアントの20/TCPにはコネクションを張らずに、21/TCPでクライアントからのPASVコマンド待ちです。PASVコマンドがクライアントから来れば、21/TCPでEntering Passive Mode (X,X,X,X,A,B)を返しますので、クライアントはサーバの(A*256+B)/TCPポートに対してSYNを送信、所謂3ウェイハンドシェイクでデータセションが繋がるという流れになります。
    • good
    • 3
この回答へのお礼

いつもありがとうございます。
勉強になりました。

vsftpdを見たところ、Acitve 設定はONになっているようにみえました。
port_enable=YES
connect_from_port_20=YES
ftp_data_port=20
port_promiscuous=YES

私の知識では分からず、Activeで繋ぐのは諦め、
サーバーのパッシブモードの設定をONにする方法を調べまして、
無事繋がるようにはなりました。

ありがとうございました。

お礼日時:2015/08/08 02:01

>netstatでも20ポートは表示されていません。

表示されないということはポートが開いていないのでしょうか?

WireSharkでキャプチャしてみることで、サーバが20/TCPでセションを張ろうとしているかどうかは分かります。サーバ側に問題が無ければクライアント側の問題です。
もしかしたら、Passiveモードなのかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
FFFTPで繋いでいて拡張オプションのPASVモードにチェックをつけていないのでpassiveモードではないはずですが、
WireSharkで見たところ、後ろにPASVと書かれていました。
またサーバーが20番ポートにセッションを張ろうとしている形跡がありませんでした。
これはPASVモードになっているのでしょうか?

Wireshark結果
3967 345.551600000 52.27.XX.XXX 192.168.0.4 FTP 105 Response: 200 PORT command successful. Consider using PASV. ← パッシブモードになっている?
Transmission Control Protocol, Src Port: 58191 (58191), Dst Port: 21 (21), Seq: 80, Ack: 289, Len: 6
3968 345.554480000 192.168.0.4 52.27.XX.XXX FTP 60 Request: LIST
Transmission Control Protocol, Src Port: 58191 (58191), Dst Port: 21 (21), Seq: 80, Ack: 289, Len: 6
3969 345.694329000 52.27.XX.XXX 192.168.0.4 FTP 91 Response: 425 Failed to establish connection.
Transmission Control Protocol, Src Port: 21 (21), Dst Port: 58191 (58191), Seq: 289, Ack: 86, Len: 37

サーバー側のtcpdumpを20番で絞ってみたところ、何も出てきませんでした。
21番には通信がありました。
これは、サーバー側が20番ポートに接続に行っていないということでしょうか?
(tcpdump port 20で絞りました。)

よろしくお願いします。

お礼日時:2015/08/07 01:01

「425 Failed to establish connection」というやつでしょうか。



dataコネクションが開けないので、コマンドは入力できますが、その結果は転送できません。dataコネクションはサーバからクライアントに向けて張るセションなので、これが張れないということはクライアント側が受け付けていないということになります。

windowsファイアウォールを止めても状況が変わらないとのことですので、クライアント側のソケットがTIME WAITのまま推移している可能性があります。netstatコマンドで状況は把握できます。
ソケットが解放されるまで待つか、どうしても接続できないのであれば、クライアント側のリブートを検討してみて下さい。
    • good
    • 1
この回答へのお礼

お早い回答ありがとうございます。
425 Failed to establish connection. です。
クライアントは再起動しましたがダメでした。
netstatでも20ポートは表示されていません。表示されないということはポートが開いていないのでしょうか?

よろしくお願いします。

お礼日時:2015/08/05 00:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qftpコマンドを実行すると「425 Can't open connection」とエラーが出ます。

初めて質問させていただきます。

ブラウザでドメイン名を入力するとサーバー側のファイルを参照することができ、
また、FFFTPを用いてもサーバーのファイルを参照することができます。

しかし、コマンドプロンプト上でコマンド(ls)を入力すると「425 Can't open connection」となります。

コマンド「cd」を使ってリモートディレクトリには変更できるもようです。

以上、よろしくお願い致します。

Aベストアンサー

ポートが、ファイアウォールで塞がれているいるために「425 Can't open connection」となる場合があります。
ファイアウォールを一時的に「無効」にして試してみては?
または「コマンドプロンプト」を右クリック「管理者として実行」か「コマンドプロンプト(管理者)」実行

QFTPでタイムアウトになる

RedHatLinuxのサーバ間でFTP転送しようとしています。
例えばAとBとCというサーバがあったとします。
OSは全てRedHatLinuxでAとBは7.1、Cは7.3です。
FTPサーバは全てwu-ftpdです。
FTPコマンドで接続し、putで転送しようとしていて、BからAへの転送は正常にできます。
CからAに行おうとすると、接続は問題無いのですが、ファイル転送の際、数分後に「Connection Timed out」と出てしまい転送できません。
CからBに転送しようとしても同様のエラーでできませんでした。
ちなみにAとB及びCの間にファイアウォールが設定されていますが、BからもCからも通す設定にしていますし、
接続が正常にできるのでこれは問題ないと思うのです。BとCの間にはありません。
アクセス制限によるものかと思いましたが、特に制限していないですし、
一応ftphosts、tpusers、ftpgroupsやhosts.allow、hosts,denyファイルを確認してみたのですが、特に
これと思われるものがありませんでした。
転送するファイルのアクセス権限を色々いじってたので、これが原因かとも思いましたが、
BからAに転送したものと同様に変更してみましたが、ダメでした。
何が原因なのでしょうか。

RedHatLinuxのサーバ間でFTP転送しようとしています。
例えばAとBとCというサーバがあったとします。
OSは全てRedHatLinuxでAとBは7.1、Cは7.3です。
FTPサーバは全てwu-ftpdです。
FTPコマンドで接続し、putで転送しようとしていて、BからAへの転送は正常にできます。
CからAに行おうとすると、接続は問題無いのですが、ファイル転送の際、数分後に「Connection Timed out」と出てしまい転送できません。
CからBに転送しようとしても同様のエラーでできませんでした。
ちなみにAとB及びCの間にファイアウ...続きを読む

Aベストアンサー

#5お礼より
>>PASVをオンにしたらではないでしょうか?
>いえ、やっぱりオフにすると転送できます。
>
そうでしたか。それは失礼しました。
iptablesの設定内容がわからないので、たぶんinは不許可にしているとふんだのですが...^ ^;;

ということで、#6の方もiptablesについて回答されていますが
まずはiptabelsの設定について確認されるといいでしょう。
ipchainsとの比較も含めて以下が参考になると思います。
http://tlec.linux.or.jp/docs/iptables.html


iptables設定については以下のものもいいでしょう。
http://www.atmarkit.co.jp/flinux/rensai/security05/security05a.html


実際に"ip_conntrack_ftp"(NATを使わないならこれだけでOK)を使って
接続の追跡(ステートフルインスペクションなんかと言われます)を行うなら、以下の設定を。
http://www.sns.ias.edu/~jns/security/iptables/iptables_conntrack.html#FTP

参考URL:http://tlec.linux.or.jp/docs/iptables.html

#5お礼より
>>PASVをオンにしたらではないでしょうか?
>いえ、やっぱりオフにすると転送できます。
>
そうでしたか。それは失礼しました。
iptablesの設定内容がわからないので、たぶんinは不許可にしているとふんだのですが...^ ^;;

ということで、#6の方もiptablesについて回答されていますが
まずはiptabelsの設定について確認されるといいでしょう。
ipchainsとの比較も含めて以下が参考になると思います。
http://tlec.linux.or.jp/docs/iptables.html


iptables設定については以下のものも...続きを読む

Q-bash: ftp: コマンドが見つかりません

ftpでファイルを転送したいのですが、現在出来ておりません。
因みにその端末(サーバ)は外部からのftpのやり取りも必要な為、vsftpdをインストールしています。
試しに、コマンドでftpと入力した時に題目のようなエラーが表示されます。

Linuxはまだ経験が殆ど無く、シェルに関してもまだ分かりません。

ftpクライアントのインストールとか必要でしょうか?
それとも何か追加設定が必要でしょうか?

途中のファイアーウォール機器では通過の設定ができております。

教えていただけますでしょうか。
宜しくお願い致します。

Aベストアンサー

echo ${PATH}

として、パス(コマンドサーチパス)を確認してみてください。

その上で、

find / -name ftp -print > /tmp/find.log

として、「ftp」コマンドがどこのディレクトリにあるかを確認してください。
※ エラーメッセージ(~:許可がありません)が出力されますが、無視してください。

cat /tmp/find.log

/usr/kerberos/bin/ftp
/usr/bin/ftp


そのあとで、「/etc/profile」に、「ftp」コマンドが存在するディレクトリを追記してください。

最終行に追加
PATH=/usr/kerberos/bin:/usr/bin:$PATH

いったん、ログアウトしてログインして、パスが追加できてるかを確認してください。
echo ${PATH}

追加できてれば、「ftp」コマンドが使えるようになっているはずです。

Qサーバーに転送したファイルが0kbになってしまうのは、なぜ??

レンタルサーバー上に、ホームページを持っています。
そのホームページを更新しようと、新しいファイルを転送したところ、転送途中でエラーが起きました。
エラーが起きながらも更新ファイルは送られていたのですが、なぜか0kbになっていて、IEで見ると当然ですが真っ白です。
FTPソフトを変えて転送してみましたが、同じ症状が起きます。
最初は、ドリームウィーバーで作ったファイルを、ドリームウィーバーの転送機能を使用して転送しました。
次は、転送だけホームページビルダーの転送機能を使用しました。
今までこの方法でエラーが起きたことはなかったのですが、、、実は1ヶ月前にPCが故障して、今回は修理から戻ってきて初めての転送でした。
PCの設定に何か問題があるのでしょうか?
どなたか、お助けくださいませ!

Aベストアンサー

結構なりますよ。
単に、通信途中でエラーが生じたってやつです。
一旦サーバ上からその0kbのファイルを削除して再送してください。
ちゃんと送れるはずです。

Qftpのmgetコマンドの自分の格納場所の指定方法は?

先日、ftpコマンドについてこのサイトで色々教えていただき感謝しております。

複数のファイルを受信するのにmgetコマンドを教えていただいたのですが、
相手より受信した場所の格納場所の指定が上手くいきません。

先方にFTPとしてログインでき、"PROMPT"→"MGET *"と行うのですが、受信したファイルの格納場所がCドライブの直下になってしまいます。
自分のインターネットサービスマネージャーの
ルートは別のフォルダに設定してあるのですが、これは受信したデータの初期値にはならないのでしょうか?
また、調べたところ省略すると、ワーキングディレクトリに作成されるみたいにかかれていましたが、ワーキングディレクトリはどこかで指定できるのでしょうか?

たとえばC:\AAAに受信したファイルを格納したい場合はどうやって書けばよいでしょうか?

MGET * C:\AAA見たいに色々試して見ましたが、駄目でした。

Aベストアンサー

方法は2つあります。

(1)データを格納するディレクトリに移動してからftpを起動させる。

cd 格納先ディレクトリ
ftp ホスト名
mget *

(2)ftpした後格納するディレクトリを指定する方法

ftp ホスト名
lcd 格納先ディレクトリ(自分のマシン)
mget *


lcd とは、"Local Change Directory" と思っておくと忘れなくていいですよ♪

QシェルスクリプトでFTPの実行結果を取得するには

OS redhat linux
シェル bornシェル

でftpを実行するスクリプトを作っていますが、
ftpの実行結果は取得できるのでしょうか?

ftp -n < ftpCom.txt

宜しくお願いします。

Aベストアンサー

No.1です。補足拝見しました。

直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。

FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、

ftp -nv < ftpCom.txt > ftpLog.txt 2>&1

を例えにとると、このコマンドを実行した後に、
grep ^226 ftpLog.txt > /dev/null
if $? ne 0
then
echo "FTPでエラーが発生しました" >> logfile
exit 1
fi

みたいなことをしていました。grep の引数 ^226 は行頭が226から始まる行を検索、という意味で、grepでマッチする行があった場合は0が戻り値となり、マッチしなければ0以外が戻り値となるので、それを利用していました。

実際の運用では、処理が異常終了したときにlogfileを見て、FTPのエラーだったらさらにftpLog.txtを見る、みたいな感じでした。

なお、FTPサーバが返すコードについては下記RFCの4.2辺りを参照してください。もっとも、サーバによってこれら全てが実装されてるとは限りませんが。

http://hp.vector.co.jp/authors/VA002682/rfc959j.htm

No.1です。補足拝見しました。

直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。

FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、

ftp -nv < ftpCom.txt > ftpLog.txt 2>&1

を例えにとると、このコマンドを実行した後に、
grep ^226 ftpLog.txt > /dev/null
if $? ne 0
then
echo "FTPでエラー...続きを読む

QFTPコマンドでディレクトリごとファイル移動できるコマンドはありますか?

タイトルどおりなのですが、FTPでファイルを転送する際に、サブフォルダを含むディレクトリごとファイル転送するコマンドはありますでしょうか。
ディレクトリの中にあるすべてのファイルを移動したいのですが、サブフォルダがたくさんあるので、わざわざディレクトリの場所へ移動してmputを繰り返すのはめんどうで仕方ありません。
よろしくお願いします。

Aベストアンサー

ご使用になるOS環境が書いてないのですが、Linux,BSD等ならncftpで、get -R dir。
Windowsならffftpを使えば良いと思います。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QコマンドプロンプトでFTPできない

こんばんわ。
題の通りなのですが、コマンドプロンプトで
FTP接続しようとして普段FFFTPで更新している
ファイルをコマンドプロンプトから更新しようと考えたのですが、
相手サーバに接続は出来るのですが、その後コマンドを入力しても
ftp> dir
200 PORT command successful
425 Unable to build data connection: Connection timed out
上記のようになってしまいます。
何か原因があるはずなのですが・・・自分ではわかりませんでした。
もし何かわかる方いらっしゃいましたら助言いただければと思います。
よろしくお願いいたします。
ちなみにOSはXPです。

Aベストアンサー

 同じ問題なのかどうかわかりませんが、以前同様の状況で困ったことがありました。
 最終的に原因は明確にはなっていないのですが、いろいろなサーバ相手に試したところ、目的のサーバにのみログイン後に不安定となりはじかれてしまうという奇怪な現象でした。 つながるサーバとつながらないサーバとの相違はファイアウォールの機種のみ(構成は同じ)でサーバそのものは同一のOSと同一のFTPサーバでした。 目的のサーバは複数の他社サーバが同じネットに同居していたため調査もおぼつかず最終的にあきらめました。 その後、レンタル会社を変更して試したところまったく問題ありませんでした。
 別のサーバ(anonymous)などを使って試してみてはいかがでしょうか。 少なくともローカルマシンの問題なのか、接続先の問題なのかを切り分けできると思います。

Qコマンドプロンプトでftpで接続したのですが

勉強のために、コマンドプロンプトでftpをしたいのです。
マシンは相手も自分もWindowsで、LANでつながっています。

ftp (IPアドレス)
と入力すると、ユーザ名とパスワードを求められ、入力すると、
ftp>
というプロンプトに変わります。

dirと入力すると、ローカルのファイルが表示されると思うのですが、

ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.

と表示されるだけで、ファイルは表示されません。
どうすれば表示されますか。

また、pwdと表示すると相手側のカレントディレクトリが表示されると思うのですが、

ftp> pwd
257 "/" is current directory.

と表示されます。
この"/"が相手のマシン上で実際にどのフォルダなのかは、どうやってわかりますか。

自分のマシンはWindowsXP
相手のマシンはWindows2000

勉強のために、コマンドプロンプトでftpをしたいのです。
マシンは相手も自分もWindowsで、LANでつながっています。

ftp (IPアドレス)
と入力すると、ユーザ名とパスワードを求められ、入力すると、
ftp>
というプロンプトに変わります。

dirと入力すると、ローカルのファイルが表示されると思うのですが、

ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.

と表示されるだけで、ファイルは表示されません。
どうすれ...続きを読む

Aベストアンサー

>「FTP Publishing Service」
それが、IISのFTPサービスです。
それが稼動しているのなら、以下の手続きで確認してみてください。

(1)スタートメニューの中から、管理ツールとかのグループで
「インターネット サービス マネージャ」が見つかればそれをクリックして起動。

(2)見つからない場合、スタートメニューから、「ファイル名を指定して実行」をクリックし、
名前に「%systemroot%\system32\inetsrv\iis.msc」を入力して「OK」をクリックして起動。

(3)「インターネット インフォメーション サービス」のウィンドウが開いたら、
左側のツリーに表示されているサーバ名の左側の「+」をクリックして展開。

(4)「既定のFTPサイト」を右クリックしてプロパティをクリックして開く。

(5)「ホームディレクトリ」タブをクリックして表示し、FTPサイトのディレクトリでパスを確認。

以上ですが、バージョンによっては微妙に文言などが変わる可能性もあります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング