【前提】
- 今まで何度かvsftpのインストールはやったことがあった
 
- FTP接続時はパッシブモードが多いが、パッシブモードでの設定が上手く行かず、毎回アクティブモードでの接続を想定してセットアップしていた。
 - アクセス制限のためFTPサーバはIP制限をかけていた。(ポートは20-21)
 - VPN利用時にFTP接続すると、ファイル一覧の取得で毎回こけており、VPN経由の接続に成功したことが無かった。
 
【今回の環境】
- CentOS release 5.4 (Final)
 - vsftp 2.0.5
 - クライアントはFilezilla3.7.4.1
 
【やったこと】
- Filezillaをyumでインストール。
 
yum -y install vsftpd
- /etc/vsftpd/vsftpd.confに以下を追加。
 
use_localtime=YES → 時間としてGMTではなくlocaltimeを使う dual_log_enable=YES → /var/log/vsftpd.logと/var/log/xferlogの両方をログとして出力。vsftpd.logはクライアントからの接続等のログ。xferlogはデータ転送に関するログ。 pasv_enable=YES → パッシブモードでの接続をOKにする。 pasv_min_port=50020 → データ転送として20の代わりに、サーバ側受けようにオープンするポートレンジの下の値 pasv_max_port=50025→ データ転送として20の代わりに、サーバ側受けようにオープンするポートレンジの上の値 pasv_address=xx.xx.xx.xx → 自分のIPアドレス
- vsftpd起動
 - サーバのポートオープン設定インバウンドとして 50020〜50052を許可する
 
【分かったこと】
- ftpは通常ポート20と21を使うと言われるが、20はクライアント側が空いて無いといけない。クライアント側のポートを開けるというのは結構難しい。そこでサーバ側のポートを開けるという接続フローにした物がパッシブモード。
 - 49513~65535は「ダイナミック/プライベートポート」と呼ばれ、こういうケースで自由に使っても良い。