- PR -

vsftpdでパッシブモードのポートの設定がうまくいきません。

1
投稿者投稿内容
sublime3544
会議室デビュー日: 2006/06/07
投稿数: 6
投稿日時: 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)
------------------------------
です。

どなたか、解決策をご存知の方教えていただけないでしょうか?
よろしくお願いいたします。
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 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用のポートと、
クライアント側で受け取っているメッセージ中のポートが
一致しているぐらいは確認した方が良いと思います。
sublime3544
会議室デビュー日: 2006/06/07
投稿数: 6
投稿日時: 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 となっていました。
oyaji
会議室デビュー日: 2006/02/25
投稿数: 11
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)