Windows Server 2003阻止传出FTP被动模式

我在同一防火墙/路由器后面有两台机器 – 一台是Windows 7工作站,另一台是Windows 2003服务器。 问题是在Windows 2003服务器上使用FileZilla FTP 客户端 (注意:不是服务器)的传出 FTP访问。

使用Win7工作站上的FileZilla客户端,我可以使用被动模式连接到外部FTP站点,而不会出现问题。 但是,当我尝试从Windows 2003服务器上的FileZilla客户端尝试相同的事情时,它试图检索目录列表时挂起。 日志输出如下:

Status: Resolving address of xxxxx.com Status: Connecting to xxx.xxx.xxx.xxx:21... Status: Connection established, waiting for welcome message... Response: 220---------- Welcome to ... Command: USER ... Response: 331 User ... OK. Password required Command: PASS ************* Response: 230 OK. Current directory is / Command: SYST Response: 215 UNIX Type: L8 Command: FEAT Response: 211-Extensions supported: Response: EPRT Response: IDLE Response: MDTM Response: SIZE Response: REST STREAM Response: MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*; Response: MLSD Response: ESTP Response: PASV Response: EPSV Response: SPSV Response: 211 End. Status: Connected Status: Retrieving directory listing... Command: PWD Response: 257 "/" is your current location Command: TYPE I Response: 200 TYPE is now 8-bit binary Command: PASV Response: 227 Entering Passive Mode (xxx,xxx,xxx,xxx,164,24) Command: MLSD Error: Connection timed out Error: Failed to retrieve directory listing 

如您所见,通过端口21的连接被build立,并且进入被动模式的请求导致端口42008被build立。 但尝试通过该端口检索数据失败。 这完美地在Win7机器上运行。

我很了解被动和主动模式。 在这种情况下,Windows Server 2003将阻止某些端口上的stream量。 Windows防火墙服务没有运行在这个设备上,所以我可以消除这个罪魁祸首。 我将不胜感激任何其他build议如何跟踪这一点。

更新原来,这是特定于一个FTP站点。 我可以使用被动模式连接到另一个站点。 区别似乎是端口号。 我网站上的被动端口号是4693,站点上的被动端口号是42000以上,这是否有影响?

更新我写了一个小的套接字服务器程序运行在Win7的工作站,在端口50000听,然后从Windows 2003中,我运行telnet到工作站的地址/端口,…工作。 所以在局域网内,Windows 2003允许stream量。 不知何故,它不允许通过互联网的stream量。 莫名其妙。

更新问题是与FTP服务器。 见下面的答案。

在Windows Server 2003和Windows XP上,客户端应用程序使用的临时端口的默认范围是1025到5000.在某些情况下,默认范围内的可用端口将被耗尽。

netstat -nnetstat -b查看活动连接

增加dynamic分配给客户端TCP / IP套接字连接的临时端口的上限范围。

  1. 启动registry编辑器
  2. 浏览到,然后在registry中单击以下项:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters
  3. 在编辑菜单上,单击新build,DWORD值,然后添加以下registry值以增加可以通过dynamic分配给客户端的临时端口数:值名称MaxUserPort值数据
  4. closuresregistry编辑器

注意:您必须重新启动计算机以使此更改生效。

注意:增加用于客户端TCP / IP连接的临时端口的范围会消耗Windows内核内存。 不要将此设置的上限增加为高于容纳客户端应用程序套接字连接所需的值,以尽量减less不必要的Windows内核内存消耗。

所以现在看来​​这是FTP服务器(PureFTPd)的问题。 pipe理员调整了一些东西,并重新启动服务器,瞧,一切都开始工作。 我不得不停止假设问题是我的代码/configuration一直在。

感谢大家的贡献。