使用Windows Server 2008 R2打造双线FTP服务器
1 FTP的PASV与PORT模式概述
在所有的网络服务中,FTP服务器的发布是比较复杂的,这是由FTP的工作原理造成的。FTP服务器主要有两种工作模式:PORT模式与PASV模式。
在PORT模式中,FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
PASV模式在建立控制通道的时候和Port模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;
而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
2 使用防火墙发布FTP服务器通常选择PASV模式
为了解决这个问题,并且在许多情况下,最终用户没有机会配置所属网络的防火墙。所以,一般情况下,在发布FTP服务器时,通过是让FTP服务器工作在PASV模式,并且指定PASV对外服务的地址以及PASV服务的端口,让防火墙发布指定的端口。
以前我一直使用serv-u做FTP服务器,因为我的网络中有不止一台FTP服务器并且要发布到Internet供用户使用。在Windows Server 2008及其以前的版本中,虽然Windows操作系统自带的FTP服务器非常安全,但由于其配置较少,并且不能指定PASV端口对外地址、修改PASV端口范围较复杂等,一直使用serv-u等FTP服务器软件。但是,随着64位Windows操作系统的普及与发展,现在在网络中配置FTP又被提上了日程:支持64位Windows Server操作系统的FTP并不是很多,并且这些FTP服务器越来越复杂、庞大,偶尔会有漏洞出现。而对于我们大量用户来说,需要FTP服务器的功能有限:能发布到Internet、能上传、下载,并能分用户管理就行。现在,Windows Server 2008 R2,升级了IIS中集成的FTP服务器,除了具有原来的功能外,还增加了指定PASV地址与端口的功能,这足以满足用户的需求。在本文中,我们通过一个案例,进行介绍。
3 FTP服务器实验案例
图1 FTP实验拓扑
在图1中,由Forefront TMG 2010保护的内网,有两台FTP服务器,这两台FTP服务器,除了供“内网”使用外,还发布到Internet,供Internet用户使用。并且,该网络外接有电信与联通线路,可以让用户根据自己的网络选择是使用电信还是联通线路连接到FTP服务器。
要解决图1所描述的网络的功能,我们可以有多种方法解决,在此先解决一个以前在serv-u中采用的办法:用不同的端口发布FTP服务器,我们通过表1对此做出规则。
服务器
电信服务端口
联通服务端口
PASV端口
内网服务端口
FTP1
2010
2011
2012
21
FTP2
2020
2021
2022
21
在按照表1规划后,Internet的用户,如果是电信线路,则通过ftp://219.x.x.x:2010访问FTP1,通过ftp://219.x.x.x:2020访问FTP2;如果是联通线路,则通过ftp://61.y.y.y:2011访问FTP1,通过ftp://61.y.y.y:2021访问FTP2;而内网用户,则直接通过ftp://192.168.1.11访问FTP1,通过ftp://192.168.1.12访问FTP2。
4 实验步骤
在做好规划之后,实现起来就比较简单了。主要步骤如下:
4.1 双WAN口路由器设置
在双WAN口路由器中,映射TCP的2010、2011、2012、2020、2021、2022到Forefront TMG 2010的“外网地址”10.10.10.10,如图2所示。
图2 配置双WAN口路由器
4.2 Forefront TMG设置
在Forefront TMG 2010中,创建两个自定义协议,其中么一个协议名称为FTP_in:2010-2012(也可以是其他名称)、采用TCP协议、方向为“入站”、协议号为2010~2012(如图3~图5所示);另一个协议名称为FTP_in:2020-2022、协议号为2020~2022的TCY入站协议。然后创建“非Web服务器发布规则”,发布192.168.1.11的服务器,采用FTP_in:2010-2012协议(如图6~10所示);发布192.168.1.12的服务器,采用FTP_in:2020-2022协议。
图3 新建协议
图4 指定协议名称
图5 设置连接信息
图6 创建服务器发布规则
图7 设置服务器发布规则名称
图8 指定服务器的地址
图9 选择协议
图10 发布完成
图11 应用设置
4.3 FTP服务器设置
在FTP1服务器中(已经安装好Windows Server 2008 R2协议),安装IIS与FTP服务,指定FTP服务器使用PASV的端口为2012,创建三个FTP服务器中,这三个服务器可以使用同一个“父目录”,并且这三个服务器的服务端口分别为21(内网使用)、2010(电信使用)、2011(网通使用)。相关步骤如下。
(1)在“Internet信息服务管理器”中,在IIS管理的根路径,双击右侧的“FTP防火墙支持”,如图12所示。
图12 FTP防火墙支持
(2)在“FTP防火墙支持”页,在“数据通道端口范围”文本框中,键入前面规则的端口范围,在此为2012-2012,然后单击“应用”,如图13所示。
图13 指定PASV端口范围
(3)返回到图12后,双击“FTP SSL设置”链接,选中“允许SSL连接”,然后单击“应用”,如图14所示。
图14 FTP SSL设置
接下来创建用于内网使用的FTP,该FTP服务器的端口为21。步骤如下。
(4)右击“网站”,在弹出的快捷菜单中选择“添加FTP站点”,如图15所示。也可以单击右侧任务窗格中的“添加FTP站点”链接。
图15 添加FTP站点
(5)设置站点名称为“FTP-21”,并为站点配置物理路径,如图16所示。
图16 指定FTP站点名称
(6)在“绑定和SSL设置”页,设置端口号为21,在“SSL”选项组中,选择“无”,如图17所示。
图17 绑定和SSL设置
(7)在“身份验证和授权信息”页,选择“匿名”用户访问,如图18所示。
图18 匿名访问
然后参照(4)~(7)的步骤,分别创建名为“FTP-DX_2010”、“FTP-WT_2011”的FTP站点,使用同一个目录、端口分别为2010、2011,如图19~图22所示。
图19 电信FTP站点
图20 电信FTP端口
图21 网通FTP站点
图22 网通FTP端口
(8)创建完成三个FTP站点后,返回到IIS管理器。接下来要修改各FTP服务器对外的PASV的IP地址,以“FTP-DX_2010”站点为例。在IIS中,在左侧任务窗格选中“FTP-DX_2010”,双击右侧的“FTP防火墙支持”链接,如图23所示。
图23 FTP防火墙支持
在弹出的“FTP防火墙支持”页,在“防火墙的外部IP地址”文本框中,键入外网的IP地址,在本例中是219.x.x.x,然后单击“应用”按钮,如图24所示。
图24 指定PASV的IP地址
(9)同样,对于发布到网通的“FTP-WT_2011”FTP站点,修改其PASV的IP地址为网通的地址,在本例中为61.y.y.y,如图25所示。
图25 指定网通FTP的PASV的IP地址
(10)而对于用于内网的FTP,则不需要修改其PASV的IP地址,该地址为空即可,如图26所示。
图26 内网FTP不需要修改
经过上述配置,Internet上的用户,以及内网的用户,就可以使用不同的地址与端口、访问同一台FTP服务器中的内容了。
TOP