LFTPを使用してサーバーからファイルを転送していますが、残念ながらPORTコマンドを認識しません。サーバーを制御できず(サーバーが何であるか詳細がわかりません)、アクティブモードを使用する必要があります。
これは次のようなコマンドラインです。
lftp -e 'debug 10;set ftp:passive-mode off; set ftp:auto-passive-mode no; ls; bye;' -u user,password ftp://ftp.site.com
これはデバッグ出力です:
<--- 200 Using default language en_US
---> OPTS UTF8 ON
<--- 200 UTF8 set to on
---> OPTS MLST modify;perm;size;type;UNIX.group;UNIX.mode;UNIX.owner;
<--- 200 OPTS MLST modify;perm;size;type;UNIX.group;UNIX.mode;UNIX.owner;
---> USER xxxxx
<--- 331 Password required for xxxxx
---> PASS xxxxxx
<--- 230 User xxxxx logged in
---> PBSZ 0
<--- 200 PBSZ 0 successful
---> PROT P
<--- 200 Protection set to Private
---> PORT 172,16,133,11,146,168
<--- 500 Illegal PORT command
---> LIST
---> ABOR
---- Closing aborted data socket
---- Chiusura del socket di controllo
リモートサーバーがPORTコマンドをサポートしていないため、LFTPはデータソケットへの接続を放棄しているようです。 LFTPがまだポート20に接続できることを納得させる方法はありますか? FTPマニュアルでは明らかに問題ありません。
問題は、FTPサーバーがPORT
コマンドをサポートしていないことではなく(サポートしている)、FTPクライアントが送信しているIPアドレス/ポートが気に入らないことだと思います。 PORT
コマンド。
PORT 172,16,133,11,146,168
...サーバーにアドレス172.16.133.11、ポート37544 *に接続するように指示します。ここで興味深いのはIPアドレスです。これはRFC1918アドレスです(つまりプライベートネットワークアドレス )。これは、FTPクライアントがどこかのLANにあり、publicIPアドレスを使用してFTPサーバーに接続していることを示しています。
そのリモートFTPサーバーはプライベートネットワークアドレスに接続できません。定義上、RFC1918アドレスは公にルーティング可能ではありません。
したがって、FTPサーバーがPORT
コマンドで指定されたアドレス/ポートに接続しようとして失敗した可能性があります。そのため、FTPサーバーは次のようにコマンドを失敗します。
500 Illegal PORT command
PORT
コマンドをそのFTPサーバーで機能させるには、そのサーバーが接続できるpublicIPアドレスを検出する必要があります。クライアントマシンに到達します。このアドレスが1.2.3.4
であるとしましょう。次に、ftp:port-ipv4
オプションを使用して、lftp
コマンドでそのアドレスを使用するようにPORT
に指示する必要があります。
ただし、パブリックIPアドレスはNAT /ルーター/ファイアウォールのアドレスであり、およびそのNAT /ルーター/ファイアウォールは接続を許可しない可能性があります、外界から多数のポート(eg37544)に、LAN内のマシンにルーティングされます。これは、activeFTPデータ転送、ieFTPの問題の1つです。 PORT
(またはEPRT
)コマンドを使用するデータ転送:「ファイアウォール対応」とは見なされません。
お役に立てれば!
*-なぜ146,168
はポート37544に変換されるのですか?
FTPによると RFC959 これらのパラメータは次のとおりです。
(...)16ビットTCPポートアドレス。このアドレス情報は8ビットフィールドに分割され、各フィールドの値は10進数(文字列表現)として送信されます。
146 dec = 10010010 bin = A
168 dec = 10101000 bin = B
A B
10010010 10101000 bin = 37544 dec