一台服务器架设两个FTP,核心不是装两套软件,而是让两个站点分别绑定不同端口或不同IP,再指向独立目录并做权限隔离。
很多运维第一次听到这个需求会愣一下:一台机器上已经跑了一个21端口的FTP,还能再跑一个吗?答案当然可以,FTP服务本身支持多实例、多站点,只是很多人默认装完就用,没往这个方向配置过,下面按Linux和Windows两条路线拆开讲,顺手解决权限、防火墙、端口冲突这些最容易踩坑的点。
Linux服务器搭建多个FTP站点的两种思路
Linux下最常用的FTP服务是vsftpd,它并不限制一台服务器只跑一个进程,想在一台服务器上搭建两个FTP站点,通常有两种做法:一种是复制配置文件监听不同端口,另一种是共用21端口但按用户目录做逻辑隔离。
不同端口搭建两个FTP的操作步骤
这种方案最直观,适合需要两个完全独立的FTP服务场景,比如一个给内部更新系统用,一个给外部客户下载资料用,端口一分开,数据通道、日志、访问规则都能各管各的。
先复制默认配置文件:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf
然后编辑第二个配置文件,重点改下面几项:
listen_port=2121 pid_file=/var/run/vsftpd2.pid local_root=/data/ftp2 chroot_local_user=YES pasv_min_port=30101 pasv_max_port=30200
解释一下每项的作用:
listen_port=2121:第二个FTP用2121端口,避免和第一个21端口冲突。pid_file:进程文件必须独立,否则两个实例会互相覆盖状态。local_root:第二个站点的根目录,所有登录用户默认进这里。chroot_local_user=YES:把用户锁在自己的根目录里,防止跳转到第一个FTP目录。pasv_min_port和pasv_max_port:被动模式数据端口段,必须和第一个实例错开。
启动第二个实例:
/usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf
启动后用ss -tlnp | grep vsftpd能看到21和2121都在监听,云服务器别忘了在安全组放行2121和30101-30200这一段。
同一端口基于用户目录做站点隔离
如果不想让客户端加端口号,或者防火墙只愿意放行21端口,也有办法,两个FTP账号可以分别指向不同目录,形成两个逻辑站点,用户A登录后只能看到自己的目录,用户B登录后也只能看到自己的目录,互不干扰。
操作如下:
mkdir -p /etc/vsftpd/user_conf echo "local_root=/data/ftpA" > /etc/vsftpd/user_conf/usera echo "local_root=/data/ftpB" > /etc/vsftpd/user_conf/userb
在主配置文件中加入:
user_config_dir=/etc/vsftpd/user_conf chroot_local_user=YES allow_writeable_chroot=YES
然后重启服务,这样usera和userb虽然连的都是21端口,但登录后进入完全不同的目录,这种做法严格来说不是两个独立FTP进程,但对多数业务需求已经够用,尤其是给不同客户分配独立上传空间时非常实用。
Windows Server 2019 配置两个FTP站点实操
Windows服务器用的最多的是IIS自带的FTP服务,很多人不知道IIS其实可以添加多个FTP站点,界面操作也不复杂。
IIS添加两个FTP站点的路径
先确认服务器已经装好FTP角色,打开服务器管理器,添加角色和功能,勾选Web服务器(IIS)下的FTP服务器,这一步不做,后面IIS管理器里根本找不到FTP选项。
装好后打开IIS管理器,右键“网站”,选择“添加FTP站点”,第一个站点正常用21端口,物理路径选D:FTP1,第二个站点重复操作,端口改成2121,物理路径选D:FTP2。
关键参数这样填:
- 站点名称:FTP1和FTP2,方便区分。
- IP地址:全部未分配,或者选择服务器当前公网IP。
- 端口:21和2121。
- SSL:测试环境选“无”,生产环境建议选“允许”或“需要”,但要注意部分老客户端不支持FTPS。
- 身份验证:基本。
- 授权:选择“指定用户”,输入允许访问的用户名,勾选读取和写入权限。
也可以用命令方式创建第二个FTP站点:
%windir%system32inetsrvappcmd add site /name:"FTP2" /bindings:"ftp://:2121:" /physicalPath:"D:FTP2"
IIS的FTP站点有一个特点:同一个IP同一个端口只能被一个站点占用,所以Windows Server 2019配置两个FTP站点时,最稳妥的办法就是改端口,改完记得在Windows防火墙入站规则里添加2121端口。
不同端口与不同IP方案对比
如果服务器有多块网卡或者绑定了多个公网IP,也可以两个FTP都用21端口,但绑定到不同IP上,这种方案客户端体验最好,不用输端口号。
| 对比项 | 不同端口方案 | 不同IP方案 |
|---|---|---|
| 配置难度 | 低 | 中 |
| 客户端访问方式 | 需要加端口号 | 默认21端口 |
| 额外成本 | 无 | 需要多IP,多IP服务器租用价格通常按数量递增 |
| 适用场景 | 内部传输、临时测试 | 对外多个品牌站点隔离 |
像北京服务器机房加一个公网IP,租用价格多数情况下按数量阶梯递增,如果只是内部使用,不同端口方案足够;如果是对外业务并且两个站点都要保持专业形象,多IP方案体验更好。
两个FTP站点的目录权限和被动端口隔离
服务能起来只是第一步,两个站点的权限没隔开,数据就会互相暴露,被动端口段配置不当,客户端登录后目录列表一直转圈,这也是FTP故障里最典型的一类。
目录权限怎么分开
Linux下用vsftpd时,前面已经讲了user_config_dir可以为不同用户指定不同local_root,但光指定目录还不够,目录本身的系统权限也要配合。
以/data/ftpA和/data/ftpB为例:
chown -R ftpuserA:ftpgroupA /data/ftpA chown -R ftpuserB:ftpgroupB /data/ftpB chmod 755 /data/ftpA chmod 755 /data/ftpB
这样A用户对B目录连读权限都没有,即使配置文件里想跳也跳不过去。
Windows下主要是NTFS权限配合IIS授权规则,两个站点目录分别设置用户A和用户B的完全控制权限,再在IIS的FTP授权规则中限定只能指定用户访问,两层控制叠加,基本不会出现越权读文件的问题。
被动端口段必须错开
FTP传输文件时需要额外建立数据连接,主动模式和被动模式行为不同,现代网络环境下多数用被动模式,因为客户端通常在内网,行业共识认为,被动模式端口段不清晰是FTP登录成功后目录列表失败的主要原因之一。
Linux下两个vsftpd实例的pasv_min_port和pasv_max_port绝对不能重叠,否则数据连接会串,推荐的划分方式:
- 实例A:30000-30100
- 实例B:30101-30200
云服务器安全组按这个范围放行TCP入站,不要只放21和2121,很多运维只放控制端口,结果客户端一连目录列表就超时。
Windows IIS的FTP数据通道端口范围是在服务器节点下的“FTP防火墙支持”里统一设置,无法按站点单独拆分,如果两个Windows FTP站点必须严格隔离数据端口,就要使用不同IP方案,一个站点一个IP。
一台服务器架设两个FTP服务器常见问题
实际配置过程中,下面几个问题被问得最多。
两个FTP都用21端口会冲突吗
会冲突,相同IP相同端口只能有一个进程监听,第二个服务启动时会报地址已被占用,解决办法只有两个:要么改端口,要么绑定不同IP,改端口是成本最低的方式,客户端访问时把端口加上即可。
FTP登录成功但目录列表失败是什么原因
多数情况下是被动端口没放行,服务器上FTP控制端口通了,但数据端口被防火墙或云安全组拦住,客户端就卡在“正在获取目录列表”,检查pasv_min_port和pasv_max_port配置,再看服务器防火墙和安全组是否放行了对应TCP端口段,还有一类原因是IIS FTP的SSL设置和客户端不匹配,导致数据连接建立后又被断开。
不同端口搭建两个FTP需要额外软件吗
不需要,Linux下的vsftpd和Windows下的IIS FTP都原生支持多实例、多站点,开源方案里FileZilla Server也可以在一台服务器上绑定多个端口和不同目录,配置交互界面更友好,商业FTP软件一般按实例授权,费用会比开源方案高。
两个FTP站点说到底就是端口、IP、目录这三者的排列组合,端口独立最简单,IP独立体验最好,目录隔离最省资源,根据实际业务选一种,配置时把权限和被动端口段同步处理好,一台服务器跑两个FTP并不会比跑一个复杂多少。
FTP服务器多站点配置相关问答
一台服务器怎么架设两个ftp服务器?
Linux下复制vsftpd配置文件并修改listen_port、pid_file、local_root后启动第二个实例;Windows下在IIS管理器中添加第二个FTP站点并指定不同端口,两个站点分别指向独立目录,权限和被动端口段做好隔离即可。
两个FTP站点可以共用一个IP吗?
可以,共用一个IP时采用不同端口方案,比如一个用21,另一个用2121,客户端访问第二个站点时需要手动输入端口号,相同IP相同端口只能被一个FTP进程占用,无法同时运行两个。
多站点FTP配置需要额外付费吗?
vsftpd、FileZilla Server等开源软件免费使用,IIS FTP需要Windows Server授权但不需要单独购买FTP功能,多IP服务器租用价格通常按IP数量阶梯递增,商业FTP软件按站点实例数量收费。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/643775.html





