Servidor Subversion por trás do firewall e proxy reverso do Apache exibem interrupção intermitente

1

Aqui está minha situação:

1) DMZ: Eu tenho um certificado SSL auto-assinado em um servidor Apache (nosso host bastion) configurado para executar como um proxy reverso para 7 outros servidores de rede local (subversion, ldap, jenkins, confluence, jira, mapi, etc ).

2) Firewall: Entre o host de bastiões DMZ (que está na sub-rede DMZ 192.168.1.X) Eu tenho um firewall Cisco configurado para permitir que o tráfego (específico) se origine do lado do host DMZ Bastion em hosts LAN específicos. A sub-rede da LAN é 192.168.50.X. O roteador é o Cisco RV042.

3) LAN: Eu tenho 7 servidores todos executando vários aplicativos no UBuntu com o iptables habilitado via ufw.

4) Subversion: Um dos 7 servidores está executando o Subversion 1.5.4 e expõe uma porta HTTP para o host bastion. Muito parecido com este artigo discute.

Tudo tem funcionado terrivelmente por anos, exceto por UMA COISA que não consigo resolver: Todos os comandos HTTPS do Subversion que passam pelo host de bastiões para o servidor de subversão da LAN falham se ninguém usar o servidor de subversão por algumas horas / dias (não exatamente certo).

Isso está causando um problema real porque os desenvolvedores remotos fazem um monte de alterações locais, commit ... e então o Eclipse trava, tem que ser morto manualmente, as fontes do cliente são limpas, etc ... um verdadeiro aborrecimento. Então eu recebo uma ligação ... e eu navego até o host de bastiões e tento ver algumas fontes, que depois de alguns cliques começam a funcionar. Então, a próxima tentativa do desenvolvedor de cometer sempre funciona.

Aqui está o que eu tentei:

1) Firewall desligado: se eu desabilitar o firewall no roteador Cisco, ele sempre funcionará ... o tempo todo, mas não temos segurança DMZ / LAN!

2) Subversion da LAN: Sempre funciona se você acessar diretamente o servidor da Subversion LAN.

3) Alterações na configuração do firewall: quando o firewall está ativado, posso criar uma regra para permitir que o tráfego de QUALQUER DMZ & LAN passe e o problema ainda aconteça. Com efeito, o firewall está ligado mas completamente aberto e o problema ainda acontece. É como se o firewall do roteador entre o host bastião e o servidor subversão da LAN exigisse uma conversão de estado originada no lado da LAN, mas eu absolutamente testei que o firewall está aberto (se não fosse, NUNCA funcionaria ... como eu disse pode funcionar por dias / semanas se usado com frequência).

4) Incompatibilidade de MTU: encontrado artigo que sugere que esse poderia ser o problema , mas o MTU no servidor bastion e subversion é 1500 de acordo com ifconfig .

5) Variáveis do host do bastião Misc alterações de configuração do Apache ... tentei dezenas de coisas aqui sem sucesso. Aqui está a configuração do Apache de /etc/apache2/sites-enabled/default-ssl no host bastion (proxy reverso) que eu tenho executado no último ano:

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>

Eu estou realmente no meu juízo final sobre isso ... todas as sugestões são bem vindas.

    
por hdave 08.01.2013 / 20:25

1 resposta

2

Isso parece um problema com os tempos limite (firewall excluindo sessões da tabela de sessão).

Eu não estou totalmente familiarizado com o subversion e o Eclipse, mas;

Se ele abrir uma conexão com o servidor subversion na inicialização e tentar usar a mesma sessão para confirmar o código após 60 minutos (padrão de tempo limite da Cisco), ele falhará.

Seu firewall descartará os pacotes dizendo que não encontra a sessão correspondente.

Você pode tentar adicionar um mapa de classe e um mapa de política para corresponder ao tráfego que vai para o seu servidor de subversão.

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

então

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

então

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

Isso definirá todo o tráfego indo para sua subversão na porta especificada com um tempo limite de 8 horas.

    
por 08.01.2013 / 22:37