我需要打开哪些端口才能访问 Windows FTP 服务器(在 Server 2008 上运行)以进行主动和被动 FTP?单独打开 21 个端口是不够的。
答案1
取决于您使用的是主动还是被动 ftp。以下是来自本网站从端口角度对差异进行了很好的解释:
Active FTP :
command : client >1023 -> server 21
data : client >1023 <- server 20
Passive FTP :
command : client >1023 -> server 21
data : client >1023 -> server >1023
所以:
- 主动 FTP - 防火墙必须允许 TCP/21 上的传入连接和 TCP>1023 上的传出连接。
- 被动 FTP - 防火墙必须允许 TCP/21 和 TCP>1023 上的传入连接
如果您要使用被动 ftp,最好的办法是配置 ftp 服务器以使用特定(有限)的端口范围,以便客户端连接数据流,然后在防火墙上打开该范围。
答案2
如果您使用真正的防火墙,它将能够查看PASV
FTP 控制通道 (TCP/21) 内的命令并相应地打开数据端口。因此,您只需打开 TCP/21,防火墙会处理其余的事情。
当然,通常的 SOHO 路由器(和软件防火墙)不会为您做到这一点。在这种情况下,您应该坚持使用squillman
推荐的定义端口范围(每个并发用户约 3 个端口)。
答案3
我遇到了类似的奇怪问题,即 Windows 防火墙 (server 2003) 中的所有端口 (21、20 和 pasv 的 5500) 都处于打开状态,但 telnet 证明防火墙打开时甚至 21 也被阻止。只要防火墙关闭,一切都会正常工作。最重要的是,一天中的某些时间 (完全随机) 无论如何它都会正常工作。直到它不工作为止。当它不工作时,关闭 Windows 防火墙可以解决问题。这不是 FTP 服务器的问题,它甚至没有记录连接尝试。