1) FTP服务本身和网络策略双重影响,服务器端和云端安全组都可能阻断连接。
2) 被动模式下端口范围未开放是最常见的问题(客户端可连控制端口21但数据通道失败)。
3) 主动模式会导致服务器向客户端发起连接,客户端防火墙或NAT会阻断。
4) 阿里云香港节点与国内/国际网络差异也会影响连接稳定性和丢包率。
5) 诊断时需同时检查vsftpd/ProFTPD日志、操作系统防火墙和阿里云安全组规则。
1) 主动(PORT)模式:服务器使用20端口作为数据连接源,客户端随机高端口接收。
2) 被动(PASV)模式:客户端连接21端口发起控制,服务器返回一个高端口供客户端连接数据。
3) 必需开放端口:21(控制),以及被动模式指定的端口范围(例如50000-51000)。
4) 推荐使用被动模式并在配置里指定固定端口范围以便安全组规则设置。
5) 下表列出建议端口配置(示例):
| 端口/范围 | 用途 |
|---|---|
| 21/TCP | 控制连接 |
| 20/TCP | 主动模式数据(可选) |
| 50000-51000/TCP | 被动模式数据端口(示例) |
1) 阿里云安全组是入云侧五元组过滤,优先于实例外网访问控制。
2) 实例内的iptables/ufw/firewalld控制实例本体的流量,二者需配合开放端口。
3) 若安全组未放行被动端口范围,外网无法建立数据连接即使实例防火墙已放行。
4) 示例安全组规则:放行TCP 21,放行TCP 50000-51000,源为0.0.0.0/0或指定IP段。
5) 阿里云控制台变更后通常几秒生效,但缓存或网络策略传导可能存在延迟。
1) 检查服务状态:systemctl status vsftpd(示例:active (running))。
2) 查看监听端口:ss -tlnp | grep :21(应显示本地:21且由vsftpd监听)。
3) 测试控制连接:telnet 公网IP 21 或 nc -vz 公网IP 21(示例输出:succeeded)。
4) 测试被动端口:telnet 公网IP 50000(若被动端口未开放会timeout或拒绝)。
5) 查看日志:tail -n 200 /var/log/vsftpd.log 或 /var/log/messages 以定位PASV错误或连接重置。
1) 案例概述:客户在阿里云香港ECS(公网IP 101.6.45.123)上部署vsftpd,客户反映仅能登录但无法下载。
2) 排查结果:控制端口21可连,数据传输失败,安全组未放行被动端口。
3) 示例vsftpd.conf关键配置(示例行):
listen=YES
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
pasv_address=101.6.45.123
4) 安全组设置示例:规则1:TCP 21 源 0.0.0.0/0;规则2:TCP 50000-51000 源 0.0.0.0/0(生效后问题解决)。
5) 系统防火墙规则示例(iptables):iptables -A INPUT -p tcp --dport 21 -j ACCEPT;iptables -A INPUT -p tcp --dport 50000:51000 -j ACCEPT。
1) 优先采用被动模式并在vsftpd/proftpd中固定端口范围,便于在阿里云安全组中放行。
2) 同时在操作系统防火墙(iptables/ufw/firewalld)与阿里云安全组同步添加放行规则。
3) 若使用被动模式且服务器在内网或NAT后,pasv_address必须填公网IP或通过负载均衡转发。
4) 推荐限制被动端口源IP或使用VPN/专线以减少暴露面,常见范围50000-51000足够多数场景。
5) 如使用SFTP(基于SSH),仅需开放22端口可避免FTP复杂的数据通道问题,安全性更优。
