質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • FTP

    321questions

    FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

サーバーは PASV コマンドへの応答で、FTP 接続が確立されたアドレスとは異なるアドレスを返しました。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 318

aaayii

score 3

以前質問させていただいた、「vsftpd passiveモードでつながらない。」に関連してさらに問題がでたので質問させていただきます。

まず前提として、AWSサーバー/CentOS7を使い、お客さん専用のアカウントを追加しました。
お客さんは独自のシステムから私が作ったCentOSのサーバーに接続して、CSVを取得するというのが最終目標になります。

私の確認では、追加したアカウントにてパッシブでFTP接続は可能です。
コマンドプロント/SSH/WinSCP/FileZillaですべて接続可能でした。
ちなみにCentOSにたてたFTPサーバーはvsftpdです。

そして問題はFFFTPで、接続をしようとしてもつながりません。
ただ「PASVで返されるアドレスを無視」にチェックを入れると接続成功し、ファイル一覧が表示されました。

さらにお客さんの独自のシステムからも接続できないと言われました。
その時以下のエラーが出るそうです。

.................................................................................

「2018/06/18 13:51:29,エラー,サーバーは PASV コマンドへの応答で、FTP 接続が確立されたアドレスとは異なるアドレスを返しました」

..............................................................................

つまり、クライアントツールである、FFFTPで「PASVで返されるアドレスを無視」にチェックを入れたことと同じことを、CentOSのvsftpdに設定できる方法を教えて頂きたいです。
いろいろ調べてましたが、うまく解決することができませんでしたので、今回投稿させていただきます。
下記現在のvsftpdの設定を記載いたします。

よろしくお願いいたします。

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
allow_ftpd_full_access
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log//var/log/vsftpd.log
xferlog_std_format=NO
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
seccomp_sandbox=NO
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/username
ls_recurse_enable=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
allow_writeable_chroot=YES

pasv_promiscuous=YES
pasv_min_port=40000
pasv_max_port=50000
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

実際にAWS 上で試したところ、次の設定をすると PASV で通りました。(WinSCP のログで見ても、Entering Passive Mode で EIP が返ってきています)
listen=YES
listen_ipv6=NO
pasv_addr_resolve=NO
pasv_address={Elastic IP}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/22 16:42

    解決しましたー!!!!!!!!!!!!!!!
    ありがとうございます!!!

    キャンセル

+1

おそらく AWS の EC2 に、パブリック IP を割り当てているのだと思います。
が、この場合であっても、EC2 のインスタンスは、自身のプライベート IP アドレスを返してきます。
これは実際に EC2 のインスタンスにログインしてから、ifconfig を見てみると分かります。

※これが「PASV コマンドへの応答で、FTP 接続が確立されたアドレスとは異なるアドレスを返す」です

vsftpd.conf 内の

 pasv_address — Network Address Translation (NAT) ファイアウォールの背後にあるサーバーの
パブリック用 IP アドレス向けに IP アドレスを指定します。
これにより、vsftpd はパッシブモード接続用の正しい返信アドレスを渡すことができます。
この指示文にはデフォルト値はありません。 


を使って、パブリックIPを返すように指定すればうまくいくかも知れません。

こちらも参照ください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/22 09:24

    ご回答ありがとうございます。
    vsftpd.confの一番下に、「pasv_address=**.***.**.**」とIPv4 パブリック IPを指定しました。
    FFFTPで、「PASVで返されるアドレスを無視」にチェックを入れずに接続を試みましたが、できませんでした。何かおっしゃっていただいた内容を僕が完全理解できていないからかもしれませんが。

    また「EC2 のインスタンスにログインしてから、ifconfig」は、awsのec2管理ページの日本語で言うとどの項目でしょうか
    よろしくお願いいたします。

    キャンセル

  • 2018/06/22 09:52

    立て続けで申し訳ございません。
    pasv_addressを指定して、FFFTPで接続した際、「ダウンロードのためにホスト 0.0.0.0(ポート番号)に接続しています.(TCP/IPv4)」と表示され、ファイル一覧取得も失敗し接続できませんでした。
    ちなみに、EC2でのIPv4 パブリック IPとEIPは同じです。

    キャンセル

  • 2018/06/22 09:52

    conf を書き換えた後、vsftpd を再起動しないと駄目ですが、そこは大丈夫ですよね。
    あと、vsftpd.conf の設定部分は、
    pasv_address=xxx.yyy.zzz.aaa
    のように、途中に空白を入れてはいけませんがそれも大丈夫でしょうか。

    https://qiita.com/dogyear/items/289b314db9af42e15cfa
    ここがずばり書いているようなのでご参考に。

    あと ifconfig は、vsftpd.conf を書き換えられていると言うことは、SSH ログインができているはずです。
    そのコマンドライン上で ifconfig コマンドを実行してください。

    キャンセル

  • 2018/06/22 10:00

    今一度確認しました。
    スペースを空けず、変更後再起動もしました。
    しかし、「ダウンロードのためにホスト 0.0.0.0(ポート番号)に接続しています.(TCP/IPv4)」と逆にIPが何も帰ってこないです.......汗
    そもそもEC2でのIPv4 パブリック IPとEIPは同じでも問題はないでしょうか。

    キャンセル

  • 2018/06/22 11:37

    EC2 で パブリックIP を割り当てる=EIP の割り当てなので、そこは問題ありません。
    アドレスが正しく返らない、ということは、pasv_addressの指定は生きているけど、値が正しくないのだと思います。
    もしかすると、
    pasv_addr_resolve=YES
    pasv_address={パブリックDNS}
    ではどうでしょう。※パブリックDNSは、AWS EC2 コンソールで、インスタンスに割り当てられている ec2-~.amazonaws.com となっているやつです

    キャンセル

  • 2018/06/22 12:28

    現在は下記設定で接続をしました。
    どのFTPクライアントツールでも「0.0.0.0(ポート番号)に接続しています.(TCP/IPv4)」と表示され接続できません。
    ちなみにですが、pasv_addressのところをコメントアウトすると、WinSCP/FileZillaは接続できます。
    FFFTPは相変わらず、「PASVで返されるアドレスを無視」にチェックを入れないと接続できません。

    pasv_promiscuous=YES
    pasv_min_port=40000
    pasv_max_port=50000
    pasv_address=ec2-~.amazonaws.com
    pasv_addr_resolve=YES
    pasv_enable=YES

    キャンセル

  • 2018/06/22 15:39

    別回答に書きました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • FTP

    321questions

    FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

  • トップ
  • FTPに関する質問
  • サーバーは PASV コマンドへの応答で、FTP 接続が確立されたアドレスとは異なるアドレスを返しました。