FTP基础知识及排障方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在近来的工作中遇到这个问题,一台Server-U FTP服务器一启动操作系统自带的防火墙后,使用IE和资源管理器无法访问FTP站点。但是使用命令行又可以访问,对此很是郁闷。于是便花时间来进行处理此事,最终得以解决。下面我便介绍一下FTP相关知识及我处理过程。
一、FTP基础知识
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
二、FTP服务器端的注意事项
2.1、FTP服务器是公网IP,用公网静态域名
A、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。
B、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。
C、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。
2.2、FTP服务器是内网IP
这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持PASV方式。
三、FTP客户端的注意事项
请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。
3.1、客户端只有内网IP,没有公网IP
从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。很多FTP管理员发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。
3.2、客户端有公网IP,但安装了防火墙
如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开 1024以上的高端端口。
3.3、常见的FTP客户端软件PORT方式与PASV方式的切换方法。
大部分FTP客户端默认使用PASV方式。IE6.0以后默认也使用PASV方式。XP操作系统的资源管理器打开FTP默认也使用PASV方式(我的电脑是这样的)
在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
在IE查看FTP模式:
工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。(具体请看示图)
3.4、请尽量不要用IE作为FTP客户端
IE只是个很粗糙的FTP客户端工具。首先,IE6.0以下的版本不支持PASV方式;其次,IE在登录FTP的时候,看不到登录信息。在登录出错的时候,无法找到错误的原因。在测试自己的FTP网站的时候,强烈建议不要使用IE。我常使用资源管理器。
四、解决问题
从上面的知识部分的介绍,现在来说一下实际的环境。
服务器端:有一个公网IP地址直接与internet相连,前端出口的硬件防火墙只做一起简单的配置,因此需要在服务器开启操作系统自带的软件防火墙来保护服务器。
客户端:绝大部分是没有公网IP的企业内部用户,操作系统多为windows XP以上版本。小量用户是安装有windows Server 2003的具有公网IP地址的服务器。
结合实际环境和FTP知识得出在FTP服务器需要打开主动和被动两种模式来供客户端使用。而我开始只在软件防火墙上开启了主动模式。在这种情况下,使用命令行和部分FTP客户端软件可以进行连接。而常用的IE,资源管理器和部分的FTP客户端软件不能连接。我们需要在FTP服务器软件开启被动模式,并在防火墙开放相应端口。
FTP服务器软件是Server-U.
4.1被动模式配置操作:
A,打开Serv-U的管理界面:开始—程序—Serv-U---Serv-U administrator.
B,配置被动模式:Serv-U服务器—本地服务器—配置---高级---在服务器栏的PASV端口范围中输入你分配给FTP端口范围(此处我输入6000-6005)--应用。(具体请看示图)
4.2软件防火墙的设置操作:
A, 打开防火配置界面:右击“网上邻居”—属性—右击“本地连接”—属性—在本地连接属性页上点击”高级”---在windows 防火墙栏中点击设置---在windows 防火墙页上点击”例外”
B, 添加FTP被动端口:添加端口—输入端口名称(我输入FTP 6000)--在端口号中输入需要开放的相应端口(此处我输入 6000)---由于客户端比较分散,此处我没有限制源地址的范围,而直接点击” 确定“。按上述的方法将其它开放的FTP添加到例外中。(具体请看示图)
C, 启用防火墙:在windows 防火墙 页中点击常规,---点击”启用”。
4.3 客户端FTP测试(略)
转载于:https://blog.51cto.com/freepeng/249028