服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-27 简米科技 3,974 字 9 分钟阅读

虚拟机做FTP怎么连接不上?端口映射和防火墙怎么设置?

导读虚拟机FTP连接不上,多数情况不是FTP软件坏了,而是“控制端口通了、数据端口没通”或“映射只做了21端口”,先查服务监听,再查虚拟机网络模式,最后同时放行端口映射和系统/云防火墙,被动模式还要放行一段数据端口,先别急着改防火墙,按这条链路定位FTP连接失败FTP这事很像寄快递:21端口是打电话确认地址的控制连……

虚拟机FTP连接不上,多数情况不是FTP软件坏了,而是“控制端口通了、数据端口没通”或“映射只做了21端口”,先查服务监听,再查虚拟机网络模式,最后同时放行端口映射和系统/云防火墙,被动模式还要放行一段数据端口。

先别急着改防火墙,按这条链路定位FTP连接失败

FTP这事很像寄快递:21端口是打电话确认地址的控制连接,真正传文件还要走另一条数据连接,很多人只把电话打通了,货车却没放行,表现就是能登录、不能列目录,或者干脆连不上。

从客户端到虚拟机,FTP要过四道关

  • 第一关,FTP服务有没有真正监听在0.0.0:21,而不是只监听127.0.0.1。
  • 第二关,虚拟机网络模式是NAT、桥接还是仅主机,NAT通常要做端口映射,桥接更像同一局域网里的独立机器。
  • 第三关,宿主机、路由器或云平台安全组有没有把21端口和被动模式数据端口放进来。
  • 第四关,虚拟机系统防火墙有没有放行FTP服务或对应端口范围。

据IETF RFC 959定义,FTP使用控制连接和数据连接两条通道,只放行21端口,遇到被动模式时,客户端连得上控制通道,却连不上数据端口,于是出现“登录成功但列表失败”“传输文件卡住”这类现象。

三个命令快速判断卡在哪

在虚拟机里先看监听:

ss -lntp | grep :21
# 或
netstat -tlnp | grep :21

Windows虚拟机可以用:

netstat -ano | findstr :21

看到0.0.0:21或::21,说明服务在听所有地址;只看到0.0.1:21,外部当然进不来。

再从客户端测试控制端口:

telnet 虚拟机IP 21

如果telnet不通,问题在映射、路由或防火墙;如果telnet通但FTP客户端登录后卡住,重点查被动模式端口范围。

虚拟机FTP连接不上怎么排查:先看监听再看通路

可以按下面顺序走,别一上来就关防火墙:

  1. 确认FTP服务已启动,配置文件里没有绑定listen_address=127.0.0.1。
  2. 确认虚拟机IP是客户端能访问到的地址,NAT模式下不能直接拿虚拟机内网IP给外网访问。
  3. 确认端口映射写的是“主机/公网端口→虚拟机IP→虚拟机端口”。
  4. 确认系统防火墙放行21端口,被动模式还要放行数据端口段。
  5. 确认FTP被动模式返回的地址是公网地址,不是虚拟机内网地址。
  6. 最后再用FTP客户端测试登录、列目录、上传下载三个动作。

VMware虚拟机FTP端口映射怎么设置

VMware下最常见的是NAT模式,虚拟机拿到的是宿主机虚拟网卡后面的内网地址,外部要访问,就得在VMware的NAT设置里做端口转发。

NAT模式:在虚拟网络编辑器里加映射

操作路径一般是:打开VMware Workstation,进入“编辑”→“虚拟网络编辑器”→“更改设置”→选中NAT模式→“NAT设置”→“端口转发”。

添加规则时关注三个值:

  • 主机端口填21,类型选TCP。
  • 虚拟机IP填FTP所在虚拟机的地址,比如168.x.x。
  • 虚拟机端口填21。

这只解决了控制连接,被动模式还要把数据端口段映射进去,例如50000-50100,部分VMware版本对端口范围支持不完整,可以缩小范围逐条添加,或者把FTP被动端口范围设小一些,再逐条映射,映射数量多时,桥接模式反而省事。

桥接模式:很多时候根本不需要端口映射

桥接模式下,虚拟机会像局域网里另一台电脑一样拿地址,同一局域网内访问,通常不需要在VMware里做端口转发,重点变成虚拟机系统防火墙和FTP被动模式配置。

如果要把桥接虚拟机发布到外网,映射工作就从VMware转移到路由器:在路由器“端口转发/虚拟服务器”里,把公网21端口转发到虚拟机IP的21端口,同时转发被动数据端口段。

本地虚拟机FTP外网访问设置方法:路由器端口转发别漏数据端口

