精华内容
下载资源
问答
  • 原因:lsmod |grep ftp 发现模块 ip_nat_ftp 被卸载导致被动木事无效 解决:在服务器上执行 modprobe ip_conntrack_ftp OK

    原因:lsmod |grep ftp 发现模块  ip_nat_ftp 被卸载导致被动模式无效

    解决:在服务器上执行    modprobe ip_conntrack_ftp   

    展开全文
  • 主动FTP和被动FTP

    千次阅读 2014-06-29 10:58:55
     在做项目的时候我才发现,FTP竟然有主动FTP和被动FTP之分。FTP的设置主要是由FTP服务器设置的。同样的一段代码,在本地测试的时候一切正常,但是访问局方的FTP服务器时却能传输数据。  下面我先简要地自己说...

    以下来自http://blog.sina.com.cn/s/blog_7099ca0b0100pb4r.html#SinaEditor_Temp_FontName

     在做项目的时候我才发现,FTP竟然有主动FTP和被动FTP之分。FTP的设置主要是由FTP服务器设置的。同样的一段代码,在本地测试的时候一切正常,但是访问局方的FTP服务器时却不能传输数据。

           下面我先简要地自己说一下,我对主被动FTP的理解。
           众所周知,FTP是一个比较特殊的服务,它占用了20和21两个端口,21是命令端口,20是数据端口。顾名思义,21端口是用来接发命令,20端口用来传递数据。但是并不是所有的时候都用20端口来实现数据交换。
           主动FTP过程大致如下:
           1、客户端启用端口N(N>1024,因为1024之前为特殊端口,不能手动占用,把N当作客户端的命令端口)和端口N+1(客户端的数据端口),从端口N向服务器的21端口发送PORT命令,其中PORT命令包含客户端IP和数据端口
           2、服务器接收到客户端的PORT命令后,并得知客户端用N+1端口监听数据。接着,服务器向客户端发送ACK应答(ACK与TCP通信中的连接握手一样)
           3、服务器用20端口再向客户端的N+1端口发送数据请求
           4、客户端向服务器端发送数据ACK应答
           以上就是主动FTP的大致过程,但是数据请求的发起方是服务器,如果此时客户端的防火墙启用了高端端口的屏蔽的话,有可能会发生阻塞,所以主动FTP的情况下,客户端最好把防火墙关闭了。

           被动FTP过程大致如下:
           1、客户端启用端口N(同样的N>1024)和N+1,N用作命令端口,N+1用作数据端口。然后客户端向服务器端发送PASV请求,告诉服务器端,这是被动FTP请求
           2、服务器端接收到PASV请求后,启动一个M(同样>1024)端口当作数据端,并发送PORT M到客户端
           3、客户端得到服务器端的数据端口后,再由端口N+1向服务器的M端口发起数据请求
           4、服务器端通过N端口向客户端的N+1端口发送ACK应答
           以上是被动FTP的大致过程,与主动FTP请求不同,请求的发起方是客户端,这样客户端就不会为防火墙的问题感到烦恼,但是同样道理,服务器端的端口就会有了限制。
       
           所以,一般情况下。服务器端为了方便管理,一般采用被动FTP方式连接。当然客户端可以通过ftp -d host port命令向服务器发送请求,可以看出到底用的是主动FTP还是被动FTP。

           这次我就遇到了这样的问题,写FTP上传下载代码时,把网上的东西copy过来,很顺利地在本地测试通过了。但是链接到局方的服务器的时候,怎么也不能上传和下载,而且不会抛出异常。后来我也是试着添了一行代码,结果测通了,代码如下:
           FtpDefine.ftpServer.enterLocalPassiveMode();
           怎么样,看起来很简单吧。因为写代码默认情况下是主动FTP,必须通过enterLocalPassiveMode()方法设置成被动FTP才能顺利上传下载。

           另外还有很多问题需要考虑,比方说代码的可扩展性、可移植性等等。就拿这次的代码来说,我测试的时候客户端和服务器端都是Windows Xp系统,而且FTP服务器设置的是主动FTP。但是真正用的时候,客户端是Linux系统,服务器虽然是Windows的,但是他们没有用Windows自带的FTP,而是用的软件,用法与Linux系统的相似,所以因为这个问题,我配错了配置文件,结果在代码中切换服务器目录时,总是报错。所以再此,我提醒大家,万事小心谨慎!希望我写的这些会对大家有点帮助。如果觉得看不懂的话,请参考我下面列出的链接地址,那里有更详细的说明。
     
    被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。详细内容参看附录1。  

    第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。 

    随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。 

    下面是主动与被动FTP优缺点的简要总结:  

    主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。 

    幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。



    展开全文
  • 开场白 基础 主动FTP 主动FTP的例子 被动FTP 被动FTP的例子 总结 参考资料 附录 1: 配置常见FTP服务器 开场白 处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地...

    主动FTP vs. 被动FTP 权威解释

    主动FTP与被动FTP-权威解释

    目录

    • 开场白
    • 基础
    • 主动FTP
    • 主动FTP的例子
    • 被动FTP
    • 被动FTP的例子
    • 总结
    • 参考资料
    • 附录 1: 配置常见FTP服务器


    开场白

    处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。

    本文也许不像题目声称的那样是一个权威解释,但我已经听到了很多好的反馈意见,也看到了本文在许多地方被引用,知道了很多人都认为它很有用。虽然我一直在找寻改进的方法,但如果你发现某个地方讲的不够清楚,需要更多的解释,请告诉我!最近的修改是增加了主动FTP和被动FTP会话中命令的例子。这些会话的例子应该对更好地理解问题有所帮助。例子中还提供了非常棒的图例来解释FTP会话过程的步骤。现在,正题开始了...

    基础

    FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21-命令端口和20-数据端口。但当我们发现根据(FTP工作)方式的不同数据端口并不总是20时,混乱产生了。

    主动FTP

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

    针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
    • 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C)
    • FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口 S->C)
    • FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口 S->C)
    • 大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)


    画出来的话,连接过程大概是下图的样子:


    在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。

    主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

    主动FTP的例子

    下面是一个主动FTP会话的实际例子。当然服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2的Linux工作站。debugging(-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。

    仔细考虑这个对话过程我们会发现一些有趣的事情。我们可以看到当 PORT 命令被提交时,它指定了客户端(192.168.150.80)上的一个端口而不是服务器的。当我们用被动FTP时我们会看到相反的现象。我们再来关注PORT命令的格式。就象你在下面的例子看到的一样,它是一个由六个被逗号隔开的数字组成的序列。前四个表示IP地址,后两个组成了用于数据连接的端口号。用第五个数乘以256再加上第六个数就得到了实际的端口号。下面例子中端口号就是( (14*256) + 178) = 3762。我们可以用netstat来验证这个端口信息。

    testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
    Connected to testbox2.slacksite.com.
    220 testbox2.slacksite.com FTP server ready.
    Name (testbox2:slacker): slacker
    ---> USER slacker
    331 Password required for slacker.
    Password: TmpPass
    ---> PASS XXXX
    230 User slacker logged in.
    ---> SYST
    215 UNIX Type: L8

    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    ftp: setsockopt (ignored): Permission denied
    ---> PORT 192,168,150,80,14,178

    200 PORT command successful.
    ---> LIST
    150 Opening ASCII mode data connection for file list.
    drwx------ 3 slacker users 104 Jul 27 01:45 public_html
    226 Transfer complete.
    ftp> quit
    ---> QUIT
    221 Goodbye.

    被动FTP

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

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

    对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
    • 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C)
    • 服务器的21端口到任何大于1023的端口 (服务器响应到客户端的控制端口的连接 S->C)
    • 从任何端口到服务器的大于1023端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C)
    • 服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C)

    画出来的话,被动方式的FTP连接过程大概是下图的样子:


    在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

    被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。详细内容参看附录1。

    第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。

    随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。

    被动FTP的例子

    下面是一个被动FTP会话的实际例子,只是服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2的Linux工作站。debugging(-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。

    注意此例中的PORT命令与主动FTP例子的不同。这里,我们看到是服务器(192.168.150.90)而不是客户端的一个端口被打开了。可以跟上面的主动FTP例子中的PORT命令格式对比一下。

    testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
    Connected to testbox2.slacksite.com.
    220 testbox2.slacksite.com FTP server ready.
    Name (testbox2:slacker): slacker
    ---> USER slacker
    331 Password required for slacker.
    Password: TmpPass
    ---> PASS XXXX
    230 User slacker logged in.
    ---> SYST
    215 UNIX Type: L8

    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> passive
    Passive mode on.
    ftp> ls
    ftp: setsockopt (ignored): Permission denied
    ---> PASV
    227 Entering Passive Mode (192,168,150,90,195,149).
    ---> LIST
    150 Opening ASCII mode data connection for file list
    drwx------ 3 slacker users 104 Jul 27 01:45 public_html
    226 Transfer complete.
    ftp>; quit
    ---> QUIT
    221 Goodbye.

    总结

    下面的图表会帮助管理员们记住每种FTP方式是怎样工作的:

    主动FTP:
    命令连接:客户端 >1023端口 -> 服务器 21端口
    数据连接:客户端 >1023端口 <- 服务器 20端口

    被动FTP:
    命令连接:客户端 >1023端口 -> 服务器 21端口
    数据连接:客户端 >1023端口 -> 服务器 >1023端口

    下面是主动与被动FTP优缺点的简要总结:

    主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

    幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。详细信息参看附录1。


    参考资料

    O'Reilly出版的《组建Internet防火墙》(第二版,Brent Chapman,Elizabeth Zwicky著)是一本很不错的参考资料。里面讲述了各种Internet协议如何工作,以及有关防火墙的例子。

    最权威的FTP参考资料是RFC 959,它是FTP协议的官方规范。RFC的资料可以从许多网站上下载,例如:ftp://nic.merit.edu/documents/rfc/rfc0959.txt

    Active FTP vs. Passive FTP, Appendix 1
    展开全文
  • 主动FTP与被动FTP-权威解释目录 开场白基础主动FTP主动FTP的例子被动FTP被动FTP的例子总结 开场白处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,...

     

    主动FTP与被动FTP-权威解释

    目录

       

    • 开场白
    • 基础
    • 主动FTP
    • 主动FTP的例子
    • 被动FTP
    • 被动FTP的例子
    • 总结

     

    开场白

    处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。

    本文也许不像题目声称的那样是一个权威解释,但我已经听到了很多好的反馈意见,也看到了本文在许多地方被引用,知道了很多人都认为它很有用。虽然我一直在找寻改进的方法,但如果你发现某个地方讲的不够清楚,需要更多的解释,请告诉我!最近的修改是增加了主动FTP和被动FTP会话中命令的例子。这些会话的例子应该对更好地理解问题有所帮助。例子中还提供了非常棒的图例来解释FTP会话过程的步骤。现在,正题开始了...

    基础

    FTP
    是仅基于TCP的服务,不支持UDP 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21-命令端口和20-数据端口。但当我们发现根据(FTP工作)方式的不同数据端口并不总是20时,混乱产生了。

    主动FTP

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

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

     

    1. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C
    2. FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口 S->C
    3. FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口 S->C
    4. 大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C



    画出来的话,连接过程大概是下图的样子:


    在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"

    主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

    主动FTP的例子

    下面是一个主动FTP会话的实际例子。当然服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2Linux工作站。debugging-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。

    仔细考虑这个对话过程我们会发现一些有趣的事情。我们可以看到当 PORT 命令被提交时,它指定了客户端(192.168.150.80)上的一个端口而不是服务器的。当我们用被动FTP时我们会看到相反的现象。我们再来关注PORT命令的格式。就象你在下面的例子看到的一样,它是一个由六个被逗号隔开的数字组成的序列。前四个表示IP地址,后两个组成了用于数据连接的端口号。用第五个数乘以256再加上第六个数就得到了实际的端口号。下面例子中端口号就是( (14*256) + 178) = 3762。我们可以用netstat来验证这个端口信息。

    testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
    Connected to testbox2.slacksite.com.
    220 testbox2.slacksite.com FTP server ready.
    Name (testbox2:slacker): slacker
    ---> USER slacker
    331 Password required for slacker.
    Password: TmpPass
    ---> PASS XXXX
    230 User slacker logged in.
    ---> SYST
    215 UNIX Type: L8

    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    ftp: setsockopt (ignored): Permission denied
    ---> PORT 192,168,150,80,14,178

    200 PORT command successful.
    ---> LIST
    150 Opening ASCII mode data connection for file list.
    drwx------   3 slacker    users         104 Jul 27 01:45 public_html
    226 Transfer complete.
    ftp> quit
    ---> QUIT
    221 Goodbye.

    被动FTP

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

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

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

     

    1. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C
    2. 服务器的21端口到任何大于1023的端口 (服务器响应到客户端的控制端口的连接 S->C
    3. 从任何端口到服务器的大于1023端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C
    4. 服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C


    画出来的话,被动方式的FTP连接过程大概是下图的样子:


    在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

    被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。详细内容参看附录1

    第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp

    随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。

    被动FTP的例子

    下面是一个被动FTP会话的实际例子,只是服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2Linux工作站。debugging-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。

    注意此例中的PORT命令与主动FTP例子的不同。这里,我们看到是服务器(192.168.150.90)而不是客户端的一个端口被打开了。可以跟上面的主动FTP例子中的PORT命令格式对比一下。

    testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
    Connected to testbox2.slacksite.com.
    220 testbox2.slacksite.com FTP server ready.
    Name (testbox2:slacker): slacker
    ---> USER slacker
    331 Password required for slacker.
    Password: TmpPass
    ---> PASS XXXX
    230 User slacker logged in.
    ---> SYST
    215 UNIX Type: L8

    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> passive
    Passive mode on.
    ftp> ls
    ftp: setsockopt (ignored): Permission denied
    ---> PASV
    227 Entering Passive Mode (192,168,150,90,195,149).
    ---> LIST
    150 Opening ASCII mode data connection for file list
    drwx------   3 slacker    users         104 Jul 27 01:45 public_html
    226 Transfer complete.
    ftp>; quit
    ---> QUIT
    221 Goodbye.

    总结

    下面的图表会帮助管理员们记住每种FTP方式是怎样工作的:

    主动FTP
       
    命令连接:客户端 >1023端口 -> 服务器 21端口
       
    数据连接:客户端 >1023端口 <- 服务器 20端口

    被动FTP
       
    命令连接:客户端 >1023端口 -> 服务器 21端口
       
    数据连接:客户端 >1023端口 -> 服务器 >1023端口

    下面是主动与被动FTP优缺点的简要总结:

    主动FTPFTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTPFTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

    幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。详细信息参看附录1

    展开全文
  • 原因:默认FTP连接传输使用被动模式未使用主动模式,防火墙(安全组)未设置正确的出入站规则 解决方法:关闭被动模式,使用主动模式;或者使用默认被动模式,服务端自定义较高的被动端口并加入新防火墙安全组规则 ...
  • 问题描述:在阿里云使用WINDOWS IIS搭建了FTP服务器,使用被动模式,指定了被动端口并且已经放行FTP的命令和数据端口。在实际使用时发现使用专用的FTP客户端(如WinSCP、lftp、浏览器等)一切正常,当使用FTP命令时...
  • 处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。  本文也许像题目声称的那样...
  • 主动PORT FTP被动PASV FTP

    千次阅读 2010-10-06 23:14:00
    • 开场白• 基础• 主动FTP• 主动FTP的例子• 被动FTP• 被动FTP的例子• 总结• 参考资料• 附录 1: 配置常见FTP服务器开场白处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别...
  • 很简单的一个需求却在最后一部出了问题,使用的是org.apache.commons.ftp包下的FTPClient。测试环境正常上传到FTP服务器,生产环境却一直没有上传。查看日志发现,生产环境中定时任务启动了,却没有结束,刚开始以为...
  • FTP是仅基于TCP的服务,支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。...这就是主动与被动FTP的最大不同之处。
  • FTP的主动模式和被动模式 ... FTP文件传输分为两种模式,主动(PORT)...1)如果不是必须需要,不要使用FTP服务,主动/被动模式,命令/数据端口,初学者很容易一下子就被搞蒙。 2)如果一定要使用FTP服务,在今天的互联...
  • ftp 主动和被动

    2019-09-03 12:03:40
    一、FTP是基于TCP的服务的,FTP不同之处在于FTP使用两个端口,一个数据端口和一个命令端口(也称为控制端口),本文是西部数码技术频道小编为大家分享的分析FTP主动被动模式的优缺点,一起来了解一下吧! 主动模式 ...
  • FTP主动模式与FTP被动模式所需的端口

    万次阅读 多人点赞 2018-07-23 10:25:15
    与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并总是20。这就是主动与被动...
  • 今天在一个网络工程师考试群中无意中看到的,好像今年有一道题叫什么ftp客户端可以使用哪个端口,有4个答案,20,21,80,4155,其中肯定是4155了,因为20、21都是ftp服务器使用的,80是web服务器使用的。...
  • winServer FTP被动模式设置

    万次阅读 2016-09-07 11:23:50
    环境: windows server 2012R2 FTPclient FileZilla 3.7.3 ...由于开发人员所做视频推流支持主动式 故需要更改为被动式 主动式: 有客户端N端口发起 连接到服务器端 21端口 传输数据时 由服务器端20端...
  • FTP(File Transfer Protocol)是文件传输协议的简称。...通常文本文件的传输采用ASCII方式,而图象、声音文件、加密和压缩文件等非文本文件采用二进制方式传输,如果为了从一个系统上传输文件而使用了与本地系统
  • 使用 flashfxp 或传东西时必须要关闭被动模式,否则无法连接,连接FTP时客户端总是提示:PORT 模式成功, 请更新你的站点配置文件
  • 如果服务器使用IIS中的FTP服务,并且启用了TCP/IP筛选,而此时又需要启用被动模式连接(Passive),那么为了方便开放端口,我们可以指定Passive的范围,操作如下: adsutil.vbs set /MSFTPSVC/PassivePortRange ...
  • FTP的主动模式和被动模式

    千次阅读 2016-03-08 21:16:42
    FTP是仅基于TCP的服务,支持UDP。与众不同的是FTP使用2个端口,一个数据...这就是主动与被动FTP的最大不同之处。  (一)主动FTP   主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到
  • ftp-主动模式(PORT)和被动模式(PASV)

    万次阅读 多人点赞 2017-06-03 12:51:03
    简介FTP协议要用到两个TCP连接, ...而主动模式与被动模式的差异主要体现在数据连结通道上命令连接当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令
  • FTP 服务器主被动模式

    2016-04-01 14:49:31
    FTP是仅基于TCP的服务,支持UDP。与众不同的是FTP使用2个端口,一个...这就是主动与被动FTP的最大不同之处。  (一)主动FTP  主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP
  • ftp被动模式

    2010-03-16 10:39:00
    ftp port模式(主动模式) 主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp21端口)。紧接着客户端开始监听端口N+1,并发送FTP命令“portN+1”...ftp pasv模式(被动
  •  FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口...
  • 在客户端用ftp测试,结果发现出来目录和文件。 ftp> dir 227 Entering Passive Mode (172,25,39,103,220,53). 150 Here comes the directory listing. 226 Directory send OK. 网上说关闭被动模式 ftp> passive ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,534
精华内容 11,813
关键字:

不使用被动的ftp