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:
- alto rendimento, idealmente próximo à velocidade do fio
- 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)
- 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)
- 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
.
fonte
Respostas:
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.
fonte
racoonctl
que 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.