使用ISA发布内网中多台FTP服务器的最终解决方法(使用PASV方法)
推荐 原创
许多网管可能都有这样的经验:在有一个公网IP地址的时候,如果内网有多台FTP服务器需要发布,除了其中的一台FTP服务器可以21端口发布,其他的FTP服务器只能使用21之外的端口进行发布。这样发布的FTP服务器,如果最终用户是内网用户(就是通过代理服务器或者NAT路由器共享上网的用户),在访问非标准端口的FTP服务器时,只能使用PORT模式,并且这些用户只能使用专门的FTP客户端软件如FlashGet、CuteFTP等,而不能使用IE等软件上传和下载。这种网络拓扑如图1所示。

图1 普通用户只能使用PORT模式访问非标准端口的FTP服务器
如果你的FTP服务器具有更加复杂的网络,例如,我的ISA Server 2006具有公网地址202.206.203.193(教育网IP),我们学校还有一个电信的出口。因为从公网访问教育网是很慢的,我们的网络中心给我提供了一个公网地址124.xx.xx.126,并且将这个地址映射到我的ISA Server公网地址202.206.203.193中。 如果在这种情况下,你有多台serv-u的FTP服务器想要发布,普通的方法,只能使用21端口发布内网的1台FTP服务器,使用非标准端口发布的FTP服务器是不能让公网用户访问的。这种网络拓扑如下:
经过多次实验,问题得以解决。在本文中,内网的防火墙以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.126是FTP服务器所属网络中最外一级防火墙的外网地址(这个地址映射给了FTP服务器的防火墙的外网地址)。
例:内网172.30.5.16的FTP服务器的设置
1、在172.30.5.16的计算机上,打开Sev-U的控制台,设置PASV端口范围为2006-2006,如图3所示。
说明:在此只需要设置一个地址,可以允许最大量的用户访问,而不是一个端口只能连接一个FTP的客户端。
2、选中“允许被动模式数据传输,使用IP”这一项,并且设置PASV地址为防火墙映射的公网地址124.xx.xx.126,如图4所示。
图4
3、将FTP服务器的端口地址从21修改为2116,如图5所示。
图5 设置FTP端口号,默认为21
4、然后重新启动FTP服务,如图6所示。
图6
5、转到图2中的内网防火墙中进行设置,本例中使用ISA Server 2004(ISA Server 2006与此相同)。如果是如果是使用其他防火墙或者路由器的NAT功能,可以直接转发TCP的2116和TCP的2006到内网的172.30.5.16的IP地址上却可。下面以ISA Server为例说明。
在ISA Server 2004中,创建服务器发布规则,在“通讯”中选择“新建”,设置协议名称为“FTP:2116”,设置协议端口为TCP的2006和TCP的2116(入站),如图7、图8所示。
图7 新建协议
图8 为内网FTP创建协议,指定PASV端口和FTP服务器发布端口
6、指定FTP服务器的内网地址“172.30.5.16”,并且选中“使请求显示来自初始客户端”,如图9所示。
图9
说明:对于图2的网络,如果你想在内网中(IP地址为172.30.x.x的网络)使用21端口访问172.30.5.16等FTP服务器,可以在Serv-U中,再创建服务端口为21的FTP服务器,因为serv-U是支持多个不同端口的FTP服务器的,只不过你要把相同的用户在重建一下而已,如图10所示。
图10 创建多个FTP服务器(端口不同)
未知 2010-02-26
handsometiger 2009-12-06
MZGFIT 2009-01-14
dennisxinyu 2008-12-17