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

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

新規登録して質問してみよう
ただいま回答率
85.49%
FTP

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

Q&A

解決済

2回答

15293閲覧

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

aaayii

総合スコア14

FTP

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

0グッド

0クリップ

投稿2018/06/21 09:58

編集2018/06/21 10:01

以前質問させていただいた、「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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

投稿2018/06/22 06:39

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaayii

2018/06/22 07:42

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

0

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

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

vsftpd.conf 内の

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

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

こちらも参照ください。

投稿2018/06/21 10:15

編集2018/06/21 10:18
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaayii

2018/06/22 00:24

ご回答ありがとうございます。 vsftpd.confの一番下に、「pasv_address=**.***.**.**」とIPv4 パブリック IPを指定しました。 FFFTPで、「PASVで返されるアドレスを無視」にチェックを入れずに接続を試みましたが、できませんでした。何かおっしゃっていただいた内容を僕が完全理解できていないからかもしれませんが。 また「EC2 のインスタンスにログインしてから、ifconfig」は、awsのec2管理ページの日本語で言うとどの項目でしょうか よろしくお願いいたします。
aaayii

2018/06/22 00:52

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

2018/06/22 00:52

conf を書き換えた後、vsftpd を再起動しないと駄目ですが、そこは大丈夫ですよね。 あと、vsftpd.conf の設定部分は、 pasv_address=xxx.yyy.zzz.aaa のように、途中に空白を入れてはいけませんがそれも大丈夫でしょうか。 https://qiita.com/dogyear/items/289b314db9af42e15cfa ここがずばり書いているようなのでご参考に。 あと ifconfig は、vsftpd.conf を書き換えられていると言うことは、SSH ログインができているはずです。 そのコマンドライン上で ifconfig コマンドを実行してください。
aaayii

2018/06/22 01:00

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

2018/06/22 02:37

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

2018/06/22 03: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
tacsheaven

2018/06/22 06:39

別回答に書きました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問