防火墙和 Apache 反向代理后面的 Subversion 服务器出现间歇性挂起

防火墙和 Apache 反向代理后面的 Subversion 服务器出现间歇性挂起

我的情况如下:

1)DMZ:我在 Apache 服务器(我们的堡垒主机)上有一个自签名 SSL 证书,该证书配置为作为其他 7 个 LAN 服务器(subversion、ldap、jenkins、confluence、jira、mapi 等)的反向代理运行。

2) 防火墙:在 DMZ 堡垒主机(位于 DMZ 子网 192.168.1.X 上)之间,我配置了 Cisco 防火墙,允许(特定)流量从 DMZ 堡垒主机端进入特定的 LAN 主机。LAN 子网为 192.168.50.X。路由器是 Cisco RV042。

3)LAN:我有 7 台服务器,全部在 UBuntu 上运行各种应用程序,并通过 ufw 启用 iptables。

4)Subversion:7台服务器中的一台运行Subversion 1.5.4,并向堡垒主机公开HTTP端口。非常像本文讨论。

多年来一切都运行良好,除了一件事我似乎无法解决:如果几个小时/几天内没有人使用 Subversion 服务器(不完全确定),则通过堡垒主机运行到 LAN Subversion 服务器的所有 HTTPS Subversion 命令都会失败。

这造成了一个真正的问题,因为远程开发人员进行了大量本地更改,提交...然后 Eclipse 挂起,必须手动终止,清理客户端源等...真的很麻烦。然后我接到一个电话...我导航到堡垒主机并尝试查看一些源,单击几下后开始工作。然后开发人员的下一次提交尝试总是有效的。


这是我尝试过的:

1)关闭防火墙:如果我禁用Cisco路由器上的防火墙,那么它总是可以工作...一直如此,但我们没有DMZ/LAN安全性!

2)LAN Subversion:如果您直接访问 Subversion LAN 服务器,它总是有效的。

3) 防火墙配置更改:启用防火墙后,我可以创建一条规则让任何 DMZ->LAN 流量通过,但问题仍然会发生。实际上,防火墙已打开但完全打开,问题仍然会发生。就好像堡垒主机和 LAN 颠覆服务器之间的路由器防火墙需要从 LAN 端发起的状态转换,但我确实测试过防火墙是否打开(如果不是,它永远不会工作……就像我说的,如果经常使用,它可以工作几天/几周)。

4) 发现 MTU 不匹配一篇文章这表明这可能是问题所在,但根据 ,堡垒和颠覆服务器上的 MTU 都是 1500 ifconfig

5) 其他堡垒主机 Apache 配置更改...我尝试了几十种方法,但都无济于事。以下是/etc/apache2/sites-enabled/default-ssl我过去一年来一直在运行的堡垒主机(反向代理)上的 Apache 配置:

ProxyPass /svn http://virt-svn-srv.mycomp.int/svn keepalive=on
<Location /svn>
    ProxyPassReverse http://virt-svn-srv.mycomp.int/svn
    SetEnv force-proxy-request-1.0 1
</Location>

我真的对此束手无策......欢迎所有建议。

答案1

这看起来像是超时问题(防火墙从会话表中删除会话)。

我不太熟悉 subversion 和 Eclipse,但是;

如果它在启动时打开与 Subversion 服务器的连接,然后在 60 分钟(Cisco 的)默认超时设置后尝试使用相同的会话提交代码,那么它将失败。

您的防火墙将丢弃数据包,表明它没有找到匹配的会话。

您可以尝试添加类映射和策略映射来匹配发往您的 Subversion 服务器的流量。

access-list acl-timeout-subv extended permit tcp any host [subversionIP] eq [subversionPort]

然后

class-map cls-timeout-subv
match access-list acl-timeout-subv
exit

然后

policy-map timeout-subv
class cls-timeout-subv
set connection timeout idle 08:00:00
exit

这会将进入到你的 subversion 的所有流量在指定的端口设置为 8 小时的超时时间。

相关内容