ftp主动模式和被动模式

FTP模式说明:

FTP是基于TCP的服务,使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。

固定的命令端口:21

数据端口:(取决于连接模式)20或者>1024其它端口

主动FTP

主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令"port N+1"到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

 

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

 

 

1. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C)

2. FTP服务器的21端口到大于1024的端口(服务器响应客户端的控制端口 S->C)

3. FTP服务器的20端口到大于1024的端口(服务器端初始化数据连接到客户端的数据端口 S->C)

4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)

总结:

命令连接:客户端>1024端口-> 服务器21端口
数据连接:客户端>1024端口<- 服务器20端口

 

被动FTP

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

 

在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

 

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C)

2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接 S->C)

3. 从任何端口到服务器的大于1024端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C)

4. 服务器的大于1024端口到远程的大于1024的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C)

总结:

命令连接:客户端>1024端口-> 服务器21端口
数据连接:客户端>1024端口-> 服务器>1024端口

 

根据上面的基本描述,我们可以知道。整改备份数据上传只能使用主动模式连接才能成功!

以下为各客户端默认连接方式说明及主动模式更改方法

各客户端默认连接方式说明:

1、 IE浏览器访问方式-------à被动模式

2、 Linux字符连接------------à被动模式

3、 Windows字符连接-------à主动模式

IE更改FTP连接方式为主动方法:

工具---Internet选项---高级---使用被动FTP(去掉勾选)-------OK

Linux下更改ftp连接方式为主动:

当ftp正常连接后输入:passive 将passive 模式关闭即可。

事例如下:

Remote system type is Windows_NT.

ftp> ls

227 Entering Passive Mode (192,168,6,23,4,10).

ftp: connect: Connection refused

ftp> passive

Passive mode off.

ftp> ls

200 PORT command successful.

 

 

 

 

由于整个备份计划全部由shell完成。故windows下面可不做任何更改。Linux下面则需做少许改动。

实际操作如下:

更改shell上传部分脚本如下:

ftp -inv <<EOF

open 192.168.x.xx

user username password

passive

binary

cd bakdir

mput ${backname}*

mdelete ${backname}${olddate}.tgz

EOF

 

更改防火墙策略。增加以下内容:

# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --sport 20 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --sport 21 -j ACCEPT

重启防火墙生效!!

posted @ 2018-04-19 13:30  random_lee  阅读(1545)  评论(0编辑  收藏  举报