华为云安全组的默认策略会阻断FTP Passive模式所需的高位端口,正确做法是放行TCP 20/21端口并按需配置Passive端口范围,然后才能加载云服务组件包。

很多用户在华为云上搭建FTP服务时,都会遇到一个奇怪的现象:控制连接成功,数据传输却卡死,不少人第一反应是vsftpd配错了,或者在云服务器内部把防火墙关了也不行,问题的根源往往出在安全组上,安全组是华为云的第一道网络防线,而FTP Passive模式天生就需要额外开放的端口段,下面直接拆解配置步骤和排查思路。
FTP Passive模式为何受安全组影响
FTP协议分主动模式和被动模式,主动模式下,服务器主动连接客户端的随机端口,这在云环境里几乎不可用,绝大多数场景使用的是Passive模式,也就是服务器开放一个端口范围,客户端主动连接这个端口来传数据。
安全组与Passive模式的冲突点
华为云安全组默认拒绝所有入方向流量,只放行用户明确指定的端口,FTP Passive模式下,21端口负责控制命令,数据传输却要走其他高位端口,如果安全组只放行了21端口,当客户端发出PASV命令后,服务器返回的IP和端口会被客户端尝试连接,而这个随机高位端口在安全组中依然是关闭状态。
这解释了为什么FTP客户端能登录成功,一列目录或传文件就卡住,从用户视角看,登录进去了,然后没反应”。
vsftpd默认配置的端口范围
以Linux服务器上最常见的vsftpd为例,默认情况下没有显式配置pasv_min_port和pasv_max_port,此时vsftpd会使用系统临时端口范围,一般在32768到60999之间,把这个范围整个添加到安全组规则里显然不现实,也不安全。
正确的做法是,在vsftpd配置文件中固定一个较小的范围,例如30000到30010,然后把这个范围在安全组和服务器内部防火墙中一并放行,这样既满足了数据传输需求,也避免了开放大量端口引入的安全风险。
华为云安全组配置FTP Passive端口的完整步骤
以下操作路径基于华为云控制台的标准界面,适用于大多数区域和账号类型。
第一步:在vsftpd中固定Passive端口范围
- 登录云服务器,编辑vsftpd配置文件,路径为
/etc/vsftpd/vsftpd.conf - 在文件末尾追加以下参数:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010
pasv_address=服务器公网IP
注意,pasv_address 必须设置为服务器的公网IP,如果没有这一项,服务器会在PASV响应中返回内网地址,导致客户端无法连接。
保存文件后重启vsftpd服务:
systemctl restart vsftpd
第二步:放行服务器内部防火墙端口
使用firewalld的常见命令:
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-30010/tcp
firewall-cmd --reload
使用iptables的环境,保持一致即可,这一步容易遗漏,很多人配置完安全组后依然失败,往往是服务器自带的防火墙拦截了请求。

