几个月来我一直在思考这个问题,但始终无法理解。这不仅仅发生在我身上,其他人也证实他们也遇到了同样的事情。我可能需要检查一些日志,或者使用一些工具来追踪正在发生的事情,但我真的不知道该把精力投入到哪里。这就是问题所在:
在我的办公室,连接到远程 FTP 站点需要 20-30 秒。连接后,速度非常快。如果 FTP 客户端超时,则需要再花 20-30 秒才能重新连接。
一旦连接到服务器,我就可以打开其他 FTP 连接,它们会立即连接 - 没有延迟。也就是说,直到客户端因未使用而超时并需要重新连接。
如果我使用客户端连接,则需要 20-30 秒。然后我可以完全关闭客户端,并打开一个新实例。这样可以立即连接。如果我等待几分钟再尝试连接,那么我又会遇到缓慢的初始连接。
在家里不会发生这种情况,我的笔记本电脑也是一样。办公室连接是 Virgin 有线 Superhub V1,运行 DHCP 并提供固定的公共 IP。我在网络内部的 DMZ 上有一个邮件和文件服务器,但流量不会通过该服务器。
在家里,我使用 Virgin 电缆和 Superhub V2,处于直通/路由器模式。SME 服务器位于其上,所有流量都通过该服务器,该服务器充当防火墙、路由器、内部 DHCP 等。
其他工作人员有其他家庭互联网连接、不同的操作系统和客户端,并且看到相同的内容(例如带有内置客户端的 OS-X)。
这可能是什么原因造成的?我通过 FTP 连接到的远程服务器上是否有日志可以告诉我可能发生了什么?连接时是否可以监控协议以查看可能存在的问题?
抱歉,如果这不是一个合适的提问地点。这个问题涉及网络、服务器和开发工具。
编辑:与同一服务器的 ssh 连接是即时的 - 绝不会延迟。
查看消息日志,在 FTP 一段时间不活动后会出现此消息,表明可能是我的客户端关闭了连接:
proftpd: server-ip (my-ip[my-ip]) - Client session idle timeout, disconnected
proftpd: server-ip (my-ip[my-ip]) - FTP session closed.
然后,当再次连接到 FTP 时,日志中会立即出现此信息后20 秒延迟和客户端指示已连接:
xinetd START: ftp pid=15055 from=::ffff:my-ip
www proftpd[15055]: server-ip (my-ip[my-ip]) - mod_tls/2.6: no TLSRSACertificateFile, TLSDSACertificateFile, TLSECCertificateFile or TLSPKCS12File configured; unable to handle SSL/TLS connections
www proftpd: server-ip (my-ip[my-ip]) - FTP session opened.
(IP 地址替换为 my-ip 和 server-ip)
答案1
导致登录延迟的最常见原因proftpd
有:
- 客户端 IP 的反向 DNS 解析(通过 禁用
UseReverseDNS off
) - RFC1918 查找(通过 禁用
IdentLookup off
) - 通过添加定时延迟
mod_delay
(通过 禁用DelayEngine off
)
希望这些调整能有所帮助!
答案2
尝试使用PASSIVE模式,该问题可能是由代理引起的。