- - PR -
vsftpdでパッシブモードのポートの設定がうまくいきません。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-04-12 18:53
Linux初心者です。Fedora Core 6をインストールしてFTPサーバを設定しようとしています。
FTPでパッシブモードの設定をしたいのですが、うまくいきません。 ■FTPクライアント(Filezilla)で接続しようとすると次のようになります ------------------------------ 応答: 220 Welcome コマンド: USER ******** 応答: 331 Please specify the password. コマンド: PASS ******** 応答: 230 Login successful. コマンド: SYST 応答: 215 UNIX Type: L8 コマンド: FEAT 応答: 211-Features: 応答: AUTH SSL 応答: AUTH TLS 応答: EPRT 応答: EPSV 応答: MDTM 応答: PASV 応答: PBSZ 応答: PROT 応答: REST STREAM 応答: SIZE 応答: TVFS 応答: 211 End コマンド: OPTS UTF8 ON 応答: 501 Option not understood. 状況: 接続しました 状況: ディレクトリ一覧を取得しています... コマンド: PWD 応答: 257 "/home/********" コマンド: TYPE A 応答: 200 Switching to ASCII mode. コマンド: PASV 応答: 227 Entering Passive Mode (***,***,***,***,238,146) コマンド: LIST -a エラー: 転送チャンネルを開くことができません. 理由: 対象のコンピュータによって拒否されたため、接続できませんでした。 エラー: ディレクトリ一覧を取得できませんでした コマンド: TYPE I ------------------------------ ■FTPサーバはvsftpdです。 vsftpd.confに次の設定を追加しました。 ------------------------------ pasv_addr_resolve=YES pasv_address=WANのアドレス pasv_min_port=60000 pasv_max_port=60099 ------------------------------ ■/etc/sysconfig/iptables-configに ------------------------------ IPTABLES_MODULES="ip_conntrack_ftp" ------------------------------ を設定しました。 lsmodで nf_conntrack_ftpがロードされているのを確認しました。 ■ルーターはNTTのRT-200NEで、 静的IPマスカレード設定で ------------------------------ TCP:21 TCP:60000-60099 ------------------------------ をFTPサーバのアドレスに設定しました。 ■iptables iptables でも上記のポートは許可しています。 パソコンおやじさんのFTPサーバテストでPASVモードで接続テストを行いました。 すると、60101とかpasv_max_portで設定した値より上のポートで接続しようとしてタイムアウトになるようです。どうやら、ルーターで設定した値の少し上のポートで接続をしようとするようです。ルーターの設定を変更すると、ポート番号がそれにつれて変更します。 ■環境は ------------------------------ OS: Fedora Core 6 FTPサーバ: vsftpd (Fedora Core 6に付属のものをアップデートしたもの) ルーター: NTT RT-200NE 回線: Bフレッツ (固定IP) ------------------------------ です。 どなたか、解決策をご存知の方教えていただけないでしょうか? よろしくお願いいたします。 |
|
投稿日時: 2007-04-13 09:49
> 227 Entering Passive Mode (***,***,***,***,238,146)
サーバー側から指示されているポートが pasv_min_portとpasv_max_portの範囲外ですね。(61074) 自分はvsftpdは使用していないのですが、友人の設定を見ていた際に、 似たような事象でpasv_min〜maxで指定した範囲外のポートを vsftpd側から出している事がありました。 極端な例ではhttpdで80を使用していなくても80〜90などを指定すると、 全く違うポートが使用されます。 他のポートにしても変わりませんでしょうか? ルーター側のIPマスカレードで変動するのも気になります。 仮にルーター側のIPマスカレード設定を無効にしたら、どうなりますでしょうか? vsftpd側のログはどうでしょう? log_ftp_protocolでvsftpdが要求しているPASV用のポートと、 クライアント側で受け取っているメッセージ中のポートが 一致しているぐらいは確認した方が良いと思います。 |
|
投稿日時: 2007-04-14 00:10
ご回答ありがとうございます。
自己解決しました。 http://kazuizm.com/2006/09/10-012647.php のページにありますルーターのパケットフィルタ設定を行っていませんでした。 ご迷惑をおかけしました。 ちなみにlog_ftp_protocolの設定をTRUEにしてもクライアントの画面に表示される程度のメッセージしか表示されませんでした。 あと、パソコンおやじさんのFTPサーバテストで表示されるポート番号はログに残るポート番号と若干違うことが分かりました。 パソコンおやじさんのFTPサーバテストでは、(*,*,*,*,234,201) 60105 と表示されますが、ログには(*,*,*,*,234,192) 60096 となっていました。 |
|
投稿日時: 2007-04-14 12:00
>あと、パソコンおやじさんのFTPサーバテストで表示されるポート番号はログに残るポート番号と若干違うことが分かりました。
>パソコンおやじさんのFTPサーバテストでは、(*,*,*,*,234,201) 60105 と表示されますが、ログには(*,*,*,*,234,192) 60096 となっていました。 おやじのテストがおかしいと誤解されるといけないので、コメントしておきます。 RT-200NEはNEC製と思いますが、多くのNEC製のルータはFTPのPASVモードでのサーバ公開機能をサポートしていますので、PASVコマンドの応答メッセージをモニタしてポート変換しているものと思います。つまり、サーバは60096で待ちうけると言ったのですが、それをルータがメッセージをモニタして60105待ちうけに変換しているということです。 つまり、このルータはデーモン側で何もPASV対応しないで、21番のみ静的IPマスカレードすれば、PASVでのFTPサーバ公開ができるはずです。 パケットフィルタもデフォルトのままなら、ステートフルパケットインスペクション機能でデータコネクションも通過するはずです。(自分でポート変換しているので判定できるため) |
1