OpenVPN vários servidores na mesma sub-rede, alta disponibilidade

5

Olá a todos. Deixe-me começar dizendo que minha experiência com o Linux não é super incrível, mas geralmente consigo encontrar minhas coisas facilmente.

No trabalho, temos uma configuração do OpenVPN que já está sendo melhorada há algum tempo. O servidor principal (modo tap) é executado em nosso escritório, por trás de uma conexão DSL bastante lenta. O principal problema é que, como normalmente estou fora do escritório, toda vez que quero acessar algo na rede virtual, tenho que passar por esse servidor para chegar em outro lugar.

Temos dois servidores com conexões de 100 Mbit que usamos para desenvolvimento e produção, cerca de mais três servidores no escritório (um deles por trás de uma linha T1 diferente para VOIP) e cerca de duas dúzias de clientes que usam a rede diariamente a partir de vários locais.

Tivemos situações em que o roteamento de rede (fora do nosso controle) não permitia que as pessoas acessassem nosso servidor principal do OpenVPN, enquanto os outros locais eram conectáveis. Além disso, sempre que alguém fora do escritório quiser buscar algo em qualquer um dos servidores (digamos, um repositório de código de 500 MB), uma incrível velocidade de download de 20 KB / s é inaceitável atualmente (já mencionei DSL lenta? Ok). Tivemos que implementar a modelagem de tráfego nesse servidor, já que maximizar essa conexão era bastante trivial.

Pensei em executar dois (ou mais) servidores OpenVPN na rede. Eles teriam que ter a mesma sub-rede, já que nosso aplicativo depende dos endereços IP da rede virtual para algumas de suas principais funcionalidades. Os clientes também prefeririam manter os mesmos endereços IP, mas isso não é vital.

Para simplificar, vamos chamar o servidor office atual e o segundo servidor que estou configurando, cloud . Ligue para o servidor no telefone T1 .

Isto provou ser bastante complexo porque, assim que me conecto a cloud , não consigo ver office . Todas as rotas para um servidor que passaria por office também não funcionam enquanto eu estiver conectado a cloud (sem ping, nada) e vice-versa. Não há regras para o iptables que possam estar bloqueando o tráfego.

Recentemente me deparei com este artigo no linuxjournal, mas a solução que eles fornecem parece cobrir apenas o uso de dois servidores e um pouco desatualizado (não consigo encontrar muita documentação, o wiki deles está offline). Eles também afirmam que adicionar mais servidores seria uma tarefa complexa.

Idealmente, gostaria de manter o servidor office existente executando a rede virtual e também executar o daemon OpenVPN nos servidores cloud e phone (Conexão de 100 Mbit e muito confiável, respectivamente) para que fiquemos em terreno seguro em caso de falha de hardware, falha de DSL, etc.

Então, em essência, estou procurando uma solução OpenVPN altamente disponível (consertar, corrigir, hackear, ajustar, o que você quiser chamá-la) que aceitará conexões em múltiplos hosts (2 ou mais), mantendo a mesma Sub-rede de endereço IP, independentemente do servidor ao qual você se conecta.

Obrigado pela leitura e desculpe pelo longo post, espero que isso se destaque: P

EDITAR:

Outra parte importante que esqueci de mencionar é que os três servidores precisam ter endereços IP consistentes na rede virtual, porque a lógica da nossa aplicação depende diretamente deles. Os clientes são irrelevantes, eles podem ter qualquer endereço, mas os servidores precisam se comunicar entre si. Se você souber de uma solução diferente (algum tipo de dns para as entradas em 10.8.0. * Talvez), por favor, inclua-a. Obrigado novamente.

EDIT 2:

Adicionou um mapa de rede, não é ótimo, mas deve mostrar o ponto. Observe que, para qualquer servidor se comunicar com qualquer outro servidor, ele deve sempre passar pelo servidor Office . Isso se destina, embora eu queira alterar essa funcionalidade para Cloud .

Mapa de rede

    
por andre 12.12.2010 / 18:33

3 respostas

3

Eu joguei com networking e openvpn bastante (10+ anos sysadmin no ISP) Então, que tal esta solução simples?

Criar entrada no dns que terá n endereços IP para um host (modo round-robin)

No cliente OpenVPN, coloque o nome remoto do host para que o round robin seja alcançado

No servidor vpn tem duas placas de rede, uma está conectada ao ip público (endereço robin round 1), outra está conectada à classe privada. Segundo servidor, endereço público diferente (endereço 2 de round robin), mesma classe privada.

Crie a interface tap0 que conectará os endereços à interface privada e terá um único dhcp que gerenciará o endereçamento para seus clientes.

Desta forma, acho que você pode conseguir tanta redundância quanto quiser.

    
por 30.12.2010 / 00:28
1

Se for aceitável que os clientes obtenham endereços diferentes, dependendo do servidor ao qual estão conectados, isso é muito fácil de configurar. Você não abordou diretamente o número de clientes conectados nem o tamanho do seu espaço de endereçamento (nem se sua VPN está em uma rede dedicada ou se compartilha o mesmo espaço de endereçamento que o restante de seu escritório), então estou fazendo um monte de suposições que podem muito bem não estar corretas. Sinta-se à vontade para responder com correções.

Vou assumir:

  • Você deseja configurar três servidores OpenVPN, todos na rede 192.168.1.0/24.
  • Os servidores OpenVPN são os únicos servidores que usam esse espaço de endereço.
  • Sua rede "interna" é 10.10.10.0/24.
  • Você deseja que pelo menos 20 clientes possam se conectar simultaneamente a um único servidor.

Você divide sua rede VPN em várias redes / 27, cada uma associada a um único servidor. Isso te dá:

  • Servidor 1
    • Rede: 192.168.1.0/27
    • IP do servidor: 192.168.1.1
  • Servidor 2
    • Rede: 192.168.1.32/27
    • IP do servidor: 192.168.1.33
  • Servidor 3
    • Rede: 192.168.1.64/27
    • IP do servidor: 192.168.1.65

Uma configuração do OpenVPN para o primeiro desses servidores incluiria o seguinte:

server 192.168.1.0 255.255.255.224
push "route 192.168.1.0 255.255.255.0"
push "route 10.10.10.0 255.255.255.0"

Para o segundo, incluiria:

server 192.168.1.32 255.255.255.224

.. e assim por diante.

Sua infraestrutura de rede precisará ter rotas para todos os três servidores. Isso seria algo nos moldes de:

route add 192.168.1.0/27 gw 192.168.1.1
route add 192.168.1.32/27 gw 192.168.1.33
route add 192.168.1.64/27 gw 192.168.1.65

Do ponto de vista de seus aplicativos, qualquer cliente conectado está na mesma rede /24 . Você obtém três servidores OpenVPN (com espaço para adicionar mais, já que você está usando apenas endereços até 192.168.1.95 com este arranjo), ou com espaço para mais clientes por servidor.

Esta é uma breve visão geral de como você configuraria as coisas. Se algo aqui não faz sentido ou se você quiser que eu entre em mais detalhes em uma área específica, me avise.

NB: escrito depois de muito glögg , então pode precisar de alguma sintaxe e / ou fato verificação.

por 26.12.2010 / 03:05
0

Você pode dar uma olhada n2n

link

Você pode ter todos os clientes na mesma sub-rede. Você deve ser capaz de manter o mesmo espaço de endereço e apenas ativar algumas rotas através da nova rota VPN para que tudo funcione.

    
por 29.12.2010 / 05:50