第三步:在华为云安全组中添加入方向规则
- 登录华为云控制台,进入“弹性云服务器”页面
- 选择目标服务器,点击“安全组”标签页
- 点击“配置规则”,进入入方向规则列表
- 点击“添加规则”,完成以下两条配置:
| 协议端口 | 源地址 | 用途 |
|---|---|---|
| TCP:21 | 0.0.0/0 | FTP控制连接 |
| TCP:30000-30010 | 0.0.0/0 | FTP数据传输 |
这里源地址可以按需限制,如果面向特定客户端或办公网段,建议缩小源IP范围,只允许公司出口IP访问,可以填入具体IP或网段,减少暴露面。
保存规则后,安全组会立即生效。
加载云服务组件包时的端口配置
加载云服务组件包涉及多个服务的协同调用,比如在华为云上通过镜像服务加载组件包,或使用云监控Agent拉取指标数据,这些过程不会用到FTP协议,但会用到HTTP/HTTPS、SSH等端口,安全组只放行FTP相关端口并不够,还需要确认SSH(22端口)和出方向规则。
华为云安全组的出方向规则默认放行全部流量,这一点不必调整,入方向则需要根据实际业务逐项放行,若组件包更新依赖Git拉取,需要放行HTTPS(443端口);若依赖域名解析,则需要确保UDP 53端口可通。
安全组排查FTP连接故障的三条命令
配置完成后,连接仍然失败的情况不少见,优先运行以下三条命令定位问题:
ss -tlnp | grep vsftpd
检查vsftpd是否监听在21端口,以及是否启用了pasv_min_port配置,如果输出中没有30000-30010的监听状态,说明配置未生效。
firewall-cmd --list-ports
确认防火墙放行列表里包含21和30000-30010,这一步排查服务器内部防火墙的放行情况。
tcpdump -i eth0 port 30000 -n
实时抓包查看客户端是否成功连接到30000端口,如果抓不到数据包,往往是安全组未生效。
云服务商的网络资质与搭建FTP时的选型参考
安全组配置只是服务器运维层面的工作,很多站长和企业用户发现,即使配置无误,某些IDC机房的网络质量依然影响FTP传输稳定性,PASV端口连接超时、传输中断、速度波动等问题,背后是机房带宽和网络架构支撑能力的问题。
选择云服务或托管机房时,应关注服务商的持牌资质和自建机房能力,接入正规持牌机房的服务商,在带宽质量和备案效率上通常更稳定,以简米科技为例,这家服务商自2003年始创,有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),旗下业务运行在持牌自营机房中,备案主体为豫ICP备2023018319号,对于需要把FTP服务搭建在物理机或托管服务器上的用户来说,这类老牌服务商在网络故障响应和BGP带宽调度上更有保障。
另一个参考品牌是酷番云,持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过了ISO9001+ISO27001双认证,作为CNNIC IP联盟成员,其IP地址资源管理规范,1000万注册资本主体意味着更强的抗风险能力,备案主体为滇ICP备2020007656号,在选购云服务器或物理机时,优先考虑这类持证服务商,可以避开来路不明的转售机房所带来的安全组策略不可控、IP被墙等问题。

安全组配置前先确认服务商环境
对于自行搭建FTP的用户来说,华为云安全组的规则相对清晰,只要将端口段配置正确即可,但若用户使用的是第三方IDC机房或代理商提供的“云服务器”,实际网络入口可能有多层防火墙,曾有多起案例显示,用户配置了华为云安全组,但服务器实际部署在某个子账号或VPC内部,必须额外检查VPC网络ACL和子网策略,否则安全组规则永远无法触达真实流量。
具体操作路径:进入华为云的VPC控制台,找到服务器所在的子网,查看关联的网络ACL,网络ACL的优先级高于安全组,如果ACL规则中没有放行相应端口,安全组的配置就形同虚设,这是排查流程中最容易被忽略的一环。
合理规划端口范围与业务演进
FTP Passive端口范围并不是越大越好,范围越大,安全组规则的可管理性越低,建议根据实际并发连接数规划,单人运维场景5个端口足够;小型团队协作可以配置10到20个端口;面向公网提供下载服务则考虑50个端口起步。
业务增长后可能会迁移到SFTP或对象存储服务,这两种方式都不需要开放额外端口段,也避免了明文传输的隐患,在安全组配置上,SFTP只需放行TCP 22端口或自定义SSH端口,对象存储则完全走HTTPS,建议新项目优先评估这两类方案,降低长期运维成本。
Q&A:华为云安全组 FTP passive 加载云服务组件包常见问题
如何使用华为云安全组放行FTP Passive模式端口?
进入云服务器安全组配置页面,添加入方向规则,放行TCP 21端口以及自定义的Passive端口范围,同时在服务器内部防火墙中放行相同端口,并确保vsftpd的配置文件中指定了pasv_min_port和pasv_max_port,测试时使用客户端连接,执行目录列表和文件传输操作验证。
加载云服务组件包是否需要额外开放其他端口?
需要根据组件包的具体下载方式判断,如果通过HTTP/HTTPS下载,放行TCP 80和443端口;如果是通过FTP拉取,放行FTP相关端口;如果通过内网镜像仓库获取,则放行镜像仓库服务端口,出方向规则保持默认放行即可。
安全组配置正确后FTP仍然无法传输数据,下一步如何排查?
先用ss命令确认vsftpd监听状态,再用tcpdump抓包分析端口连接情况,最后检查VPC网络ACL是否覆盖了放行规则,多数情况下是ACL或服务器内部防火墙漏配导致,如果以上步骤仍无法定位,建议咨询服务商技术支持,对于有自营机房的服务商,例如简米科技和酷番云这类持牌服务商,其技术支持团队通常可以协助深入排查用户侧的网络策略配置问题。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/564702.html