访问(之前可用的)个人 Subversion 存储库时出现问题。卡巴斯基怀疑

访问(之前可用的)个人 Subversion 存储库时出现问题。卡巴斯基怀疑

我有一个个人 Subversion 服务器,在我的家用电脑 Windows Vista Pro 系统的默认端口上只运行 svn(而不是 Apache)。(由于工作防火墙的限制,设置比这更复杂,但通过检查我的路由器日志,我确信请求被转发到服务器计算机上的正确端口)。这个存储库以前一直正常工作,但最近停止工作了 - 对它的请求超时:

svn: Can't connect to host 'howlett.selfip.net': A connection attempt failed 
because the connected party did not properly respond after a period of time, 
or established connection failed because connected host has failed to respond. 

我能想到很多可能的原因,但没有一个是特别令人满意的。首先,我们最近搬家了,服务器和路由器之间的设置从无线改为有线。但是,我认为有线连接已经工作了一小段时间,并且(如前所述)路由器日志显示请求正在转发。

其次,我最近安装了卡巴斯基防病毒软件 2011。这似乎是一个更合理的罪魁祸首 - 它更接近我认为 repo 停止工作的时间,并且我在网上找到了遇到卡巴斯基 6 问题的人的结果。但是,我尝试将 svn 和 svnserve 添加到卡巴斯基的例外列表中,甚至禁用卡巴斯基并重新启动并将其设置为不启动,而 repo 仍然没有响应。

有谁知道哪里出了问题吗?如果做不到这一点,谁能告诉我如何从 Subversion(客户端和/或服务器)和 Kaspersky 中获取日志?

编辑:更多信息 - 我可以通过服务器计算机上的 127.0.0.1 访问存储库(但不能通过服务器计算机上的路由器 IP 访问)。

编辑2:网络监视显示数据包正在到达预期 IP 地址上的 svn 端口;并且 svnserve 肯定正在监听该地址(而不仅仅是本地主机)。

编辑3:使用netcat确认数据包未被监听服务拾取。我还找到了卡巴斯基的日志,但找不到任何有关流量被阻止的参考信息。

答案1

(对于所有认识我的人,如果你们知道歌词,就一起唱吧……)

嗅探进入 Subversion 服务器的流量(使用 Wireshark 或您最喜欢的同类工具),并确保来自互联网的连接尝试确实到达了 Subversion 服务器。如果流量未显示在那里,则说明您的路由器/防火墙设备在将流量转发到 Subversion 服务器时出现了问题。

如果您看到 Subversion 服务器上的流量,那么您需要开始调查它没有响应的原因(假设它没有响应)。

编辑:

--foreground我猜想可能是防火墙应用程序阻止了连接。选项似乎svnserve实际上不会生成任何有用的调试输出,因此我不建议您这样做。 您可以停止svnserve并在侦听模式 ( ) 下运行类似 netcat 的程序nc -l -p 3690,然后尝试连接并查看 netcat 是否显示任何输出。 如果没有,则问题很可能出在防火墙应用程序上。 (如果 Subversion 客户端连接到正在侦听的 netcat,它实际上不会发送任何数据,因为它正在等待来自 的横幅消息svnserve。 但是,如果您在客户端连接后在 netcat 提示符下输入一些乱码,Subversion 客户端应该会崩溃,至少会告诉您连接已通过。)

编辑:

禁用/停止 Windows Vista 防火墙服务会导致应用非常严格的防火墙策略。您可以阅读微软的一篇关于它的文章以了解更多详细信息,但行为的要点是,在启动期间,此非常严格的策略适用,直到防火墙服务启动并运行(以在启动期间保护机器)。如果您停止防火墙服务,则启动时防火墙策略适用,最终会得到一个非常严格的入站流量策略。

答案2

从您的解释中,我只能想到两件事:要么 svnserve 仅在本地主机上提供服务,要么防火墙阻止了对外部 IP 地址的访问。例如,您可以使用“Process Explorer”(来自 SysInternals)来检查 svnserve 进程正在监听哪个地址。

答案3

你可以使用以下命令查看 svnserve 是否绑定到 localhost 或你的外部网络接口:netstat -a | find "LISTEN"

如果它没有在 0.0.0.0(或您的接口的 IP)上监听,您需要更改绑定参数,以便它实际上允许框外的某人连接到它。

答案4

我已经修复了这个问题。

我觉得我最好再弄一套原木,于是我转身Windows 防火墙(除了 svnserve 外)之前是关闭的。这样与 Subversion 服务器的连接就可以正常工作了。

为什么添加一层安全性和一个潜在的阻塞点使一切正常,我真的不知道 - 有人有什么想法吗?

相关内容