我们的拓扑图如下:
此实验用到了三台机器:
Beijing: 在此机器上安装ISA Server 2006
AnHui: 在此机器上搭建 Serv-U服务器
Shanghai: 作为外网机器来进行测试
步骤一: 在Anhui安装Serv-u并进行相应的配置
我使用的是Serv-u7.3,7.3与以前的版本相比,操作界面大不一样,不仅界面不同,而且功能也增加了不少,我个人认为更具人性化操作,下面我们开始安装:
此步是不用多说,肯定是接受。
点击是,定义新域:
通过相应协议可以访问到FTP服务器。在此只允许21端口,否则可能会因为IIS的存在导致SU启动失败或是影响IIS的正常运行!
可以看到当前已经存在了两个用户,杜飞用户上面有一个黄色的惊叹号是因为他没有相对的权限。也就是说,虽然这里创建了杜飞这个用户,但没有给他分配权限。
下面我们来创建一个允许匿名访问的用户,
有两种特殊用户名:"Anonymous" 和 "FTP"。这两个用户名含义相同,可供访客访问文件服务器。这些用户不需要密码,因此密码部分应该留空。虽然无需输入密码,但 Serv-U 会要求使用这些帐户登录的用户提供其 email 地址以完成登录过程。
然后测试一下:
也可以设置使用域名访问,如下图所示:
然后可以通过DNS或是HOSTS来进行解析操作,解析过程在此不再累述。
然后客户端就可以使用域名来进行连接FTP服务器。
测试如下:
Serv-U的搭载我们就已经完成了,下面就来看看怎么通过ISA 发布出来,供外网用户访问。
步骤二:通过ISA将内网的Serv-U服务器发布出来
因为这是希望外网用户访问内网的服务器,我们需要使用发布规则
创建完成后,我们会发现ISA上开始侦听21端口:
使用IP来访问没有问题,但使用域名来访问时就不行了,这是因为解析有问题:我们可以使用DNS解析,也可以使用Hosts文件,在此我为了操作简单,就直接在ShangHai这台机器上使用Hosts解析:加入以下一行:
192.168.0.4 ftp.dufei.com
然后测试解析是否正常,如下图
至此,实现结束!
但有朋友说按照上面的方法做了,但一直不成功,我分析原因可能如下:
这主要是因为FTP协议与其他的协议不同之外,一般的协议只使用一个周知端口,也就是说客户端只要去向这个周知端口发出连接,一般就可以通讯了,但是FTP就不同了,它在建立连接时候需要创建控制连接也需要用到数据传输连接,控制连接主要用于传递客户端的命令以及服务器端对命令的响应,这个端口是TCP/21端口。但是数据连接的端口是不固定的,这些端口用于传输具体的数据。而且根据FTP工作模式的不同,这个数据连接可能是客户端也有可能是服务器发起的。
关键问题就在于这个数据连接模式上,这里有两种模式,一种是主动模式(port mod),在通讯过程中,控制连接使用周知端口21/TCP,但是,数据传输时所使用的目的端口无法知道, FTP协议使用一个标准的端口21作为ftp-data端口,但是这个端口只用于连接的源地址是服务器端的情况,在这个端口上根本就没有监听进程。FTP的数据连接和控制连接的方向一般是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。连接的端口是由服务器端和客户端协商确定的。所以,FTP协议的这个特征对ISA增加了困难。
因此如果Serv-U工作于被动模式时,需要指定 Serv-U 用于 PASV 模式数据传输的端口包含范围。Serv-U 通常在打开套接字用于 PASV 模式数据传输时,允许操作系统为它指派一个随机的端口号。该属性通过将 Serv-U 的 PASV 端口范围限定于一个已知的范围,满足了路由器或防火墙预先了解特定端口范围的需求。对最繁忙的文件服务器来说 10 个端口足够了。但如果是通过防火墙来发布内网Serv-U服务器时,需要在防火墙上进行设置允许相应的端口。具体操作在此不再累述,请参考此文自行设置!以上只是个人拙见,如有不同意见,请批评指正!
本文转自 dufei 51CTO博客,原文链接:http://blog.51cto.com/dufei/123028,如需转载请自行联系原作者