vsftpd
にインストールするときはcentos
、ユーザー用の jail 環境のみをセットアップし、残りは のデフォルト構成ですvsftpd
。ユーザーを作成し、FTP クライアントで接続しようとしましたが、パッシブモードでは接続できませんでした。に正常に接続するためにfilezila
常に をアクティブモードに変更します。そうしないと、 transfer settings
ftp server
Error: Failed to retrieve directory listing
では、ファイル内のディレクティブを変更してvsftp.conf
、パッシブ モードでサーバーに接続できる方法はありますか?
答え1
vsftpd のパッシブ モードを設定するには、vsftpd.conf でいくつかのパラメータを設定する必要があります。
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
これにより、パッシブ モードが有効になり、データ接続に 11 個のポートを使用するように制限されます。ファイアウォールでこれらのポートを開く必要があるため、これは便利です。
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
テスト後にすべてがうまくいった場合は、ファイアウォールの状態を次のように保存します。
service iptables save
ファイルが更新されます/etc/sysconfig/iptables
。
CentOS 7 でこれを行うには、iptables ではなく新しい firewalld を使用する必要があります。
あなたのゾーンを見つけましょう:
# firewall-cmd --get-active-zones
public
interfaces: eth0
私のゾーンは「パブリック」なので、ゾーンをパブリックに設定し、ポート範囲を追加してから、リロードします。
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
接続すると何が起こるか
クライアントはポート 21 で vsftpd サーバーに接続します。
サーバーは、上記で指定された範囲からどのポートに接続するかをクライアントに通知して応答します。
クライアントは指定されたポートでデータ接続を行い、セッションが継続されます。
さまざまなFTPについての素晴らしい説明がありますモードここ。
答え2
パッシブ モードを有効にするには、vsftp.conf で次の構成オプションを設定します。
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
もちろん、開始ポートと終了ポートを変更することができます。xxx をサーバーのパブリック IP に置き換える必要があります。
さらに、ファイアウォールのパッシブ モード ポート範囲を開く必要があります。 CentOS では、ip_conntrack_ftp
ファイアウォールで FTP 接続を処理するモジュールをロードできます。/etc/sysconfig/iptables-config
IPTABLES_MODULES オプションを編集して ip_conntrack_ftp を追加します。その後、iptables を再起動します。
/sbin/service iptables restart
答え3
の横にpasv_enable=YES
、VSFTP が PASV モードを実行するポート範囲を指定します。
pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES
これらのポートでパケットの送信を許可するように iptables を設定することを忘れないでください。
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
答え4
通常、パッシブ モードの使用を妨げるのは、FTP サーバー (vsftpd) ではなく、iptable などのファイアウォールです (データ転送に必要な TCP 接続をブロックします)。