roteamento dinâmico entre túneis openvpn

6

Estou pensando em usar roteamento dinâmico [OSPF ou RIP] através de túneis OpenVPN . agora eu tenho poucos escritórios conectados em malha completa, mas isso não é uma solução escalável, pois adicionamos mais locais. Eu gostaria de evitar a situação quando muito tráfego interno é afetado se um dos dois pontos de terminação de VPN que eu pretendo usar está em baixo.

você tem configuração semelhante trabalhando na produção? em caso afirmativo - qual daemon de roteamento você usou - quagga ? algo mais? você encontrou algum problema?

obrigado!

    
por pQd 02.03.2011 / 10:49

2 respostas

4

Eu já implementei algo nesse sentido antes, mas minha configuração foi bastante complicada, talvez em demasia. No momento, estou investigando a implementação de uma solução mais simples ao longo das linhas de / influenciada pelo que é descrito na URL a seguir, mas descreverei o que construí no tempo médio. O URL é o link

Uma opção que funcionou muito bem para mim no passado é construir meus túneis OpenVPN usando dispositivos de toque em vez de dispositivos tun. Isso encapsula a Ethernet através do encapsulamento em vez da camada 3, e permite que você contorne as limitações inerentes do OpenVPN, mantendo sua própria tabela de roteamento separada do kernel. A desvantagem é você incorrer em muita sobrecarga de tunelamento desta forma ... imagine TCP over Ethernet sobre TCP criptografado SSL ... você começa a idéia. De cabeça para baixo é que funcionou e escalou horizontalmente bastante bem.

Supondo que seus servidores e clientes VPN sejam pontos de extremidade do Linux (testei apenas no Linux), você pode criar uma nova interface de ponte virtual e atribuir a interface de acesso à ponte para obter sua camada 3. Na minha topologia, eu dei a cada Servidor VPN sua própria sub-rede 10.x.0.0 / 16 e também implantou um servidor DHCP local para atribuir endereços a clientes de conexão. O servidor DHCP precisa estar lá porque o OpenVPN não está mais ciente dos endereços IP; está tunelando a Ethernet. Os clientes executam o dhclient para obter um IP sobre a interface VPN após a conexão, e tudo isso é gerenciado por scripts de conexão vinculados à configuração do OpenVPN.

Quando você tiver endereços IP em ambos os lados via DHCP, poderá usar um protocolo de roteamento dinâmico para anunciar rotas entre clientes conectados. Eu usei o Quagga no passado e ele funciona de forma bastante confiável.

Exemplo de configuração do servidor usando o toque:

mode server
proto tcp-server
port 1194
dev tap0

Exemplo de comandos para adicionar interface de toque a nova ponte:

sudo brctl addbr vpnbr0    # create new bridge called vpnbr0
sudo brctl setfd vpnbr0 0  # set forwarding delay to 0 secs
sudo brctl addif vpnbr0 tap0 # add openvpn tap interface to vpnbr0

Exemplo de comandos de desmontagem:

sudo brctl delif vpnbr0 tap0
sudo brctl delbr vpnbr0

Depois de ter a interface bridge vpnbr0, você pode executar um servidor DHCP ou atribuir endereços IP manualmente. Você pode então tratá-lo como qualquer outra interface Ethernet. Você provavelmente desejará fazer alterações adicionais para ajustar o tamanho da MTU e tentar diferentes protocolos e opções de criptografia até encontrar o equilíbrio certo entre eficiência e segurança. Eu não tenho nenhuma boa especificação para oferecer sobre o throughput geral, e há muitas partes móveis aqui.

Se eu tivesse que fazer tudo de novo, eu ficaria com dispositivos tun no OpenVPN, e seguiria as instruções no artigo que eu criei no primeiro parágrafo para atualizar a tabela de roteamento do kernel Linux a qualquer momento que a tabela de endereços interna do OpenVPN fosse atualizada. Isso eliminaria o DHCP da pilha, reduziria a sobrecarga de tunelamento e permitiria que meus clientes se conectassem e operassem sem participar do roteamento dinâmico.

    
por 22.08.2012 / 19:38
1

Atualmente, temos várias instâncias do OpenVPN AS sendo executadas com rotas estáticas apontando para cada uma delas. Nós atribuímos uma sub-rede / 24 a cada servidor OpenVPN. Atualmente, temos usuários apontados manualmente para cada servidor, mas você pode usar uma variedade de tecnologias para direcionar os usuários para a correta.

O único problema aqui é que, no caso de um serviço OpenVPN ficar inativo, os usuários precisarão se conectar a outro servidor para obter tráfego. Isso se deve ao fato de estarmos redistribuindo uma rota estática para o servidor OpenVPN, já que o OpenVPN AS não suporta o OSPF.

Existem roteadores de código aberto que suportam o OpenVPN, como o Vyatta, mas preferimos a interface da Web do OpenVPN AS.

    
por 15.03.2011 / 23:18