• 记一次ftp服务器错误 centOS 6.4 vsftpd 500 illegal port command


    这个错误是因为是主动模式的,应该改为被动模式

    以下是操作过程:

    iptables中加

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 10221:10231 -j ACCEPT

    重启iptables

    #/etc/init.d/iptables restart

    vsftpd.conf中

    最后加上

    pasv_enable=YES
    pasv_min_port=10221 #随机最小端口,原来是4000
    pasv_max_port=10231 #随机最大端口,原来是5000.
    #anon_other_write_enable=YES
    #port_promiscuous=YES
    pasv_promiscuous=YES    #这个如果不打开,  在连接时可能会出现bad ip ....可能是网络不稳定..也或者是ip在传输时有改变.....

    重启 vsftpd

    #service vsftpd restart

    记得如果ftp是在虚拟机上面架设的,则一定要在代理服务器的防火墙上面/物理主机上面添加监听端口

    netsh interface portproxy add v4tov4 listenport=10221 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10221
    netsh interface portproxy add v4tov4 listenport=10222 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10222
    netsh interface portproxy add v4tov4 listenport=10223 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10223
    netsh interface portproxy add v4tov4 listenport=10224 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10224
    netsh interface portproxy add v4tov4 listenport=10225 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10225
    netsh interface portproxy add v4tov4 listenport=10226 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10226
    netsh interface portproxy add v4tov4 listenport=10227 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10227
    netsh interface portproxy add v4tov4 listenport=10228 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10228
    netsh interface portproxy add v4tov4 listenport=10229 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10229
    netsh interface portproxy add v4tov4 listenport=10230 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10230
    netsh interface portproxy add v4tov4 listenport=10231 listenaddress=物理主机ip connectaddress=内网虚拟机ip connectport=10231

     如果是被动模式的话,出现如下错误,是因为端口被占用或者端口没有开放的问题


    500 Illegal PORT command的问题(主被动模式)

    在windows的dos窗口用FTP命令去连时,可以登录,但使用ls等命令时,出现:
    500 Illegal PORT command.
    425 Use PORT or PASV first.
    根据提示是被动模式的问题。

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

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

    PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

    PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。


    概括:
    --------------------------------------------
    主动模式:服务器向客户端敲门,然后客户端开门
    被动模式:客户端向服务器敲门,然后服务器开门

    所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门
    而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口

    --------------------------------------------

    要用主动模式来下载,请您把下载工具的被动模式(PASV)都不要打勾,用主动模式来下载就OK了,如果在出错,那就被动主动相互转换一下

    ---------------------------------------------

    如何设置vsftpd的主动与被动模式:

    Vsftpd的配置文件 /etc/vsftpd/vsftpd.conf 
    主动模式设置
    Port_enable=YES              开启主动模式(default:YES)
    Connect_from_port_20=YES     当主动模式开启的时候 是否启用默认的20端口监听
    Ftp_date_port=%portnumber%   上一选项使用NO参数是 指定数据传输端口 
    被动模式
    PASV_enable=YES  开启被动模式
    PASV_min_port=%number% 被动模式最低端口
    PASV_max_port=%number% 被动模式最高端口 


    ----------------------------------------------

    大部分FTP客户端默认使用PASV方式,PASV模式的意式是被动模式。在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”。

    IE: 工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。

    CuteFTP: Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
    或 File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode”

    FlashGet: 工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”

    FlashFXP: 选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式”
    或 站点管理 -> 对应站点 -> 选项 -> “使用被动模式”
    或 快速连接 -> 切换 -> “使用被动模式”

    LeapFTP: Option ->Preferences -> General->Proxy->Use Pasv Mode

  • 相关阅读:
    论信息系统项目的范围管理
    Windows服务/Linux守护创建及安装
    C#开源网络通信库PESocketde的使用
    Unity本地持久化类PlayerPrefs使用详解
    记录一个闪烁,跳动,光圈的动画
    一、Linux驱动学习-了解系统
    用c#自己实现一个简单的JSON解析器
    highcharts的yAxis标题过长 分行显示
    Mysql binlog恢复数据
    Xamarin.Forms实例旅行日志
  • 原文地址:https://www.cnblogs.com/move22/p/5993100.html
Copyright © 2020-2023  润新知