ftp接続でのpassive modeの切り方

ftpを使ってのデータのやりとりで、ファイアーウォール等では20番及び21番ポートを開けているにもかかわらず、何故かデータの送受信が出来ないことがある。
最初の接続及びユーザー名を使っての認証までは行えるのに、データを送る(もしくは受け取る)操作(getもしくはput)をしても
ftp: connect: Connection timed out
と出てしまい送受信が出来ない。
こんな時はPassive Modeになっているのではないだろうか?
実際私も職場と現場のサーバー同士でデータの送受信を行おうとして上手くいかなかったことがあり、そういう時は決まってPassive Modeになっていた。
Passive Modeで送受信する時は使われるポートがその時の環境で変化するために、場合によってはファイアーウォール等で閉じてあるポートを使うことになり、当然ながらパケットが通らずにタイムアウトを起こすことになる。
#Passive Modeの場合はlsコマンド等の結果が返ってくるポートも不定なので同様にタイムアウトを起こしてしまう。
この場合はPassive Modeをオフにすることでftpクライアントはデータ転送に20番ポートのみを使うようになるので、問題無くデータを送受信できるようになる。
Linux標準のftpクライアントでは
ftp>Passive off
としてやることでPassive Modeをオフにすることが出来る。
Windows用のクライアントソフトの場合はソフトにより設定の方法が異なるので、ここでは書かないけど、大抵はPassive Modeをオフにすることが出来る筈(Windows7のコマンドプロンプトで使えるftpクライアントではpassiveコマンドが無くて設定できなかった)。
接続もログインも出来るのにデータの送受信でタイムアウトになる場合はお試しあれ。

←クリックしてくれると嬉しいです。
【広告】

コメントを残す