服务器有防火墙时,IIS FTP能不能连上,关键不是只开21端口,而是先选被动模式,再把IIS数据端口范围、Windows防火墙和云安全组三处放行一致。只开控制端口,登录可能成功,但列目录和传文件很容易卡住。
先理解FTP为什么会被防火墙拦住
据RFC 959定义,FTP使用控制连接和数据连接两条通道,控制连接通常走21端口,负责登录和发命令;数据连接负责列目录、上传下载,防火墙如果只放行21,控制通道通了,数据通道仍可能被挡在门外。
主动模式与被动模式端口走向对比
行业共识认为,生产环境应优先使用被动模式,并把数据端口范围限制在可控区间,原因很直接:主动模式下,服务器会主动连客户端的高位随机端口,客户端防火墙常常不买账;被动模式下,客户端主动连服务器指定的数据端口,服务器防火墙就必须提前放行。
| 模式 | 谁发起数据连接 | 防火墙主要放行位置 | NAT环境注意 |
|---|---|---|---|
| 主动模式PORT | 服务器连客户端 | 客户端防火墙放行服务器 | 客户端在NAT后容易失败 |
| 被动模式PASV | 客户端连服务器 | 服务器防火墙放行数据端口范围 | IIS要填外部IP,映射范围要一致 |
服务器防火墙开启后FTP连不上怎么办:先查模式再查端口
遇到“能登录但dir卡住”“上传到一半断开”,先别急着改账号,按下面顺序排查:
- 客户端是否使用被动模式,多数FTP客户端默认被动,但命令行和旧工具可能不是。
- IIS是否配置了FTP防火墙支持,没有配置时,被动模式可能返回内网IP或随机端口。
- Windows防火墙是否放行21和50000-50099这类固定数据端口范围。
- 云服务器安全组是否放行同一组端口,安全组和系统防火墙是两道门,缺一不可。
- NAT环境是否把端口范围映射到服务器内网IP,IIS外部IP是否填对公网地址。
相当一部分FTP连接失败不是账号问题,而是数据端口没放行,把控制通道和数据通道分开看,排障会快很多。
云服务器IIS FTP被动模式设置:Windows防火墙与安全组双放行
云服务器上最常见的坑,是Windows防火墙开了,安全组没开;或者安全组开了,IIS数据端口范围没配,下面按可验证路径操作。
IIS端配置FTP防火墙支持
在Windows Server上安装IIS和FTP服务器角色后,打开IIS管理器,点服务器节点,找到“FTP防火墙支持”,填写数据通道端口范围,例如50000-50099,如果服务器在NAT后面,外部IP填公网IP;云服务器绑定公网IP时也建议按实际网络填写,应用后重启FTP站点。
据微软官方文档,IIS FTP防火墙支持需要填写数据通道端口范围,NAT环境还要填外部IP,这个设置直接决定被动模式告诉客户端去连哪个地址和端口。
Windows防火墙放行控制与数据端口
用管理员权限打开PowerShell,执行:
New-NetFirewallRule -DisplayName "IIS FTP Control 21" -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow New-NetFirewallRule -DisplayName "IIS FTP Passive 50000-50099" -Direction Inbound -Protocol TCP -LocalPort 50000-50099 -Action Allow
也可以用netsh:
netsh advfirewall firewall add rule name="IIS FTP 21" dir=in action=allow protocol=TCP localport=21 netsh advfirewall firewall add rule name="IIS FTP Passive" dir=in action=allow protocol=TCP localport=50000-50099
规则来源建议限制为业务来源IP,不要长期对全网开放,FTP协议较老,暴露面越小越稳。
云安全组放行同样端口
登录云控制台,找到实例安全组,入方向添加TCP 21和TCP 50000-50099,授权对象填客户端公网IP或办公网出口IP,安全组规则和Windows防火墙规则要保持端口范围一致,否则会出现“本机能连、外网不能连”的典型现象。
客户端验证不要只看登录成功
在客户端先用命令行验证控制端口:
Test-NetConnection 服务器公网IP -Port 21 Test-NetConnection 服务器公网IP -Port 50000
再用FTP客户端以被动模式登录,执行列目录和上传小文件,能登录不代表数据通道通,能列目录、能传文件才算配置完成。
本地机房服务器FTP外网访问设置:NAT端口映射与防火墙联动
本地机房没有云安全组,但有路由器和硬件防火墙,操作逻辑一样,只是放行位置换成路由器端口映射,把TCP 21和TCP 50000-50099映射到FTP服务器内网IP;IIS的FTP防火墙支持里外部IP填公网IP;Windows防火墙放行同一组端口,客户端使用被动模式。
如果外网能登录但列目录超时,优先检查映射是否只做了21,漏了数据端口范围,硬件防火墙如果有应用层FTP检测,关闭或调整FTP ALG,避免它改写端口导致IIS被动设置失效。
中小企业FTP服务器搭建与配置价格参考:自建和外包怎么选
自建需要Windows Server授权、公网IP、运维时间和安全加固,外包配置价格通常按站点数量、是否含SSL证书、是否含防火墙和安全组联调、是否跨地域上门来报价,常见从几百元到数千元不等,跨地域上门另计,业内专家指出,中小企业不必追求复杂方案,关键是固定被动端口并做好访问控制。
| 方式 | 适合场景 | 主要成本 | 注意点 |
|---|---|---|---|
| 自建配置 | 有服务器和运维人员 | 授权、带宽、人力 | 防火墙三处端口一致 |
| 外包配置 | 缺少Windows运维经验 | 按站点和安全加固报价 | 交付时保留端口清单 |
如果只是临时传文件,也可以评估SFTP或网盘方案,减少FTP防火墙排障成本,需要保留传统FTP客户端时,按上面的固定被动端口方案更可控。
把控制通道和数据通道都放行,并让IIS、Windows防火墙、云安全组或NAT映射的端口范围保持一致,FTP才能稳定工作,只开21端口,登录成功但传文件失败,是服务器防火墙下IIS FTP设置中最常见的半通状态。
服务器防火墙IIS FTP设置常见问题Q&A
服务器防火墙IIS FTP设置后外网能连内网不能连怎么办
先检查Windows防火墙入站规则是否限制了来源网段,内网客户端是否被规则漏放行,再确认内网客户端也使用被动模式,并检查IIS绑定和DNS解析,内网走NAT回流时,路由器是否支持回流映射也要看。
Windows防火墙下IIS FTP被动模式端口范围可以随便填吗
不能随便填,范围要与Windows防火墙、云安全组或路由器映射完全一致,范围过宽会增加暴露面,并发多时再适度扩大,并限制来源IP,客户端必须使用被动模式。
服务器防火墙IIS FTP设置需要开放哪些端口
控制端口开放TCP 21,被动数据端口开放IIS里设置的TCP范围,例如50000-50099,若启用FTPS显式加密,控制端口仍是21;隐式FTPS的990端口不常用,控制端口21,被动数据端口按IIS设置范围,Windows防火墙和云安全组保持一致即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/%e9%98%b2%e7%81%ab%e5%a2%99%e4%b8%8biis-ftp%e6%80%8e%e4%b9%88%e8%ae%be%e7%bd%ae%ef%bc%9f%ef%bc%8c%e6%9c%8d%e5%8a%a1%e5%99%a8ftp%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%ae%ef%bc%9f/


