VPN em malha de alto rendimento para conectar hosts de datacenter

16

Estamos alugando vários hosts em um datacenter público. O datacenter não oferece VLANs privadas; todos os hosts recebem um (ou mais) endereços IPv4 / IPv6 públicos. Os hosts vêm com CPUs muito modernas (Haswell quad-core, 3,4 GHz) e possuem uplinks de Gbit. As diferentes áreas (salas? Andares? Edifícios?) Do datacenter estão interconectadas com - pelo que sei - links de Gbit ou 500Mbit. Nossos anfitriões estão executando o debian wheezy. Atualmente, estamos executando um pouco acima de 10 hosts, com a expectativa de crescimento em um futuro próximo.

Estou procurando uma maneira de fazer com que todos os hosts se comuniquem uns com os outros, de forma segura e confidencial. A camada 3 está correta, a camada 2 está correta (mas não é necessária). Como não tenho acesso às VLANs, será necessário algum tipo de VPN.

O que é importante para mim:

  1. alto rendimento, idealmente próximo à velocidade do fio
  2. arquitetura descentralizada e em malha - para garantir que a taxa de transferência não seja mais lenta por um elemento central (por exemplo, concentrador de VPN)
  3. A pegada da CPU não é excessiva (considerando os conjuntos de criptografia AESNI e GCM, espero que isso não seja um requisito ridículo)
  4. facilidade operacional de uso; não é muito complicado de configurar; rede pode crescer sem perder conexões estabelecidas

No momento, estamos usando o tinc . Ele marca [2] e [4], mas alcanço apenas cerca de 600Mbit / s (simplex) de uma velocidade de 960Mbit / s, e perco completamente um núcleo. Além disso, o tinc 1.1 - atualmente em desenvolvimento - ainda não é multithread, por isso estou preso ao desempenho de singlecore.

O IPSec tradicional está fora de questão, pois exige que um elemento central ou uma carga de túneis seja configurada (para alcançar [2]). O IPsec com criptografia oportunista seria uma solução, mas não tenho certeza de que ele tenha se tornado um código de produção estável.

Eu me deparei com tcpcrypt hoje. Exceto pela autenticação ausente, parece o que eu quero. A implementação do espaço do usuário tem um cheiro lento, mas todas as outras VPNs também. E eles falam de uma implementação do kernel. Ainda não tentei e estou interessado em como se comporta em relação a [1] e [3].

Que outras opções existem? O que as pessoas estão fazendo e que não estão na AWS?

Informação adicional

Estou interessado no GCM, esperando que ele reduza a pegada da CPU. Veja o artigo da Intel sobre o assunto . Ao conversar com um dos desenvolvedores de tinc, ele explicou que, mesmo usando o AESNI para criptografia, o HMAC (por exemplo, SHA-1) ainda é muito caro na velocidade de Gbit.

Atualização final

O IPsec no modo de transporte funciona perfeitamente e faz exatamente o que eu quero. Após muita avaliação, escolhi o Openswan em vez de ipsec-tools, simplesmente porque ele suporta o AES-GCM. Nos CPUs Haswell, medo cerca de 910-920Mbit / s de taxa de transferência simples, com cerca de 8-9% de carga de CPU de um kworkerd.

Hank
fonte
SO, equipamento de baixo custo? Qual desempenho você espera manter após a criptografia no nível de gigabit? De jeito nenhum - sugiro que você procure um host mais profissional ou mate a parte de criptografia.
TomTom
2
@ tomtom De acordo com o documento de desempenho de criptografia da Intel, o desempenho de criptografia do AES-128-CBC é de 4,52 ciclos por byte, o que significa que 100 MB / s consumiriam ~ 450 MHz de um único núcleo. A descriptografia é consideravelmente menos dispendiosa. Portanto, a menos que problemas específicos da implementação reduzam o desempenho, deve funcionar com cargas que não precisam do desempenho máximo da CPU e do desempenho da rede ao mesmo tempo .
o perfil completo de wabbit
por que você quer GCM? O IPSEC não é suscetível aos ataques do TLS, portanto, considerar o uso do GCM para solucionar os pontos fracos do TLS nos modos CBC é um ponto discutível.
precisa saber é o seguinte

Respostas:

15

O que você não quer é uma VPN. O que você faz falta é realmente IPsec, mas não no modo de túnel. Em vez disso, você deseja o IPsec no modo de transporte .

Nesta configuração, cada host se comunica diretamente com seu par e apenas as cargas de pacote são criptografadas, deixando os cabeçalhos IP no lugar. Dessa forma, você não precisa fazer nenhuma ginástica de roteamento para fazer as coisas funcionarem.

Sim, você precisará de uma sub-rotina de conexão IPsec para cada host (a menos que seus hosts estejam agrupados em uma sub-rede; nesse caso, você poderá fazer isso por meio de um bloco CIDR), mas esses poderão ser facilmente gerados programaticamente pelo seu sistema de gerenciamento de configuração.

Você não perguntou sobre detalhes de configuração, mas se precisar de alguns ponteiros (não há tantas informações sólidas no modo de transporte), consulte este post que escrevi recentemente.

EEAA
fonte
Eu segundo a idéia de usar o modo de transporte IPSEC para isso. No entanto, o uso do PSK com o OpenSWAN pode não ser o melhor de todas as configurações. O Linux já vem com uma implementação IPSEC nativa e um daemon de chaves (racoon), eu continuaria com isso, a menos que exista um requisito específico não coberto pelo KAME / racoon.
o perfil completo de wabbit
11
Muito obrigado! Combinando seus conselhos, usei a implementação IPsec nativa com o racoon. Testei primeiro em máquinas pequenas de núcleo único e o rendimento já aumentou em 50% e a latência caiu para cerca de 60%. Confirmo isso nos nós de Haswell na próxima semana e, em seguida, aceitarei a resposta. Eu preciso descobrir se o AES-GCM é suportado no kernel e como sinalizá-lo para o IPsec.
Hank
@ syneticon-dj - apenas curioso ... por que não openswan? Ele ainda usa os bits xfrm ip do kernel para IPsec, mas usa pluto como seu daemon IKE no espaço do usuário, em vez de guaxinim. Não estou defendendo que o openswan seja o melhor por aí - é tudo o que usei e, se houver melhores opções, quero seguir nessa direção.
EEAA
11
Provavelmente, tudo se resume à preferência pessoal, mas sempre tive problemas com a deselegância dos arquivos de configuração do Free- / OpenSWAN e a implementação de roteamento totalmente feia. Eu gosto muito da parte dinâmica racoonctlque se parece muito com o que os roteadores comerciais permitem em seus controles IPSEC. O KAME se sente mais bem projetado, enquanto o OpenSWAN se sente melhor.
o que você precisa
@ syneticon-dj, você gostaria de elaborar isso? Você quer dizer que você pode rotear várias redes através de um link IPSec sem a necessidade de várias configurações de SA, como está agora no Openswan?
rsuarez