无法从外部访问vsftpd

我只是在一个CentOS 5.3盒子上做了一个基本的yum install vsftpd ,我可以从盒子本身的shell上FTP到机器IP地址,但是不能从同一个局域网上的任何其他机器上FTP。

 $ ftp 1.2.3.4 ftp: connect: Connection refused 

疑难解答步骤已经尝试

  • 在本地计算机A上,尝试使用有效凭据将FTP传送到A的IP,成功
  • 在同一个networking上的机器B上,试图将FTP传给A的IP,如上所述,连接被拒绝
  • 从同一台机器B,nmap显示端口21打开
  • 从同一台机器B,可以telnet到端口21,看到vsftpd横幅
  • 所以,似乎这个守护进程正在监听,但是关于来自外部的连接尝试的一些事情使得它拒绝了连接。

….而重写这个问题,我重新启动了vsftpd守护进程,并开始按预期工作。

好吧,我的testing服务的一般debugging指南是这样的:

0)testing时坚持使用IP,以消除DNS问题

1)在本地testing
你能连接到FTP服务器从它运行的机器?

2)在同一networking上远程testing
你可以从该子网上的另一台机器连接吗?

3)来自不受信任的来源的testing
你能跨越防火墙边界去那里吗?

听起来你已经完成了第一个,并在第二个失败。 如果您可以通过远程方式远程login到服务器的端口21并接收FTP标题,则FTP服务器正在工作。

如果可以请更新您的问题以显示您的问题排查步骤,以便我们可以更准确地确定问题所在。

如果您可以连接到本地主机,但不能从同一台机器上“host.example.com”,那么它会build议服务器只监听127.0.0.1,而不是所有的接口。 你可以通过运行来检查:

 # netstat -lep --tcp | grep vsftp 

如果它说“localhost:ftp”,那么它只在本地主机上进行监听。 寻找一个类似“Listen”的configuration选项,或者讨论绑定到地址或接口。 如果它说“*:ftp”,那么它正在监听所有接口,而其他的东西是错误的。 可能是防火墙或networkingconfiguration问题。

用任何现代的基于redhat的发行版检查selinux。 即可以看到是否打开(执行)。 如果是setenforce 0将其closures,看看是否有所作为。 setenforce 1将其重新打开。

如果是selinux,那么你可能需要设置布尔值。

尝试类似:getsebools -a | grep -i ftp查看ftp相关的布尔值的状态。 设置它们使用setsebools。

你是否使用iptables基于主机的防火墙 – 如果是的话是适当的iptables模块启用我不记得它是什么,但它可以在一个名为/ etc / sysconfig / iptables-config的文件启用。

它的东西像conntrack_ftp。

感谢各种build议。 虽然我不确定实际发生了什么,但重启守护进程似乎可以解决问题。