如何设置 vsftpd 的多个实例以在不同的监听端口上运行?

如何设置 vsftpd 的多个实例以在不同的监听端口上运行?

我需要设置 2 个不同的 vsftpd 实例。它们将监听 2 个不同的端口,这样,一个实例监听默认端口 21,另一个实例可以监听另一个端口 1123。请指导我如何设置 vsftpd 以监听 2 个不同的端口。我有以下 vsftpd.conf 文件:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
ftpd_banner=Welcome to the FTP Service.
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

答案1

至少有两种方法可以做到这一点

  1. 在独立模式下运行
    ,设置几个不同的 vsftpd conf 文件。
    在每个文件中设置不同的 listen_port,并使用 vsftpd /path/to/conf/file 调用每个文件,
    确保在每个 conf 文件中也启用独立模式(将 listen 设置为 YES 并在 inet/xinet 中禁用 vsftpd)
  2. 使用 systemd.unit 来控制不同的配置文件(使用 systemctl start @service 符号)

在你的情况下,只需创建 2 个 conf 文件,然后按照选项 1 启动两个实例

答案2

这是一篇关于如何在 CentOS 上运行它的精彩文章。但它也应该适用于基于 Debian 的操作系统。 https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-ftp-vsftpd-start-multi.html 如果由于某种原因您无法在同一台服务器上运行两个实例,则您可以使用 iptables 将端口 1123 上的所有流量重定向到 21。
iptables -t nat -A PREROUTING -p tcp --dport 1123 -j REDIRECT --to-port 21

答案3

阅读手册man 5 vsftpd.conf

监听端口如果 vsftpd 处于独立模式,则这是它将监听传入 FTP 连接的端口。
默认值:21

答案4

我需要设置 VSFTPD 的两个实例。因此我创建了第二个 conf 文件/etc/vsftpd-2.conf和第二个 init 脚本/etc/init.d/vsftpd-2

我编辑了的内容/etc/vsftpd-2.conf以包含以下行listen_port=1123

我还需要编辑/etc/init.d/vsftpd-2文件,以便当 start-stop-daemon 启动应用程序时,它会使用不同的 pid 和不同的 vsftpd conf 文件。

以下是该/etc/init.d/vsftpd-2文件的一些摘录:

CONFIG2FILE="/etc/vsftpd-2.conf"
#DAEMON="/usr/sbin/vsftpd ${CONFIG2FILE}"
DAEMON="/usr/sbin/vsftpd"
ARGS="$CONFIG2FILE"
NAME="vsftpd-2"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
LOGFILE="/var/log/vsftpd.log"
CHROOT="/var/run/vsftpd-2/empty"

CONFFILE="${CONFIG2FILE}"

case "${1}" in
    start)
        Check_standalone_mode || exit 0
        echo -n "Starting FTP server: "
        start-stop-daemon --start --background -m --oknodo --pidfile /var/run/vsftpd/vsftpd2.pid --exec ${DAEMON} -- ${ARGS}
        echo "${NAME}."
        ;;

    reload|force-reload)
        echo "Reloading FTP server configuration: "
        start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd2.pid --signal 1 --exec $DAEMON -- ${ARGS}
        echo "${NAME}."
        ;;

相关内容