VPN de alto rendimento com malha para conectar hosts do datacenter

15

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.4GHz) e possuem uplinks Gbit. As diferentes áreas (quartos? Andares? Edifícios?) Do datacenter estão interligadas com - pelo que eu posso dizer - links Gbit ou 500Mbit. Nossos anfitriões estão executando debian wheezy. Atualmente, estamos correndo pouco acima de 10 hosts, com a expectativa de crescimento no 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á bem, a camada 2 está ok (mas não é necessária). Como não tenho acesso a VLANs, será necessário algum tipo de VPN.

O que é importante para mim:

  1. alto rendimento, idealmente próximo a wirespeed
  2. arquitetura descentralizada em malha - isso é para garantir que a taxa de transferência não seja reduzida por um elemento central (por exemplo, concentrador de VPN)
  3. O tamanho da CPU não é excessivo (dado os conjuntos de codificação 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

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

O IPSec tradicional está fora de questão, já que requer um elemento central ou um sh * tload de túneis a serem configurados (para alcançar [2]). O IPsec com criptografia oportunista seria uma solução, mas não tenho certeza de que ele chegou a um código de produção estável.

Eu tropecei em tcpcrypt hoje. Exceto pela falta de autenticação, parece que eu quero. A implementação do espaço do usuário cheira lentamente, mas também todas as outras VPNs. E eles falam de uma implementação do kernel. Eu não tentei ainda, e estou interessado em como se comporta re [1] e [3].

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

Informações adicionais

Estou interessado no GCM, esperando que isso reduza o espaço ocupado pela CPU. Veja o documento da Intel sobre o tópico . Ao falar com um dos desenvolvedores do tinc, ele explicou que, mesmo usando o AESNI para a criptografia, o HMAC (por exemplo, SHA-1) ainda é muito caro na velocidade do Gbit.

Atualização final

O IPsec no modo de transporte funciona perfeitamente e faz exatamente o que eu quero. Depois de muita avaliação, escolhi o Openswan sobre ipsec-tools, simplesmente porque ele suporta o AES-GCM. Nos CPUs Haswell, eu medi cerca de 910-920Mbit / seg de throughput simplex com cerca de 8-9% de carga de CPU de um kworkerd .

    
por Hank 16.04.2014 / 20:19

1 resposta

13

O que você não quer é uma VPN. O que você faz deseja é de fato o IPsec, mas não no modo de encapsulamento. Em vez disso, você deseja o IPsec no modo transport .

Nesta configuração, cada host se comunica diretamente com seu par, e somente cargas de pacote são criptografadas, deixando os cabeçalhos de 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, caso em que você pode fazer isso por meio de um bloco CIDR), mas eles podem ser facilmente gerados programaticamente pelo gerenciamento de configuração sistema.

Você não perguntou sobre os detalhes da configuração, mas se precisar de alguns ponteiros (não há muita informação sólida no modo de transporte), você pode consultar esta postagem do blog escrevi recentemente.

    
por 17.04.2014 / 03:41