FTP服务器要公网访问,核心就两件事:把端口21(外加数据端口)放通,以及让外网能路由到你的服务器IP,没有公网IP就用内网穿透,有公网IP就做端口映射,但无论哪种方式,安全策略都得前置。
很多朋友第一次接触FTP服务器,最大的困惑不是不会装软件,而是装好了之后,家里或公司外网根本连不进来,这背后的原因不复杂,就是端口和IP的可见性问题,下面直接拆开揉碎讲清楚。
FTP服务器端口是多少?先搞懂21和20的分工
理解FTP的端口机制,是搞定公网访问的第一步,FTP协议和普通的HTTP不一样,它默认需要两个端口配合工作。
控制端口21与数据端口20
FTP服务器默认侦听的端口是21,这个端口负责传输指令,比如你输入用户名、密码、执行ls或dir命令,而真正传文件内容时,走的是20端口,这是主动模式下的数据端口,还有一个被动模式(PASV),数据端口会变成服务器随机开放的一个高位端口(通常是1024以上)。
主动模式与被动模式的端口差异
- 主动模式:客户端向服务器的21端口发指令,服务器主动从20端口连回客户端的随机端口,这种模式在客户端有公网IP时好用,但客户端在内网(NAT后面)时基本会失败。
- 被动模式:客户端先连服务器的21端口,服务器告知客户端一个随机端口,然后客户端再主动去连这个端口。公网访问FTP几乎都推荐被动模式,因为客户端只需要能出公网即可。
服务器端端口配置实操
以常见的FileZilla Server为例,需要在设置里指定被动模式端口范围,比如10000-10200,这个范围就是你要在防火墙和路由器上额外放行的端口段,只放行21端口,被动模式数据连接会卡死,表现为列目录超时或传输卡在0%。
没有公网IP,内网穿透是最省钱的解决方案
一个很现实的情况是,现在大量家庭宽带和部分企业宽带,运营商分配的是大内网IP(100.64.x.x段),你根本没有独立的公网IPv4地址,这种情况下,如果还纠结“FTP服务器端口怎么映射”,方向就错了。
内网穿透FTP服务器的工作原理
内网穿透工具的作用是,在你的内网服务器上运行一个客户端,它主动向云服务器建立长连接,然后云服务器(有公网IP)把公网流量转发到你这个内网通道上。
相当于借用别人的公网IP和端口,把流量导回你的FTP服务器。
主流穿透方案对比
| 方案 | 适用场景 | 端口要求 | 成本 |
|---|---|---|---|
| FRP(自建) | 有云服务器、懂配置 | 云服务器放行指定端口 | 云服务器费用(每年几百元) |
| 花生壳 | 个人快速搭建 | 无需公网IP,客户端映射 | 免费版限速,付费版按年收费 |
| ZeroTier | 组网访问,不暴露公网 | 需安装虚拟网卡 | 免费额度够用 |
FRP实操步骤(以Windows服务器为例)
- 在云服务器(有公网IP)上下载frps,配置文件里设置bindPort = 7000。
- 在本地FTP服务器电脑上下载frpc,配置remote_port = 2121(公网访问端口),local_ip = 127.0.0.1,local_port = 21。
- 重点来了:FTP穿透最麻烦的是被动模式,因为服务器返回的被动端口是内网地址,穿透后客户端无法连接,解决方案一是穿透时同时转发被动模式端口段,二是配置FTP服务器返回公网IP(在FileZilla Server中设置“被动模式IP”为云服务器公网IP)。
- 跑通后,外网用户访问
ftp://云服务器IP:2121,就能连上你家里的FTP。
公网IP多少钱一年?值不值得办
如果你不想折腾穿透,直接向运营商申请公网IPv4地址,动态公网IP在部分地区可以免费申请,但地址会变化,需要配合DDNS(动态域名解析),固定公网IP价格较高,企业专线通常每年几千到上万元不等,对于个人和小微企业,动态公网IP + DDNS是性价比最高的选择。
有公网IP,如何在路由器上做端口映射
如果你确认宽带是公网IP(比如路由器WAN口IP是100开头以外的地址,且和百度查询的IP一致),那直接在路由器上做端口映射就能实现FTP服务器公网访问。
路由器端口映射操作步骤
- 登录路由器管理后台(常见地址是192.168.1.1或192.168.0.1)。
- 找到“端口映射”或“虚拟服务器”或“NAT转发”选项。
- 添加规则:外部端口填21,内部IP填你FTP服务器的内网地址(如192.168.1.88),内部端口填21,协议选TCP。
- 额外添加一条规则:把被动模式端口段(如10000-10200)也映射到同一台内网服务器。
- 保存后,外网访问
ftp://你的公网IP,如果公网IP是动态的,建议开启DDNS绑定一个域名,用ftp://你的域名访问更方便。
防火墙放行与安全组配置
- Windows防火墙:在“高级安全Windows Defender防火墙”中新建入站规则,放行TCP 21端口和10000-10200端口段。
- 云服务器安全组:如果你用的是云服务器,除了服务器系统防火墙,还要在云控制台的安全组里放行端口,这一步漏掉会导致外部无法连接。
FTP和SFTP有什么区别?安全性怎么取舍
很多人在配置时犹豫:到底用FTP还是SFTP?这个问题直接影响公网访问的安全策略。
协议本质与端口差异
- FTP:明文传输,默认端口21,数据端口20/被动高位端口,传输账号密码和文件内容都不加密,在公网环境下容易被抓包。
- SFTP:基于SSH协议,默认端口22,本身具备加密能力,不需要额外配置被动模式,公网访问只需要放行22端口。
- FTPS:FTP over SSL/TLS,端口一般是990(隐式)或21(显式),在FTP基础上加了加密层。
公网场景下怎么选
行业共识认为,对于不需要FTP遗留系统兼容的场景,SFTP是更稳妥的选择,只用22端口,不需要映射一堆高位端口,也不怕被动模式配置错误,如果你必须用标准FTP(比如兼容老设备),那务必要设置强密码,并限制访问IP。
FTP服务器怎么搭建才安全(公网环境)
- 限定访问IP:在FTP服务器软件里设置“仅允许以下IP连接”,只放行你办公地点的固定出口IP。
- 设置用户配额:给FTP用户限速、限制目录范围,防止被入侵后拖库。
- 使用FTPS显式加密:如果客户端支持,在FileZilla Server中开启TLS,让21端口先明文后加密,兼顾兼容性和安全性。
FTP服务器连不上?常见故障排查清单
按下面的顺序排查,能解决大多数公网连接问题。
- 检查服务状态
:在服务器本机运行
netstat -an | findstr 21(Windows)或ss -lntp | grep 21(Linux),确认端口处于LISTEN状态。 - 检查路由器端口映射:从外网用
telnet 公网IP 21测试,如果不通,说明映射没生效或运营商封了21端口,有些运营商封禁常用端口,可以把外部端口改成2121或2122。 - 检查被动模式返回IP:用FileZilla客户端连接,看日志里“PASV response”返回的IP是公网IP还是内网IP,如果是内网IP,说明服务器被动模式配置不对,手动指定外网IP。
- 检查防火墙规则顺序:Windows防火墙多个规则有优先级,放行规则要放在阻止规则前面。
Q&A:FTP服务器端口公网访问常见问题
FTP服务器端口是多少?为什么我改了端口还是连不上?
FTP默认控制端口是21,数据端口是20(主动模式)或随机高位端口(被动模式),改了端口连不上,大概率是只改了一个地方。需要同时改FTP服务软件监听端口、路由器映射端口、防火墙放行规则,三处保持一致,如果改的是21到别的端口,访问时要用ftp://IP:端口这种格式。
FTP和SFTP在公网访问上有什么区别?
FTP需要处理21端口加被动模式端口段,做端口映射时规则多,且明文传输不安全,SFTP只有22端口,规则简单,加密传输,更加可靠。如果设备支持,建议优先用SFTP,不需要额外配置被动模式,也免去了动态IP带来的端口映射烦恼。
内网穿透FTP服务器,被动模式怎么处理?
内网穿透时,FTP服务器返回的被动模式IP是内网地址,客户端无法连接,解决方法是:在FTP服务器软件中把“被动模式IP”设置为穿透工具的域名或云服务器公网IP,同时把被动模式端口段也加入穿透工具的转发列表,以FRP为例,需要配置多个remote_port对应本地FTP服务器的被动端口段。
公网访问FTP的难点从来不在软件安装,而在于端口链路完整打通,无论是做端口映射还是内网穿透,牢记控制端口和数据端口必须同时可达,安全方面,优先SFTP,其次FTPS,裸FTP放公网风险较高,按上述步骤配置好后,建议用手机流量(4G/5G)从外部网络测试一遍,确认能正常列目录和传输文件,这才算真正搞定。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/567442.html




