许多网管可能都有这样的经验:在有一个公网IP地址的时候,如果内网有多台FTP服务器需要发布,除了其中的一台FTP服务器可以21端口发布,其他的FTP服务器只能使用21之外的端口进行发布。这样发布的FTP服务器,如果最终用户是内网用户(就是通过代理服务器或者NAT路由器共享上网的用户),在访问非标准端口的FTP服务器时,只能使用PORT模式,并且这些用户只能使用专门的FTP客户端软件如FlashGetCuteFTP等,而不能使用IE等软件上传和下载。这种网络拓扑如图1所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_FTP
 
1  普通用户只能使用PORT模式访问非标准端口的FTP服务器
如果你的FTP服务器具有更加复杂的网络,例如,我的ISA Server 2006具有公网地址202.206.203.193(教育网IP),我们学校还有一个电信的出口。因为从公网访问教育网是很慢的,我们的网络中心给我提供了一个公网地址124.xx.xx.126,并且将这个地址映射到我的ISA Server公网地址202.206.203.193中。 如果在这种情况下,你有多台serv-uFTP服务器想要发布,普通的方法,只能使用21端口发布内网的1FTP服务器,使用非标准端口发布的FTP服务器是不能让公网用户访问的。这种网络拓扑如下:
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_FTP_02经过多次实验,问题得以解决。在本文中,内网的防火墙以ISA Server 2004为例、内网的FTP服务器以Serv-U为例说明。本文解决的关键之点在于:
1、  Serv-U指定PASV服务的IP地址。
2、  Serv-U指定PASV服务的端口号。
3、  如果是使用ISA Server 2004发布非标准的FTP服务器时,不使用“FTP筛选器”。如果是使用其他防火墙或者路由器的NAT方式,则直接做端口映射或者端口转发即可。
为了方便,画表如下:
FTP内网地址
FTP服务端口
PASV端口
PASV地址
ISA发布的端口
172.30.5.15
2115
2015
124.xx.xx.126
2115
172.30.5.16
2116
2016
124.xx.xx.126
2116
172.30.5.25
2125
2025
124.xx.xx.126
2125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
其中,124.xx.xx.126FTP服务器所属网络中最外一级防火墙的外网地址(这个地址映射给了FTP服务器的防火墙的外网地址)。
在本文中,以发布图2中的内网地址为172.30.5.15FTP服务器为例,将此FTP服务器使用124.xx.xx.1262115端口发布(外网用户使用[url]ftp://124.xx.xx.126:2115[/url]并用PASV方式即可以访问,可以使用IECuteFTPFlashGET等多种客户端软件)。主要步骤如下:
例:内网172.30.5.16FTP服务器的设置
1、在172.30.5.16的计算机上,打开Sev-U的控制台,设置PASV端口范围为2006-2006,如图3所示。
说明:在此只需要设置一个地址,可以允许最大量的用户访问,而不是一个端口只能连接一个FTP的客户端。
2、选中“允许被动模式数据传输,使用IP”这一项,并且设置PASV地址为防火墙映射的公网地址124.xx.xx.126,如图4所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_isa_034
3、将FTP服务器的端口地址从21修改为2116,如图5所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_休闲_04
5 设置FTP端口号,默认为21
4、然后重新启动FTP服务,如图6所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_休闲_05
6
 
5、转到图2中的内网防火墙中进行设置,本例中使用ISA Server 2004ISA Server 2006与此相同)。如果是如果是使用其他防火墙或者路由器的NAT功能,可以直接转发TCP2116TCP2006到内网的172.30.5.16IP地址上却可。下面以ISA Server为例说明。
ISA Server 2004中,创建服务器发布规则,在“通讯”中选择“新建”,设置协议名称为“FTP:2116”,设置协议端口为TCP2006TCP2116(入站),如图7、图8所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_PORT_06使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_休闲_07
7 新建协议
8 为内网FTP创建协议,指定PASV端口和FTP服务器发布端口
6、指定FTP服务器的内网地址“172.30.5.16,并且选中“使请求显示来自初始客户端”,如图9所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_休闲_089
创建服务器发布规则后,公网上的用户(包括公网上的内网用户)就可以使用[url]ftp://124.xx.xx.126:2116[/url]访问以非标准端口发布的FTP服务器了。其他的内网服务器的发布,可以参照上面的步骤创建。
 
说明:对于图2的网络,如果你想在内网中(IP地址为172.30.x.x的网络)使用21端口访问172.30.5.16FTP服务器,可以在Serv-U中,再创建服务端口为21FTP服务器,因为serv-U是支持多个不同端口的FTP服务器的,只不过你要把相同的用户在重建一下而已,如图10所示。
使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)_isa_09
10 创建多个FTP服务器(端口不同)