You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

外网访问VSFTPD可创建文件夹但无法创建/编辑文件问题求助

解决外网访问vsftpd仅能创建文件夹、无法上传/编辑文件的问题

这问题我之前帮朋友排查过类似的,核心原因基本都是被动模式(PASV)的数据连接端口没配置到位——毕竟局域网内防火墙和端口转发都不是问题,但外网访问时,FTP的数据连接需要额外的端口支持,咱们一步步来搞定:

1. 配置vsftpd的被动模式参数

首先得确保vsftpd开启了被动模式,并指定固定的端口范围(避免随机端口导致路由器无法转发):

  • 打开vsftpd配置文件:sudo nano /etc/vsftpd.conf
  • 找到并修改/添加以下配置项(如果原来有注释掉的,去掉#):
    pasv_enable=YES          # 强制开启被动模式,外网访问必须用这个
    pasv_min_port=40000      # 被动模式起始端口,选个不常用的范围
    pasv_max_port=40100      # 被动模式结束端口,范围不用太大,100个足够
    pasv_address=你的公网IP   # 填服务器的固定公网IP,动态IP可以用DDNS地址
    
  • 保存退出后重启vsftpd服务:sudo systemctl restart vsftpd

2. 在路由器上配置端口映射

除了FTP默认的21控制端口,还要把刚才设置的被动模式端口范围转发到服务器:

  • 登录你的路由器管理后台,找到「虚拟服务器」或「端口映射」功能
  • 添加两条映射规则:
    • 第一条:外部端口21,内部IP填服务器的局域网IP(比如192.168.1.100),内部端口21,协议选TCP
    • 第二条:外部端口40000-40100,内部IP同上,内部端口40000-40100,协议选TCP
  • 保存规则后重启路由器生效

3. 检查服务器防火墙(UFW)设置

Ubuntu 16默认用UFW防火墙,要确保相关端口被允许:

  • 执行以下命令开放端口:
    sudo ufw allow 21/tcp
    sudo ufw allow 40000:40100/tcp
    
  • 重启UFW使规则生效:sudo ufw reload

4. 验证设置是否生效

打开Cyberduck,重新连接你的FTP服务器:

  • 确认连接设置里的「传输模式」是被动(PASV)(默认应该是,但手动检查更稳妥)
  • 尝试创建文件、上传或编辑现有文件,看是否还会卡在超时阶段

补充说明:为什么能创建文件夹却不能操作文件?

创建文件夹只需要通过21端口的控制连接完成命令交互,不需要额外的数据连接;但上传、下载或编辑文件时,需要建立单独的数据连接——被动模式下这个连接是从服务器的pasv端口发起的,如果端口没转发,外网客户端就接收不到这个连接请求,自然会卡在操作阶段直到超时。

内容的提问来源于stack exchange,提问作者stevieki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:48:18