FTP経由でのファイルのアップロードに問題があります。ディレクトリを正常に一覧表示できますが、「。htaccess」などのファイルをアップロードしようとすると、STOR .htacess
で約20秒間ハングし、タイムアウトがスローされます。数回再試行しますが、常に失敗します。
FTPクライアントからの完全な出力がファイル転送でどのように見えるかを次に示します。
Status: Connecting to 88.150.168.207:21...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to CodeBuster FTP service.
Command: USER codebuster
Response: 331 Please specify the password.
Command: PASS ********
Response: 230 Login successful.
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Status: Connected
Status: Starting upload of D:\Projects\codebuster\.htacess
Command: CWD /public_html
Response: 250 Directory successfully changed.
Command: PWD
Response: 257 "/public_html"
Command: TYPE A
Response: 200 Switching to ASCII mode.
Command: PASV
Response: 227 Entering Passive Mode (88,150,168,207,155,25).
Command: STOR .htacess
Error: Connection timed out
Error: File transfer failed
Status: Connecting to 88.150.168.207:21...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to CodeBuster FTP service.
Command: USER codebuster
Response: 331 Please specify the password.
Command: PASS ********
Response: 230 Login successful.
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Status: Connected
Status: Starting upload of D:\Projects\codebuster\.htacess
Command: CWD /public_html
Response: 250 Directory successfully changed.
Status: Retrieving directory listing...
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (88,150,168,207,73,43).
Command: LIST
Response: 150 Here comes the directory listing.
Response: 226 Directory send OK.
Command: TYPE A
Response: 200 Switching to ASCII mode.
Command: PASV
Response: 227 Entering Passive Mode (88,150,168,207,222,74).
Command: STOR .htacess
Error: Connection timed out
Error: File transfer failed
Status: Connecting to 88.150.168.207:21...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to CodeBuster FTP service.
Command: USER codebuster
Response: 331 Please specify the password.
Command: PASS ********
Response: 230 Login successful.
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Status: Connected
Status: Starting upload of D:\Projects\codebuster\.htacess
Command: CWD /public_html
Response: 250 Directory successfully changed.
Status: Retrieving directory listing...
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (88,150,168,207,35,185).
Command: LIST
Response: 150 Here comes the directory listing.
Response: 226 Directory send OK.
Command: TYPE A
Response: 200 Switching to ASCII mode.
Command: PASV
Response: 227 Entering Passive Mode (88,150,168,207,109,53).
Command: STOR .htacess
Error: Connection timed out
Error: File transfer failed
これはiptblesがオフになっているため、ファイアウォールの問題ではありません。ファイルのサイズは確かに問題ではありません。ディレクトリインデックスが設定された1行だけだからです。
追記として、これはcodebuster:codebusterが所有するchrotディレクトリであり、権限はdrwxrw-rw-
です。
ここにいくつかの追加の注意事項があります:
vsftpdログの行は次のことを示しています。
Sat Jan 10 14:46:23 2015 240 ::ffff:89.72.176.192 35 /public_html/.htacess a _ i r codebuster ftp 0 * c
、したがって、転送は完了したと主張しますが、そうではありませんでした。
ファイルの削除は正しく機能します
tcpdump port ftp
の概要は次のことを示しています。
100 packets captured
101 packets received by filter
0 packets dropped by kernel
Ftpクライアントでアクティブモードを使用しても状況は変わりません。
まず、セットアップ全体がパッシブモードで機能する場合に備えて、パッシブモードを使用しないようにテストすることをお勧めします。
次に、この行を見てください。
応答:227パッシブモードに入る(88,150,168,207,155,25)。
これは、VPSのIPアドレスにさらに2つの番号を加えたものです。これらをp1とp2と呼びましょう。これらの番号は、「port =(p1 * 256)+ p2」の式に従って、接続する必要のあるポートを示しています。これに基づいて、問題がどこにあるかを確認するために、コンピューターとVPSで同時にネットワークキャプチャを取得することをお勧めします。コンピューターから開始されたがVPSに到達していないパッシブポートで接続が表示される場合は、ローカルネットワークに問題がある可能性があります(VPSの前にファイアウォールがないと言ったように)。パケットがサーバーに到達しても応答しない場合は、サーバーのFTP設定に問題がある可能性があります。
この種の質問に答えるのは、すべての情報がないと難しいことを覚えておいてください。しかし、これがあなたにいくらかのガイダンスを与えることを願っています。
ディレクトリを正常に一覧表示できますが、ファイルをアップロードしようとすると...約20秒間ハングし、その後タイムアウトがスローされます。
ディレクトリリストとファイル転送は同じ基本メカニズムを使用します。つまり、データ接続を開き、データを転送します。あなたの場合、クライアントは、PASVコマンドへの応答内でサーバーによって指定されたアドレスへの接続を開きます。
ディレクトリリストは機能するため、すべてのデータ接続がファイアウォールまたはNATデバイス)によってブロックされる一般的なケースは除外されます。
私はあなたが持っている問題の次の理由を想像することができます:
原因を絞り込むには、次の手順を実行することをお勧めします。
それとは別に、SFTP(SSHを介したファイル転送)を使用することをお勧めします。これは、より安全で(暗号化されたログイン)、問題が少ない(単一の接続のみ、余分なデータ接続がない)ためです。
20000未満のポートへの発信接続のみが許可されているようです。 FTPサーバーのPASV範囲全体で、クライアントでの送信とサーバーでの受信が許可されていることを確認してください。そこに範囲が見つからない場合は、1024〜65535で動作するはずです。
>>> 155*256+25
39705
>>> 73*256+43 #OK
18731
>>> 222*256+74
56906
>>> 35*256+185 #OK
9145
>>> 109*256+53
27957