我刚刚yum install vsftpd
在 CentOS 5.3 机器上做了一个基本操作,我可以从机器本身的外壳 FTP 到机器 IP 地址,但不能从同一 LAN 上的任何其他机器 FTP。
$ ftp 1.2.3.4
ftp: connect: Connection refused
已尝试的故障排除步骤:
- 在本地机器 A 上,尝试使用有效凭据 FTP 到 A 的 IP,成功
- 在同一网络上的机器 B 上,尝试 FTP 到 A 的 IP,如上所示,连接被拒绝
- 来自同一台机器 B,nmap 显示端口 21 打开
- 从同一台机器 B,可以 telnet 到端口 21 并查看 vsftpd 横幅
- 所以,似乎守护进程正在侦听,但是来自外部的连接尝试导致它拒绝连接。
....在重写这个问题时,我重新启动了 vsftpd 守护进程,一切都开始按预期工作。
好吧,我测试服务的一般调试指南是这样的:
0)测试时坚持使用 IP,以消除 DNS 问题
1)本地测试
你能从运行它的机器连接到 FTP 服务器吗?
2)在同一个网络上远程测试
你能从那个子网上的另一台机器上连接吗?
3)从不受信任的来源进行测试
你能跨越防火墙边界到达那里吗?
听起来您已经完成了第一个,而第二个却失败了。如果您可以从远程机器远程登录到服务器上的端口 21 并接收 FTP 横幅,那么 FTP 服务器正在工作。
如果可以,请更新您的问题以显示您的故障排除步骤,以便我们更准确地确定问题所在。
如果您可以连接到 localhost,但不能从同一台机器连接到“host.example.com”,则表明服务器仅在侦听 127.0.0.1,而不是所有接口。您可以通过运行检查这一点:
如果它显示“localhost:ftp”,那么它只是在 localhost 上监听。寻找类似于“Listen”或谈论绑定到地址或接口的配置选项。如果它说“*:ftp”,那么它正在侦听所有接口,而其他地方是错误的。可能是防火墙或网络配置问题。
使用任何基于现代 redhat 的发行版检查 selinux。即 getenable 以查看它是否已打开(强制执行)。如果是 setenforce 0 将其关闭,看看是否有区别。setenforce 1 将其重新打开。
如果是 selinux,那么您可能需要设置布尔值。
尝试类似:getsebools -a|grep -i ftp 查看与 ftp 相关的布尔值的状态。要设置它们,请使用 setsebools。
您是否使用基于 iptables 主机的防火墙 - 如果启用了相应的 iptables 模块,我不记得它是什么,但可以在名为 //etc/sysconfig/iptables-config 的文件中启用它。
它类似于 conntrack_ftp。
感谢各种建议。虽然我不确定实际发生了什么,但重新启动守护程序似乎可以解决问题。