FTP服务器serv-u设置端口映射(主动模式和被动模式)

作者:Joey 分类: 软件使用 发布于:2016-8-16 21:08 ė11847次浏览 60条评论

先转几个收集的文章:

FTP主动模式和被动模式的比较
FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。 

(一)主动FTP  
        主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
    针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:    
    1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)  
    2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口) 
    3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
    4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口) 

    (二)被动FTP  
    为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
   在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
   当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。  
       对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:     
    1. 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)  
    2. 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接) 
    3. 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
    4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
     以上关于主动和被动FTP的解释,可以简单概括为以下两点:
    1、主动FTP:  
            命令连接:客户端 >1024端口 -> 服务器 21端口  
            数据连接:客户端 &gt;1024端口 <- 服务器 20端口 
    2、被动FTP: 
            命令连接:客户端 >1024端口 -&gt; 服务器 21端口 
            数据连接:客户端 &gt;1024端口 -&gt; 服务器 &gt;1024端口
  (三)主动与被动FTP优缺点:       
   主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
   http://jackiechen.blog.51cto.com/196075/193883


serv-u更改端口需在防火墙开放端口及说明
serv-u 默认配置完成后,其PASV(被动)模式启动的时候,会使用3000-3010端口号

windows的防火墙,开启情况下,只打开了21端口。所以ftp软件在登录服务器的时候,会使用3000-3010端口被防火墙终断

终端显示 无法建立 socket 链接 ,无法list目录

解决办法:增加防火墙端口通行 3000-3010

FTP基础知识

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在ftp客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

Port模式:

ftp server:tcp 21 <------client:dynamic

ftp server:tcp 20 ------>client:dynamic

Pasv模式:

ftp server:tcp 21 <----client:dynamic

ftp server:tcp dynamic <----client:dynamic

===============================

FTP socket错误分析及解决方法

简朴说一下FTP的两种模式:

1、port模式:这种模式的FTP网管人员比较轻松,但兼容性较差,比如假如客户端在局域网内就会无法登录ftp服务器。假如有人无法使用port模式登录FTP的话,作为FTP治理员来说,你无论如何努力都是没有用的。因为这时问题症结在对方客户端的 防火墙或网关。所以对于一个FTP服务器来说,尽量要使用pasv模式。

2、pasv模式:这种模式的FTP兼容性好,但对FTP治理员来说有一定挑战性,而且设置的情况比较复杂,以下举例均以有防火墙的情况来说明:

(1)如果服务器在公网上:

这是最理想的情况。21端口当然要首先开放,然后再作如下设置:serv-u服务器——本地服务器——设置——高级,在"pasv端口端口范围"中填入一段不与其它端口冲突的范围,如3001-3020,然后在防火墙中开放3001-3020的端口。

(2)如果服务器在私网,这时又要分两种情况:

情况一:网关的公网IP地址是固定的:

这种情况下,在serv-u服务器上除了按这段文字:

21端口当然要首先开放,然后再作如下设置:serv-u服务器——本地服务器——设置——高级,在"pasv端口端口范围"中填入一段不与其它端口冲突的范围,如3001-3020,然后在防火墙中开放3001-3020的端口。

作相同设置之外,还要加设如下设置:

serv-u服务器——本地服务器——域——你的域名——设置——高级,将"答应被动模式数据传输,使用IP"前的勾勾上,并在后面填上你的网关的公网IP地址。然后,再到网关上将21端口、3001-3020的端口范围全部映射上serv-u服务器的内网IP地址上。

情况二:网关的IP地址是动态的:

这时必须使用花生壳之类的动态域名。假设你申请的花生壳是myftp.vicp.NET,并正常安装了花生壳程序客户端。这时除了按刚才引用过一次的文字中作设置以外,还要作如下设置:

serv-u服务器——本地服务器——域——你的域名,将"启用动态 DNS"前的勾勾上,这时该页会多出一个"动态DNS"的标签,点击进入该标签,在IP名称中填入"myftp.vicp.net",按F5键刷新,这时你网关获取的公网FTP地址会以灰字(表示不可改)出现在"IP地址"栏中。然后再检查这里:

serv-u服务器——本地服务器——域——你的域名——设置——高级,仍旧将"答应被动模式数据传输,使用IP"前的勾勾上,但后面不要填任何IP,让它空闲着。到这一步你在serv-u服务器上的设置全部完成,下面再去网关上将21端口、3001-3020端口全部映射到serv-u服务器的私网IP上。

这时,恭喜,你大功告成,你的FTP可以被地球上任何一个能上互联网的人使用了。

Q&A

Q:我的情况与你所说不一样呀,我不是21端口而是4500端口,怎么办?

A:与上面所说一样。只是将21替换成4500即可。

Q:我需要在诺顿防火墙中开放3001-3020端口吗?

A:需要。我不知道诺顿是否支持FTP的自动识别。最好是手工指定开放这些端口以防万一。

Q:我完全按你所说设置的,为什么还是有人能上有人不能上?

A:让不能上的人使用pasv模式。

Q:为什么我自己不能登录自己的FTP?

A:将出错列表贴出来分析。
    https://www.douban.com/note/361563433/
    
    
主动模式和被动模式的主要区别就是一个谁连谁的问题。
主动模式中,客户端先告诉服务端的21端口“可以连接啦”,然后服务端的20端口“主动”去连接客户端的端口。
被动模式中,客户端告诉服务端的21端口“可以连接啦”,然后服务端的21端口回复客户端说“我的XX端口可用,你连过来吧”,于是客户端再连过去,这里,服务端就是“被动”地被连接了。需要注意的是,被动模式中,那个“XX端口”,不再是主动模式中的20端口,而是某个大于1024的端口号,并且一般不固定,是在一个区域范围内,具体看相应的FTP软件设定,好像一般也可配置。那么相应的,端口映射时需要将这段端口全部映射出去。
http://www.zhihu.com/question/19768434/answer/12901539


综述:
如果是主动模式则需要同时打开20端口映射,且20端口不像21端口那样可以修改,只能用20.
但是主动模式兼容性不好,一般推荐使用被动模式.
在serv-u服务器->本地服务器->设置->高级->pasv端口端口范围填写一段端口范围,同时将这些端口映射好.
如有需要本地FTP软件(例如FlashFXP)可以设置本地端口的打开范围.


本文出自 LcdBBS,转载时请注明出处及相应链接。

0

Ɣ回顶部