![当 Windows 防火墙开启时,无法从同一 LAN 中的其他计算机访问 FTP 服务器](https://linux22.com/image/1557353/%E5%BD%93%20Windows%20%E9%98%B2%E7%81%AB%E5%A2%99%E5%BC%80%E5%90%AF%E6%97%B6%EF%BC%8C%E6%97%A0%E6%B3%95%E4%BB%8E%E5%90%8C%E4%B8%80%20LAN%20%E4%B8%AD%E7%9A%84%E5%85%B6%E4%BB%96%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%AE%BF%E9%97%AE%20FTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
答案1
为了FTP您需要确保同时打开 TCP 端口20
和21
。此外,如果计算机上运行的服务器服务使用被动模式,那么您还需要打开 FTP 服务器配置使用的 TCP 端口范围。
快速端口细分
看来您正在 TCP 端口上运行不安全的 FTP
20
,并且21
(即主动和被动),或许还有 FTPS在 TCP 端口上使用隐式 SSL990
和989
。FTP 协议使用一个端口/通道来控制/命令,并使用另一个端口/通道来传输客户端和服务器之间的数据交换部分。
- 命令通道:TCP端口
21
- 数据通道(主动):TCP 端口
20
- 数据通道(被动):
<FTP Server configured TCP port range>
- 命令通道:TCP端口
990
- 数据通道(主动):TCP 端口
989
命令行防火墙(此部分应该可以解决问题)
以管理员身份在命令行中运行以下命令来创建 Windows 防火墙规则,允许到您的 FTP 服务器服务的入站流量在适用于任何 IP 地址和 Windows 操作系统分类网络的任何配置文件范围的命令和数据端口上进行通信。
您需要指定program="<C:\FTPServer\FTPServer.exe>"
适合您的服务器的值,或者使用service=<ftpsvc>
指向服务名称的值。
netsh advfirewall firewall add rule name="FTP Inbound" dir=in action=allow program="%windir%\system32\svchost.exe" remoteip=any localip=any protocol=TCP localport=20,21,990,989 remoteport=20,21,990,989 profile=any
运行以下命令禁用状态 FTP 过滤,以便防火墙不会阻止任何 FTP 流量因此您不需要打开整个被动端口范围来允许该流量。
netsh advfirewall set global StatefulFTP disable
Windows 防火墙图形用户界面
确保您拥有范围在规则中定义,因此LAN 的 IP 地址范围被允许通过,或者允许任何 IP 地址最后,您需要确保服务器上的网络适配器在防火墙规则允许的配置文件中进行配置。
端口
笔记: 如果适用,添加被动端口范围。
范围
个人资料