現在、Ubuntu 19:10をプライマリオペレーティングシステムとして実行しています。接続をアクティブモードにする必要があるFTPサーバーに接続する必要があります。私はアクティブなftpを有効にすることによって、またコマンドラインを介してFilezillaでこれを試しました。
FTPサーバーに接続できますが、_-d
_フラグをftp
コマンドに渡してデバッグモードで実行すると、ファイルを一覧表示しようとするとエラーが発生します。
これが私の端末ウィンドウのスクリーンショットです。
おそらくpwd
を正常に実行でき、cd
を使用してディレクトリを変更できます。これは、2つのディレクトリの名前がすでにわかっているためです。
私が目にする最初のエラーはこれです:
_ftp: setsockopt: Bad file descriptor
_
に続く:
ftp: setsockopt (ignored): Permission denied
_500 Illegal PORT command
_
_ftp: bind: Address already in use
_
多くのグーグルを行うことから、パッシブモードを有効にする、ファイアウォールをチェックするなど、さまざまな提案を見つけました。ただし、パッシブモードを有効にすると、次の問題が発生します。
同様に、UFW
が実行されていないことを確認しました。
_Sudo ufw status
_
iptables
で何もブロックされていないことも確認しました。通常のFTPサーバーにパッシブモードで問題なく接続できます。接続時にアクティブモードを使用する必要があったのはこれが初めてです。
したがって、私が持っている質問は2つの部分に分かれています。
1。これは私のエンド(クライアント)またはFTPサーバーの問題である可能性がありますか?
2。それが私の問題である場合、何を修正することができますか?
どんな助けでも大歓迎です!
今日のファイアウォールの概念が存在する前に作成されたFTPプロトコルは非常に複雑です。クライアントはコマンドのためにサーバーに接続し、データ転送のために(LIST
コマンドの出力を含みますが、直接にあるPWD
コマンドの出力は含みません)コマンド接続)いわゆるアクティブモードで、接続を開始するサーバー(通常fromポート20からクライアントが選択したランダムなポートへ) 。
これらすべてにより、「ダム」なファイアウォールがPORTコマンドでFTPを機能させることが困難になります。代わりに、PASVコマンドはクライアントにサーバーへの接続を2回開始させます。1つはコマンド用で、もう1つはすべてのデータ転送用です。しかし、問題は逆になりました。これは、IPとポートを含むPASV
コマンドの応答を送信するときにサーバーによって選択されたランダムなポートに対処する必要があるサーバーのファイアウォール側です。
あなたにとっての結果は何ですか?
あなたはパッシブモードを使用できないと述べました:これは通常、FTPのサーバー側が制限された(ローカルまたはネットワークパス上)ファイアウォールの背後にあり、FTPサーバーが出力に対応する一時的なランダムなリスニングポートを開くことを許可する設定がないことを意味しますPASV
コマンドの.
アクティブモードの場合:
あなたが使用しているPORT
コマンドのアドレスが100-64.0.0/10ネットワークにあることに気付きました RFC 6598 にある:
このドキュメントは、キャリアグレードNAT(CGN)デバイスのニーズに対応するために、共有アドレススペースとして使用されるIPv4/10アドレスブロックの割り当てを要求します。
そして
o共有アドレススペースネットワークに関するルーティング情報は、サービスプロバイダーの境界を越えて伝播してはなりません。サービスプロバイダーは、共有アドレススペースに関する着信広告をフィルタリングする必要があります。
o共有アドレススペースの送信元または宛先アドレスを持つパケットは、サービスプロバイダーの境界を越えて転送してはなりません。サービスプロバイダーは、入力リンクでそのようなパケットをフィルタリングする必要があります。
これが、サーバーが500 Illegal PORT command.
を返すと考えられる理由です。クライアントがCGNの背後にあるため、クライアントが外部から到達可能になることは(そのような接続を試みる両側の完全な制御を伴う何らかの困難なしに)不可能です。このFTP PORTコマンドの着信接続を変換および処理するために、どこでも(NATを実行する機器によって)プロビジョニングが行われていない可能性があります。これは、ルーティング不可能なアドレスであるため、サーバーによって拒否されます(ただし、FTPサーバーは同じものしか受け入れないため、より直接的になります。いわゆる FXP転送 を回避するためにコマンド接続で使用されるアドレス、およびFTPサーバーが参照するアドレスとは異なります)。
要するに:
他に投資しなければ解決策はありません:
fTPサーバーにパッシブモードを受け入れさせる権限を適切な人に持っている場合は、それを試してください。
iSPを変更する
ISPにCarrier-Grade NAT=アドレスを与えないでください。その後、ランダムなホームルーター(おそらくISPから提供されたものを含む)は、アクティブなFTPでPORT
コマンドの変換を正しく処理します。
vPNを使用する
これは、それを使用するクライアントを匿名化するための単純な商用VPNであってはなりません。これは、着信トラフィックとFTPプロトコルの正しい処理を許可するために完全に制御できる完全なVPNである必要があります。これは、一部のポートをポート転送することを許可する制限されたものである可能性があり、その場合も同じアドレスとポートに一致するようにクライアント側での構成が必要になります。または、たとえばnf_conntrack_ftp
/nf_nat_ftp
そして、iptablesまたはnftablesを使用して、PORTコマンドをクライアント(FTPで暗号化が使用されていない限り)。
探しているリソースにFTPを使用しない
HTTP、HTTPS、SFTPで利用できるようにします(FTPとは関係なく、SSHに沿っています)...