ubuntu14.04搭建ftp服务器不能通过外网访问

来源:互联网 发布:现货黄金看盘软件 编辑:程序博客网 时间:2024/05/27 20:26

搭了一个ubuntu14.04的服务器安装配置过ftp之后通过内网可以访问,通过外网的IP就一直不能访问了,很是奇怪,于是开始在网上搜索解决办法,折腾了一下午。

原来ftp协议分为两种模式,主动模式和被动模式,主动模式是客户端提供给服务器命令以及数据端口,服务器通过这些端口和客户端交互,被动模式是服务器提供端口供

客户端来连接。如果主动模式不成功,会切换到被动模式。

    主动模式下客户端会通过 PORT 192,168,x,x,A,B 来告知服务器自己开放的端口,其中端口的计算是通过A X 256+B。IP就是客户端自己的IP地址。如果此种模式下出现提示:

500 Illegal PORT command

即告知客户端:非法的端口命令。那就是服务端试图通过该IP和端口同客户端建立TCP链接,但是不成功,那就要检查是客户端的IP不对还是提供的端口被防火墙屏蔽了,解决的方法自然是通过客户端将对应的端口范围开放出来。这样两边即可建立正常的通讯联系了。

如果通过外网不能访问,主动模式以及被动模式都访问失败,那就需要配置服务器来解决此问题,主动模式下不成功,客户端将会发送pasv命令,此时服务端将会提供给客户端一个IP以及端口让客户端开连接服务端,此时如果服务端提供的是内网的IP地址以及端口号,那么客户端是无法同服务端建立连接的。如我的错误提示:

状态:    读取“/work_dir”的目录列表...
命令:    CWD /work_dir
响应:    250 Directory successfully changed.  //这个命令可切换路径
命令:    TYPE I
响应:    200 Switching to Binary mode.
命令:    PORT xxx,xxx,xxx,xxx,238,125      //这个命令估计是建立数据通道,端口号比较大
响应:    500 Illegal PORT command.   //提示非法端口命令。
命令:    PASV                                    //让服务器切换成被动模式
响应:    227 Entering Passive Mode (xxx,xxx,xxx,xxx,4,98).    //服务器响应IP地址以及开放端口号,
命令:    LIST                                                                     //list命令无响应
错误:    无法建立数据连接: ETIMEDOUT - 连接尝试超时
响应:    425 Failed to establish connection.
错误:    读取目录列表失败

此时要修改vsftp.conf添加pasv_address=服务端外网IP地址来让返回的IP地址正确。

添加pasv_min_port=大于等于1024端口号作为服务器开放给客户端的端口号。

pasv_max_port=大于最小的端口号一定范围。

pasv_enable=YES //让服务端能够进入被动模式。

pasv_addr_resolve=yes//通过pasv_address来伪装服务端IP。

这样设置之后服务器就可以在主动模式不成功的情况下切换到被动模式并且提供自己的外网IP给客户端并建立连接。

修改之后可以建立连接了,但是竟然是偶尔能成功,且很多时间不会成功,可以切换到被动模式但是只能列出FTP的根目录,再点击就无效不能浏览下级目录。经过确认系外网对应的端口没有开放出来,此时只要通过外网的防火墙将你设置的端口范围对TCP连接开放即可。


0 0
原创粉丝点击