【前提】
- 今まで何度か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は「ダイナミック/プライベートポート」と呼ばれ、こういうケースで自由に使っても良い。