优化 Linux FTP 服务器,核心目标是提高传输性能、安全性、并发能力和稳定性。下面从系统层、FTP 服务层、网络层、安全层四个维度给你一套实用优化方案(以 vsftpd 为例,最常见)。
FTP 高并发时会消耗大量 fd。
# 查看当前限制
ulimit -n
# 永久修改
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
编辑:
vi /etc/sysctl.conf
建议配置:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65535
生效:
sysctl -p
# 基础
listen=YES
listen_ipv6=NO
# 并发连接
max_clients=500
max_per_ip=20
# 被动模式(推荐)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
# 性能
connect_from_port_20=YES
async_abor_enable=YES
# 超时
idle_session_timeout=300
data_connection_timeout=120
# 日志
xferlog_enable=YES
log_ftp_protocol=NO # 调试时开启
vsftpd 是 单进程 + 多子进程,本身性能很好,但:
✅ 防火墙友好
✅ 客户端兼容性好
pasv_enable=YES
pasv_address=公网IP
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
sysctl net.ipv4.tcp_congestion_control=bb
查看:
sysctl net.ipv4.tcp_congestion_control
推荐:
ext4 / xfs
挂载优化(示例):
mount -o noatime,nodiratime,data=writeback /dev/sdb /data
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
vi /etc/vsftpd/user_list
userlist_enable=YES
userlist_deny=NO
防止明文密码被抓包。
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_data_ssl=YES
force_local_logins_ssl=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
ss -ant | grep :21
top
iotop
| 现象 | 原因 | 优化 |
|---|---|---|
| 登录慢 | DNS 反向解析 | reverse_lookup_enable=NO |
| 传输慢 | 被动端口未放行 | 检查防火墙 |
| 并发上不去 | fd / 线程限制 | 调整 ulimit |
| 断连 | 超时 | 调整 timeout |
| CPU 高 | 加密传输 | 评估是否必须 TLS |
✅ 适合:
❌ 不适合:
如果你愿意,可以告诉我:
我可以给你一套针对你场景的精准优化方案。