いつもお世話になります。
今日も教えて欲しいことがありまして書き込みさせていただきました。
CentOS4.*系を使用しています。
xineted経由でvsftpdを使用しており、DDNSのためpasvはoffとしてあります。
この状態でSSLをOFFならば問題なく稼働するのですが、SSLの設定をしたとたん、permissionエラーを起こしてしまいます。
原因が分かる方いらっしゃったら教えてください。
解決いたしました。板汚しですいません。
PASVを有効にしないとSSL接続はできないんですね。
ところが今回はvsftpd.cgiがローカルアドレスしか拾ってくれない・・・
と悶々しておりましたが、pasv_addressを記述しなかったところpasvモードで動くようになりました・・・なんででしょう?
とりあえず、原因不明なまま解決です。
> PASVを有効にしないとSSL接続はできないんですね。
> ところが今回はvsftpd.cgiがローカルアドレスしか拾ってくれない・・・
>
> と悶々しておりましたが、pasv_addressを記述しなかったところpasvモードで動くようになりました・・・なんででしょう?
>
> とりあえず、原因不明なまま解決です。
少しすっきりしないので、確認したいのですが・・・。
すっきりしない理由はどこかに書いたはず(BBSかも?)ですが、NATルータ越えでFTP over SSLを動かす場合は、環境条件が厳しく、
1. クライアントがNATルータ配下にいるならPASVしか使えない。
2. 非SSLでもPASVモードで使用するなら、FTPサーバのPASVモードに対応したルータは使えない。
3. 2項の替わりに、PASVモードでのNATルータ対応ができるデーモン(SSL対応は当然)を使用する。
という条件があります。
これらは、下記にあるFTPのデータコネクション設定に関する制御情報内のサーバ/クライアントのアドレスに関係してきます。
http://www.aconus.com/~oyaji/router/ftp.htm
1項は、皆さん気にされてませんが、Activeモードではクライアント側のルータでFTP通信の制御情報をモニタしていて、クライアントが制御情報に設定したクライアントのプライベートアドレスをWAN側のグローバルアドレスに変換してくれているから通信ができるのであって、これがSSL化されるとモニタできなくなるため、サーバに家庭内のプライベートアドレスがそのまま行ってしまうので通信できなくなってしまう。従って、FTP over SSLではPASVしか使用できない。
2と3項はセットの話で、1項と同様の話である。FTPサーバのPASVモードに対応したルータは、1項と同様にサーバからクライアントに通知されるサーバのプライベートアドレスをWAN側のグローバルアドレスに変換している。従って、これらのルータを使う場合は、デーモンでPASV時のサーバのアドレス変換処理(vsftpdならpasv_address)を入れてしまうと、アドレスに矛盾が生じる(プライベートのはずなのにグローバルがくる)ため、デーモンで対策をすると逆にPASVでつながらなくなってしまう。
ところが、1項同様、SSL化してしまうとルータはアドレス情報が暗号化されてしまうため変換処理ができなくなってしまうので、デーモンでPASV時のサーバのアドレス変換処理(vsftpdならpasv_address)が逆に必須となる。
ということで、「pasv_addressを記述しなかったところpasvモードで動くようになりました」というところが、家庭内なら話はわかりますが、NATルータ越えならSSL化できていないとしか思えず、またルータがPASV対応しているのではないかと言う気がするのですが・・・?
> 1. クライアントがNATルータ配下にいるならPASVしか使えない。
クライアントはルータ配下にあります。が、PASV OFFでも接続できてしまいました。
> 2. 非SSLでもPASVモードで使用するなら、FTPサーバのPASVモードに対応したルータは使えない。
corega BAR HXというルータです。
> 3. 2項の替わりに、PASVモードでのNATルータ対応ができるデーモン(SSL対応は当然)を使用する。
表題の通り、vsftpdです。
> > 1項は、皆さん気にされてませんが、Activeモードではクライアント側のルータでFTP通信の制御情報をモニタしていて、クライアントが制御情報に設定したクライアントのプライベートアドレスをWAN側のグローバルアドレスに変換してくれているから通信ができるのであって、これがSSL化されるとモニタできなくなるため、サーバに家庭内のプライベートアドレスがそのまま行ってしまうので通信できなくなってしまう。従って、FTP over SSLではPASVしか使用できない。
なるほど。勉強になります。
> 2と3項はセットの話で、1項と同様の話である。FTPサーバのPASVモードに対応したルータは、1項と同様にサーバからクライアントに通知されるサーバのプライベートアドレスをWAN側のグローバルアドレスに変換している。従って、これらのルータを使う場合は、デーモンでPASV時のサーバのアドレス変換処理(vsftpdならpasv_address)を入れてしまうと、アドレスに矛盾が生じる(プライベートのはずなのにグローバルがくる)ため、デーモンで対策をすると逆にPASVでつながらなくなってしまう。
デーモンでpasv_addressを書きこんでいないにもかかわらずPASV接続dができている=ルータが対応?
> ところが、1項同様、SSL化してしまうとルータはアドレス情報が暗号化されてしまうため変換処理ができなくなってしまうので、デーモンでPASV時のサーバのアドレス変換処理(vsftpdならpasv_address)が逆に必須となる。
SSLにするとルータ対応のSSLは考えられない、ということですね。
でも、接続できてしまっているのですよね...
実際おやじさんのサイトで非SSL状態でFTPテストを行なってみたところ、PASVにチェックを入れて接続が可能ですし、結果ログを見てもPASVは有効になっています。
このままSSL有効にし、FTPテストを行なうと接続できなくなります。
外からはSSLを有効にしたFTPクライアントでないとやはり接続できませんし。
いかがでしょうか?
自分もすっきりしなくなってきました...
> > 1. クライアントがNATルータ配下にいるならPASVしか使えない。
>
> クライアントはルータ配下にあります。が、PASV OFFでも接続できてしまいました。
http://www.aconus.com/~oyaji/router/ftp.htm
を見てください。おやじの書き方が悪かったかもしれませんが、ここでいうNATルータ配下のクイライアントとはインターネットを介してサーバにつながってくるクライアントのことです。家庭内の通信にルータは関与してませんから、以下を含めここの議論の対象にはなりません。
> > 2. 非SSLでもPASVモードで使用するなら、FTPサーバのPASVモードに対応したルータは使えない。
>
> corega BAR HXというルータです。
coregaはサポートしている可能性が大です。
> > 3. 2項の替わりに、PASVモードでのNATルータ対応ができるデーモン(SSL対応は当然)を使用する。
>
> 表題の通り、vsftpdです。
>
>
> > > 1項は、皆さん気にされてませんが、Activeモードではクライアント側のルータでFTP通信の制御情報をモニタしていて、クライアントが制御情報に設定したクライアントのプライベートアドレスをWAN側のグローバルアドレスに変換してくれているから通信ができるのであって、これがSSL化されるとモニタできなくなるため、サーバに家庭内のプライベートアドレスがそのまま行ってしまうので通信できなくなってしまう。従って、FTP over SSLではPASVしか使用できない。
>
> なるほど。勉強になります。
>
> > 2と3項はセットの話で、1項と同様の話である。FTPサーバのPASVモードに対応したルータは、1項と同様にサーバからクライアントに通知されるサーバのプライベートアドレスをWAN側のグローバルアドレスに変換している。従って、これらのルータを使う場合は、デーモンでPASV時のサーバのアドレス変換処理(vsftpdならpasv_address)を入れてしまうと、アドレスに矛盾が生じる(プライベートのはずなのにグローバルがくる)ため、デーモンで対策をすると逆にPASVでつながらなくなってしまう。
>
> デーモンでpasv_addressを書きこんでいないにもかかわらずPASV接続dができている=ルータが対応?
家庭内はルータが関与していないので接続できて当たり前で、pasv_addressなしでおやじのテスト(インターネット上のクライアント)でPASV接続できるならルータがPASV対応してます。
> > ところが、1項同様、SSL化してしまうとルータはアドレス情報が暗号化されてしまうため変換処理ができなくなってしまうので、デーモンでPASV時のサーバのアドレス変換処理(vsftpdならpasv_address)が逆に必須となる。
>
> SSLにするとルータ対応のSSLは考えられない、ということですね。
「ルータ対応のSSL」という意味がわからないのですが・・・。ルータがSSL化する? とは書いていないので、「SSL環境でルータが関与する」ということですよね。
> でも、接続できてしまっているのですよね...
何ができているのですか?
> 実際おやじさんのサイトで非SSL状態でFTPテストを行なってみたところ、PASVにチェックを入れて接続が可能ですし、結果ログを見てもPASVは有効になっています。
非SSL状態でpasv_addressなしでできているなら、ルータが対応しているのは確実です。
> このままSSL有効にし、FTPテストを行なうと接続できなくなります。
おやじのテストはSSLはできません。
> 外からはSSLを有効にしたFTPクライアントでないとやはり接続できませんし。
上記から、インタネット上のクライアントはサーバ側にNATルータがある限りpasv_addressなしでSSL接続は絶対にできません。
nyoさんのルータはPASV対応しているので、PASVは非SSL接続(pasv_addressなし)かSSL接続(pasv_addressあり)のどちらかしかできません。おやじが使用しているルータは余計なことはしないので、どちらでもpasv_addressありでPASVで接続できます。
> いかがでしょうか?
> 自分もすっきりしなくなってきました...
おやじは、想定どおりの動作をしていることがわかりましたのですっきりしました。