Acabamos de criar um cluster de 12 nós e queríamos que o OpenVPN para muitas das comunicações precisasse ser 100% seguro entre cada computador (não temos acesso a um ambiente 100% seguro / privado, então temos que ter criptografia entre computadores.)
Então, temos uma configuração que se parece com isso:
+------------------+
| |
| OpenVPN Server |
| |
+------------------+
^
|
+-----+------+----------------+----------+
| | . |
| | . |
v v . v
+------------------+ +------------------+ ..... +------------------+
| | | | . . | |
| OpenVPN Client | | OpenVPN Client | . . | OpenVPN Client |
| A | | B | . . | n |
+------------------+ +------------------+ ..... +------------------+
O OpenVPN Server é um dos 12 computadores e notamos que ele fica furioso sempre que qualquer cliente se comunica com outro cliente. Observando as informações do firewall, podemos ver claramente que os clientes não se comunicam entre si. Em vez disso, todos os dados são enviados para o servidor e depois encaminhados para outro cliente (ou seja, do cliente A para o cliente B, vemos a transferência indo de A para Servidor e, em seguida, de Servidor para B.)
O que eu estou querendo saber é isso:
A recebe a chave pública de B sempre que quiser enviar dados para B? Eu imagino que não é porque exigiria para o código do cliente OpenVPN saber que os dados estão sendo enviados para B. Então, se eu entendi corretamente, o que está acontecendo é:
- O cliente A criptografa seus dados com a chave pública do servidor.
- O cliente A envia esse blob criptografado para o servidor.
- O servidor usa sua chave privada para descriptografar o blob.
- O servidor determina para onde está encaminhando o blob.
- O servidor criptografa novamente os dados com a chave pública do Cliente B.
- O servidor envia esse blob recém-criptografado para o cliente.
- O cliente B usa sua chave privada para descriptografar o blob.
Em outras palavras, parece mesmo assim:
+------------------+
| |
| OpenVPN Server |<-----------------------+
| | |
+------------------+ |
^ ^ ^ |
| | . |
| | . |
| | .................. |
| | . |
v v v v
+------------------+ +------------------+ ..... +------------------+
| | | | . . | |
| OpenVPN Client | | OpenVPN Client | . . | OpenVPN Client |
| A | | B | . . | n |
+------------------+ +------------------+ ..... +------------------+
Isso está correto? Eu tentei encontrar algo parecido na documentação e só encontrei coisas sobre como instalar o OpenVPN (o que fizemos e funciona, mas parece bastante lento! Muito mais lento do que eu esperava).