Les données sont-elles décryptées et recryptées par le server OpenVPN lorsqu'elles sont envoyées entre clients?

Nous venons de créer un cluster de 12 nœuds et souhaitons que OpenVPN soit sécurisé à 100% entre chaque ordinateur (nous n'avons pas access à un environnement 100% sécurisé et privé, nous devons donc avoir un chiffrement entre les ordinateurs. )

Nous avons donc une configuration qui ressemble à ceci:

+------------------+ | | | OpenVPN Server | | | +------------------+ ^ | +-----+------+----------------+----------+ | | . | | | . | vv . v +------------------+ +------------------+ ..... +------------------+ | | | | . . | | | OpenVPN Client | | OpenVPN Client | . . | OpenVPN Client | | A | | B | . . | n | +------------------+ +------------------+ ..... +------------------+ 

Le server OpenVPN est l'un des 12 ordinateurs et nous avons remarqué que cela devenait berserk chaque fois qu'un client communique avec un autre client. En regardant les informations de pare-feu, nous pouvons clairement voir que les clients ne communiquent pas entre eux. Au lieu de cela, toutes datatables sont envoyées au server, puis transmises à un autre client (c'est-à-dire du client A au client B, nous voyons le transfert de A vers Serveur, puis de Serveur vers B.)

Ce que je me request, c'est ceci:

Est-ce que A est la key publique de B quand il veut envoyer des données à B? J'imagine que ce n'est pas parce que cela exigerait que le code client OpenVPN sache que datatables sont envoyées à B. Donc, si je comprends bien, ce qui se passe est:

  1. Le client A chiffre ses données avec la key publique du server.
  2. Le client A envoie ce blob chiffré au server.
  3. Le server utilise sa key privée pour décrypter le blob.
  4. Le server détermine où il transmet le blob.
  5. Le server rechiffre datatables avec la key publique du client B.
  6. Le server envoie ce blob nouvellement chiffré au client.
  7. Le client B utilise sa key privée pour décrypter le blob.

En d'autres termes, cela ressemble vraiment à ceci:

  +------------------+ | | | OpenVPN Server |<-----------------------+ | | | +------------------+ | ^ ^ ^ | | | . | | | . | | | .................. | | | . | vvvv +------------------+ +------------------+ ..... +------------------+ | | | | . . | | | OpenVPN Client | | OpenVPN Client | . . | OpenVPN Client | | A | | B | . . | n | +------------------+ +------------------+ ..... +------------------+ 

Est-ce exact? J'ai essayé de find quelque chose comme ça dans la documentation et ne pouvais find que des choses sur la façon d'installer OpenVPN (ce que nous avons fait et cela fonctionne, mais cela semble plutôt lent, beaucoup plus lent que prévu).

Oui, une configuration client-server OpenVPN ressemble à votre deuxième diagramme. Les tunnels sont entre le server OpenVPN et les clients OpenVPN. Le server OpenVPN décrypte datatables provenant d'un tunnel et les crypte dans un autre tunnel.

Vous pouvez implémenter votre premier diagramme avec OpenVPN en utilisant une architecture peer-to-peer au lieu d'une architecture client-server. Vous devez configurer un tunnel VPN pour chaque paire de machines de votre réseau: chaque nœud possède n tunnels VPN pour un total de n² tunnels (ce qui n'est pas pratique).

L'parsing de ce qui se passe est la plupart du time correcte sauf pour une partie. Les keys publiques / privées ne sont pas (directement) utilisées pour crypter / décrypter les packages dans / hors du tunnel. Au lieu de cela, ils sont utilisés pour authentifier le tunnel et négocier les keys de session symésortingques utilisées pour le encryption / déencryption (et MAC).

Tu as raison. Dans votre configuration, vous avez une collection de VPN «point à point» entre vos clients et le server. La communication entre les clients doit être effectuée sur le server.

En effet, par défaut, les clients ne peuvent pas se voir, sauf si le server le permet. De la page de manuel:

  --client-to-client Because the OpenVPN server mode handles multiple clients through a single tun or tap interface, it is effectively a router. The --client-to-client flag tells OpenVPN to internally route client-to-client traffic rather than pushing all client-origi- nating traffic to the TUN/TAP interface. When this option is used, each client will "see" the other clients which are currently connected. Otherwise, each client will only see the server. Don't use this option if you want to firewall tunnel traffic using custom, per-client rules.