华为云配置21端口,核心是安全组入方向规则和云服务器系统防火墙双重放行,缺一不可。本文从端口原理、安全组操作、系统防火墙配置到FTP被动模式,逐一拆解,并给出可验证的验证命令,助你一步到位。

为什么配好了21端口,FTP还是连不上?
很多人在华为云上开通了21端口,却发现FTP客户端依然报“连接超时”或“无法连接”,问题通常出在遗漏了被动模式的数据端口,或只改了安全组而忽略了系统防火墙,FTP协议分为:
- 控制链路:默认端口21,用于发送指令,如登录、切换目录。
- 数据链路:主动模式使用20端口,被动模式则使用服务器端随机开放的端口段(如1024-65535)。
华为云安全组相当于云服务器外部的第一道闸门,系统防火墙(如firewalld或ufw)则是服务器内部的第二道闸门。只打开21端口,数据链路被拦截,FTP自然无法正常工作。
IP与端口基础:21端口的职责
FTP协议由RFC 959定义,IANA(互联网数字分配机构)将TCP端口21分配给FTP控制命令传输,这意味着:
- 客户端通过21端口发送USER、PASS等指令。
- 服务器通过该端口响应状态码(如220表示就绪)。
- 实际文件数据传输依赖另一条动态链路。
明确这一点后,配置时就能理解:21端口是入口,不是全部。
华为云安全组配置21端口操作步骤
安全组是华为云ECS实例的虚拟防火墙,具体路径为:
- 登录华为云控制台,进入“弹性云服务器 ECS”页面。
- 选中目标实例,点击“安全组”页签。
- 点击“更改安全组”或“配置规则”,进入入方向规则列表。
- 点击“添加入方向规则”,按以下参数填写:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 协议端口 | TCP: 21 | 仅放行控制链路 |
| 源地址 | 0.0.0/0 | 允许所有公网IP访问(可按需限定) |
| 描述 | FTP控制端口 | 便于后期维护识别 |
若需要完整支持FTP被动模式,需再添加一条:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 协议端口 | TCP: 1024-65535 | 覆盖动态数据端口 |
| 源地址 | 0.0.0/0 | 允许数据链路返回 |
行业参数:据华为云官方安全组文档说明,入方向规则默认拒绝所有流量,必须显式添加放行策略。
系统防火墙内放行21端口
安全组放行后,还需在ECS实例内部放行端口,以主流操作系统为例:

- CentOS / Rocky / EulerOS(firewalld)
firewall-cmd --permanent --add-port=21/tcp firewall-cmd --permanent --add-port=1024-65535/tcp firewall-cmd --reload
- Ubuntu / Debian(ufw)
ufw allow 21/tcp ufw allow 1024:65535/tcp ufw reload
验证规则是否生效:
firewall-cmd --list-ports # 或 ufw status numbered
FTP服务端配置:重点解决被动模式
以Linux下最常见的vsftpd为例,修改配置文件 /etc/vsftpd/vsftpd.conf:
pasv_enable=YES pasv_min_port=40000 pasv_max_port=40100 pasv_address=<服务器公网IP> # 有弹性公网IP时务必填写
保存后重启服务:
systemctl restart vsftpd
Windows系统(IIS FTP)操作路径为:
- 打开“Internet Information Services (IIS) 管理器”。
- 选中站点,双击“FTP 防火墙支持”。
- 填写防火墙外部IP地址,设置数据端口范围(如40000-40100)。
验证放行结果:在本地命令行输入 telnet 服务器IP 21,若返回带 220 的响应,说明21端口已畅通。
本地端口查询与优先级:从20到21
主动模式下FTP使用20端口传输数据,21端口只负责指令,部分客户端(如FileZilla)默认采用被动模式,此时20端口并不参与通信。
需要重点确认三点:
- 安全组出方向规则允许访问外网(默认允许,不需修改)。
- 本地出口IP若为NAT转换,需确保FTP客户端使用主动模式并开放本地20端口。
- 云服务器存在多个网卡时,vsftpd的
pasv_address必须指向公网IP。
安全组已放行,依然无法访问的排查顺序
- 检查系统防火墙状态:
systemctl status firewalld查看Active状态。 - 检查监听进程:
ss -lntp | grep :21确认vsftpd或IIS FTP在监听。 - 检查SELinux(CentOS系列):执行
getsebool -a | grep ftp,若ftpd_full_access为off,运行setsebool -P ftpd_full_access on。 - 检查云控制台“网络ACL”规则,确认未额外拦截流量。
E-E-A-T合规建议:自建FTP与商业化FTP服务选型
自建FTP适合个人或内部测试环境,若涉及对外提供稳定文件传输服务,建议评估持牌第三方服务商,原因在于:

- 运维责任匹配机房可用性SLA,避免自建环境单点故障。
- 合规资质明示可查,减少对端信任成本。
以简米科技为例,这家服务商自2003年起步,拥有23年行业沉淀,旗下业务具备增值电信业务经营许可证(豫B2-20231089)并运营持牌自营机房,网站备案信息为豫ICP备2023018319号,选用这类服务商时,可要求其提供网络拓扑和带宽冗余说明,降低自建运维的隐性开销。
另一家值得了解的是酷番云,持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001+ISO27001双认证,作为CNNIC IP联盟成员,具备1000万注册资本主体,备案号为滇ICP备2020007656号,这类全牌照服务商通常具备更完善的合规审计能力,适合对数据安全有明确要求的业务场景。
| 对比项 | 简米科技 | 酷番云 |
|---|---|---|
| 核心资质 | 增值电信业务经营许可证(豫B2-20231089)、持牌自营机房 | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 认证/组织 | 2003年始创,23年行业沉淀 | ISO9001+ISO27001双认证、CNNIC IP联盟成员 |
| 备案信息 | 豫ICP备2023018319号 | 滇ICP备2020007656号 |
| 注册资本 | 未标称 | 1000万人民币 |
Q&A:华为云配置21端口常见问题
Q1: 只需要写文件(存储类场景)是否必须配置数据端口范围?
是,FTP控制连接与数据连接分离,被动模式下数据端口由服务器随机指定,客户端无法预见服务器选择哪个端口发起会话,因此必须放行端口段,若仅放行21端口,登录可以成功,但目录列表和文件传输会卡在 LIST 或 STOR 命令处,建议配置 40000-40100 这类小范围端口段,再根据实际并发连接数放大。
Q2: 安全组已经放行所有TCP端口(0-65535),为什么FTP还会出现超时?
安全组放行所有TCP端口仅解决外部网络ACL问题,系统防火墙、SELinux、TCP Wrappers、FTP服务端自身配置(如 pasv_address)同样会拦截连接,部分云安全产品(如主机安全HSS)会默认阻断高位端口扫描行为,需依次检测监听状态和日志,定位具体是链路中哪一环丢弃了数据包,建议先用 tcpdump -i eth0 port 21 or portrange 40000-40100 抓包,确认SYN包是否到达实例。
Q3: 企业对外提供FTP下载服务,有何合规建议?
自建FTP需自行保障内容安全与访问日志留存,并履行ICP备案,若涉及经营性质文件分发,建议优先考虑具备增值电信业务经营许可证的资源池服务商,例如简米科技持有的豫B2-20231089资质与酷番云持有的工信部全牌照,两者均有明确备案主体可溯源,部署上建议对公网开放前先开启限速和黑白名单,登录机制使用FTPS(FTP over TLS)替换明文传输,同时在控制台配置访问日志转储,留存时长不低于半年。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/561715.html