Existe-t-il des VPN distribués / maillés / P2P?

12

J'ai mon VPN personnel, connectant plusieurs appareils afin qu'ils puissent avoir des adresses IP fixes sur un réseau toujours accessible (tant qu'ils sont connectés à Internet). Cela est nécessaire pour moi, car mes appareils peuvent être en mouvement, sur des réseaux différents et imprévisibles (téléphone portable réseau 4G, ordinateur portable à l'université, serveur domestique à la maison), et j'ai un serveur de sauvegarde qui doit se connecter à eux (et parfois , Je dois aussi).

Je pense également à installer quelque chose comme la synchronisation, qui peut également bénéficier de latences plus faibles et de nœuds plus proches.

De plus, je suis paresseux et j'aime lire / mettre en pause la musique en cours de lecture sur mon serveur domestique à partir de mon smartphone, ce n'est peut-être pas sur le même réseau (cela devrait, mais ce n'est pas toujours le cas).

Cela signifie que j'ai un serveur OpenVPN et que le openvpnclient fonctionne sur chaque appareil. Ils se connectent tous au serveur, et tout trafic provenant de deux nœuds doit transiter par le serveur, qui est relativement éloigné, et a un débit très limité. Cela signifie latence et lenteur. Et lorsque j'appuie sur le bouton "Pause", cela peut prendre jusqu'à 10 secondes pour mettre la musique en pause. Même si les deux nœuds sont en fait sur le même LAN (car ils parlent via le VPN). Meh.

Idéalement, il devrait exister un moyen de créer un VPN capable de trouver les chemins les plus courts entre les nœuds et de tenter de les connecter directement. Quelque chose comme la façon dont Skype a travaillé avec les supernodes?

Alors que le serveur est loin d'ici, l'un des nœuds a une adresse IP publique et peut être atteint par les autres nœuds. Il pourrait agir en tant que serveur d'eux - même si ce n'est pas le serveur lui-même, bien que ce soit un meilleur choix pour certains nœuds.

J'imagine que je pourrais faire quelque chose de semblable pour exécuter à la fois un client et un serveur, et les ponter sur ce nœud, mais cela n'a pas l'air élégant. C'est hackish, ça complique l'ICP, ça fend le VPN. Je n'aime pas ça.

Bien que je puisse utiliser un simple VPN comme PPTP qui ne garantit vraiment pas la sécurité des communications, j'ai décidé que je ne voulais pas déranger la configuration de Bacula pour crypter les connexions entre les nœuds, ce qui signifie que le trafic est simple à l'intérieur du VPN. L'encapsulation VPN est la seule sécurité, elle ne devrait donc pas être faible. Cependant, tout ce qui résout le VPN de type "maillé" sans confidentialité serait déjà un bon début - je m'assurerais que le trafic commence à passer par SSL / TLS.

Cela ressemble à un problème que quelqu'un d'autre aurait pu avoir et résolu maintenant. Y a-t-il quelque chose comme ça?

Il y a aussi la chance que je regarde les choses dans le mauvais sens, mais jusqu'à présent, cela semble être la meilleure approche pour m'assurer que je peux toujours me connecter à n'importe lequel de mes appareils à distance, peu importe où je suis, ou ils se trouvent.

Valmiky Arquissandas
la source
Oui, ce que vous voulez existe, pour la communication sur LAN si les appareils sont locaux. C'est le service Azure Bus
goodguys_activate

Réponses:

6

Je ne sais pas si cela répond complètement à vos besoins, mais vous devriez probablement jeter un œil à tinc: http://www.tinc-vpn.org/ . Il correspond assez étroitement au réseau maillé orchestré par un serveur central comme vous l'avez décrit, mais je ne sais pas s'il réussira à découvrir des homologues dans votre réseau local.

Steffan Karger
la source
3

Le vpn maillé le plus simple que j'ai trouvé et utilisé est PeerVPN ( http://www.peervpn.net/ ).

Fonctionnalités de PeerVPN

  • Prise en charge du tunneling Ethernet à l'aide de périphériques TAP.
  • Prise en charge IPv6.
  • Topologie de réseau maillé complet.
  • Construit automatiquement des tunnels via des pare-feu et des NAT sans configuration supplémentaire (par exemple, redirection de port).
  • Prise en charge du chiffrement et de l'authentification à clé partagée.

La configuration est simple .. un fichier de configuration que vous modifiez et pour le vpn de maillage de base, il n'y a que 6 paramètres que vous devez spécifier, voir le tutoriel PeerVPN qui ne fait qu'une page: http://www.peervpn.net/tutorial/

La clé de chiffrement / d'authentification PSK peut être jusqu'à 512 bits (64 octets).

J'ai configuré peervpn jusqu'à présent sur plusieurs serveurs distants et cela fonctionne très bien. De plus, il n'est pas nécessaire d'avoir un "super-nœud" comme vous pouvez le rencontrer dans d'autres implémentations de vpn maillé.

Les nœuds dans peervpn se renseignent sur les nœuds nouvellement ajoutés au VPN automatiquement sans avoir besoin de modifier les configurations. Le trafic de nœud à nœud est également direct et ne passe pas par un concentrateur VPN central.

Remarque: lisez le fichier peervpn.conf par défaut pour en savoir plus sur les autres options dont vous "pouvez" profiter. Mais pour le vpn maillé de base comme je l'ai dit, il vous suffit de définir 6 options (nom du vpn, PSK, adresse IP du point de terminaison du tunnel local, "nom" de l'interface que vous souhaitez voir / utiliser sur votre système linux et numéro de port à utiliser pour "that" vpn ... notez que vous pouvez utiliser peervpn pour plusieurs VPN indépendants sur un serveur)

bmullan
la source
0

J'ai eu exactement le même problème il y a des années. J'avais environ 30 bureaux qui avaient tous besoin de pouvoir communiquer directement, mais ils étaient installés dans une configuration «concentrateur et rayon». J'ai écrit un outil en Python pour générer automatiquement le n x (n-1)/2nombre de connexions dans OpenVPN entre les bureaux. Plus tard, j'ai ajouté un support pour le routage RIP entre les sites après un problème Comcast bizarre où un bureau pouvait voir tous les autres, mais pas le bureau principal. Enfin, j'ai ajouté la possibilité de générer automatiquement un DNS inverse pour les IP de liaison et la possibilité de pousser les packages vers chaque routeur.

Jetez un œil à OpenMesher . Ce matin, j'ai décidé de le dépoussiérer pour un prochain projet. J'espère qu'il fait ce que vous voulez. Sinon, n'hésitez pas à soumettre un problème et je vous aiderai.

Aaron C. de Bruyn
la source