本地虚拟机FTP外网访问设置方法,核心就三步:

  • 给宿主机或路由器确认公网IP,动态公网IP可以配合动态DNS。
  • 路由器端口转发添加TCP 21,以及FTP被动端口段。
  • 虚拟机防火墙放行对应端口,FTP服务配置pasv_address为公网IP或域名。

如果路由器上面还有一层光猫,光猫也要做桥接或继续转发,否则公网流量到不了路由器,近年来不少宽带环境默认没有公网IPv4,这种情况端口映射做了也白做,需要先确认线路是否具备公网地址。

云服务器FTP被动模式端口映射和防火墙配置

云服务器没有家里路由器那种“端口转发”页面,安全组就承担了云上端口映射的角色,但系统防火墙仍然要单独放行。

安全组和系统防火墙要同时放行

以常见云平台为例,进入实例的安全组,添加入方向规则:

  • 协议TCP,端口21,授权对象按需填客户端IP或临时0.0.0/0。
  • 协议TCP,端口范围填被动模式端口段,例如50000-50100。
  • 如果使用主动模式,还要考虑服务端20端口出站,以及客户端侧入站,这也是主动模式更容易被拦的原因。

安全组放行后,登录虚拟机检查系统防火墙,Linux上firewalld可以这样加:

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=50000-50100/tcp
firewall-cmd --reload

Ubuntu的ufw则是:

ufw allow 21/tcp
ufw allow 50000:50100/tcp

被动模式端口范围怎么设

以vsftpd为例,在配置文件中加入或修改:

pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
pasv_address=公网IP或域名

pasv_address很关键,云服务器有多层网络地址时,FTP服务器如果返回内网IP,客户端会拿着内网地址去连数据端口,自然连不上。

Windows IIS FTP则在“FTP防火墙支持”里填写数据通道端口范围,并填外部IP地址,范围要和云安全组、系统防火墙保持一致,三处口径统一,别一处写50000-50100,另一处只开50000。

Windows防火墙FTP端口怎么放行

Windows虚拟机可以用命令快速加规则,管理员权限打开PowerShell或CMD:

netsh advfirewall firewall add rule name="FTP-21" dir=in action=allow protocol=TCP localport=21
netsh advfirewall firewall add rule name="FTP-PASV" dir=in action=allow protocol=TCP localport=50000-50100

如果IIS里已经配置了FTP防火墙支持,也可以让IIS自动管理部分规则,但云安全组仍要手动放行,别指望IIS能改云平台安全组。

对比:主动模式与被动模式,哪个更容易连不上

对比项 主动模式 被动模式
控制连接 客户端连服务端21端口 客户端连服务端21端口
数据连接方向 服务端20端口连客户端 客户端连服务端指定端口段
常见卡点 客户端防火墙拦截服务端入站 服务端防火墙或映射漏放数据端口
云环境适用性 较麻烦 更常用

行业共识认为,企业网络和云环境里客户端侧防火墙往往更严格,所以被动模式更常见,被动模式不是“开了就行”,关键是端口段要在FTP配置、系统防火墙、云安全组或路由器映射里同时存在。

免费虚拟机FTP服务器搭建成本高不高,先看这几个坑

本地虚拟机做FTP测试,软件本身可以零成本,但要让外网访问,成本通常落在公网IP、带宽和内网穿透上,云服务器按带宽或流量计费,具体价格随地域、线路和带宽波动,没有统一数字,免费方案适合临时测试,不适合长期对外传文件。

业内专家指出,FTP是明文传输,账号和文件内容在网络里裸奔,能换SFTP或FTPS就换,必须在公网开FTP时,至少限制来源IP、使用强密码、及时打补丁,别把21端口无差别开放给所有人。

虚拟机FTP连接不上与端口映射防火墙Q&A

本机127.0.0.1能连,外网连不上,先查什么?

先查FTP服务是不是只监听127.0.0.1,再查虚拟机网络模式,NAT模式没做端口映射、云服务器安全组没放行21端口、路由器没转发,都会出现本机可连、外部不可连。

端口映射做了,防火墙也关了,为什么还连不上?

重点看被动模式数据端口,控制连接21端口通了,只代表能登录;列目录和传文件还要连被动端口段,检查FTP配置里的pasv_min_port、pasv_max_port、pasv_address,并确认这段端口在映射和安全组里同样放行。

FTP被动模式端口范围要开多大?

范围大小和并发连接数有关,范围太小容易耗尽,范围太大防火墙规则和维护成本上升,常见做法是先设一段够用的范围,例如50000-50100,在vsftpd或IIS中配置后,同步到系统防火墙和云安全组即可。

把FTP连接问题当成一条链路看:先服务监听,再网络模式,再端口映射,最后防火墙;被动模式额外放行数据端口范围,基本就能把“连不上”变成“能连上且稳定”。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