FTP
基础知识及排障方法
在近来的工作中遇到这个问题,一台
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
测试(略)