FTP 故障排除

FTP 故障排除

我在 Virtual Box 上安装了 centos 6.5。我正在尝试配置一个基本的 ftp 服务器。下面是它的详细信息。

  1. 从 DVD/Yum 安装 vsftpd:状态 -> 成功

  2. 出于测试目的禁用防火墙,

    chkconfig iptables off : successful
    
    service iptables stop : successful
    
  3. 同时将selinux设置为禁用模式:成功

  4. 在 VirtualBox 中添加了一条通过 NAT 进行端口转发的规则:

    Rule Protocol Host Port Guest Port
    Ftp  tcp.     2121.     21
    

现在,当我尝试与本地用户或匿名用户连接时,它会给出许多错误,每次都会出现不同的错误。

我还在我的主机上添加 Filezila 显示的日志消息。

-> LocalUserLogFromClient

Status: Disconnected from server
Status: Resolving address of localhost
Status: Connecting to [::1]:2121...
Status: Connection attempt failed with "ECONNREFUSED - Connection refused by
server", trying next address.
Status: Connecting to 127.0.0.1:2121...
Status: Connection established, waiting for welcome message...
Response:   220 Welcome to C6G FTP service.
Command:    AUTH TLS
Response:   530 Please login with USER and PASS.
Command:    AUTH SSL
Response:   530 Please login with USER and PASS.
Status: Insecure server, it does not support FTP over TLS.
Command:    USER FUser1
Response:   331 Please specify the password.
Command:    PASS *****
Error:  Connection timed out after 20 seconds of inactivity
Error:  Could not connect to server

-> 匿名用户日志

Status: Resolving address of localhost
Status: Connecting to [::1]:2121...
Status: Connection attempt failed with "ECONNREFUSED - Connection refused by
server", trying next address.
Status: Connecting to 127.0.0.1:2121...
Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
Status: Connected
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/"
Command:    TYPE I
Response:   200 Switching to Binary mode.
Command:    PASV
Response:   227 Entering Passive Mode (10,0,2,15,88,204).
Command:    LIST
Error:  The data connection could not be established: 10065
Error:  Connection timed out after 20 seconds of inactivity
Error:  Failed to retrieve directory listing

答案1

您的日志显示两个不同的问题:

  1. 对于非匿名用户,登录超时。等待登录完成 20 秒后,您的 FTP 客户端放弃了。这可能意味着您的身份验证配置(在服务器上)不起作用,尤其是当您尝试设置虚拟用户等时。除此之外,服务器可能需要很长时间才能写入日志,或者可能执行 DNS解决。

  2. 您的匿名用户日志可能存在 NAT 问题。227 Entering Passive Mode (10,0,2,15,88,204).意味着客户端需要连接到 10.0.2.15:22732/tcp,并且报告超时。这是一个必须连接到的奇怪地址,因为 FTP 连接本身是连接到本地主机的。

(顺便说一句:最后两个数字是端口号的两个字节,按网络字节顺序排列。因此 88×256 + 204 = 22732。)

答案2

端口转发器后面的 FTP 服务器无法以被动模式提供服务,除非所使用的软件具有特殊的设计传递 FTP 数据连接。案例有:

  • NAT 软件能够嗅探227 Entering Passive ModeFTP 控制连接,相应地进行端口转发以及对 FTP 控制数据进行一些修改。
  • FTP 服务器使用可见 (NAT) IP 地址发送被动模式,并且 NAT 转发给定的端口范围。
    感谢@derobert 指出了我最初推理中的一个缺陷。

Linux 内核 NAT 提供了(可选)FTP 支持。但如果 Linux 是客人,那么它的 NAT 与问题无关。事实上,主机系统的 NAT 必须为来宾系统执行 NAT。 Windows 的 NAT 软件有这样的功能吗?不知道,反正这不是 Linux 问题。推荐的解决方案:将虚拟机的 NAT 替换为桥接。

相关内容