Puis-je dire une fois de plus mon amour pour [WireGuard] et espérer qu'il sera bientôt fusionné? Peut-être que le code n'est pas parfait, mais je l'ai parcouru et comparé aux horreurs d'OpenVPN et d'IPSec, c'est une œuvre d'art.
Linus Torvalds, sur la liste de diffusion du noyau Linux
Je suis sûr que beaucoup ont déjà entendu parler de Wireguard. Certains l'ont même senti en direct. Je l'ai bien aimé en production, tant en termes de performances que de facilité de configuration. Oui, il n'y a pas de millions de configurations mystérieuses pour toutes les occasions comme OpenVPN et XFRM + StrongSwan dans IPSEC VPN. C'est simple et concis à la fois dans le code et dans les configurations. Cela ne deviendra pas encore audacieux et maladroit. En bref, une version aussi positive du scénario «brûler l'héritage et tout écrire correctement».
J'ai décidé de ne pas écrire un autre guide "comment j'ai installé Wireguard", mais de partager quelques utilitaires utiles. Certains avec une interface graphique très réussie à mon goût, ce qui convient aux services avec de nombreux utilisateurs. Nous analyserons l'utilisation de ce VPN pour la communication entre les nœuds dans différents clusters Kubernetes, plusieurs interfaces graphiques Web pour la génération et quelques ressources utiles.
Pourquoi est-ce vraiment nécessaire?
La question clé. L'une des choses les plus cool à son sujet est qu'il est très productif. Dans la plupart des cas, il y a moins de latence et un débit plus élevé avec une charge CPU égale. Si vous payez pour les ressources dépensées ou prévoyez de louer des machines virtuelles en tenant compte des pics de charge, ce type de VPN vous fera également économiser de l'argent. Je pense qu'il n'est pas nécessaire d'expliquer pourquoi il est mauvais de générer du trafic sur des réseaux ouverts entre des nœuds individuels.
Source: www.wireguard.com/performance
De plus, il est à noter qu'il est inclus dans le noyau depuis Linux 5.6, et depuis ce printemps il est également inclus dans la branche principale du noyau Android, ce qui nous donne une excellente efficacité énergétique sur les téléphones mobiles ... Cependant, je dois dire qu'il n'avait pas vraiment épuisé la batterie du téléphone auparavant.
Kilo - Wireguard pour Kubernetes
Très souvent, les entreprises plus grandes que la moyenne ont des situations où elles doivent utiliser plusieurs clouds différents. Les raisons sont différentes - tolérance aux pannes, bonne présence dans la région et faibles pings. Parfois, les prix sont pour des produits spécifiques. Par exemple, vous pouvez exécuter l'interface et la logique principale sur vos propres serveurs, et externaliser les tâches gourmandes en GPU vers des instances AWS.
Comment ça fonctionne? Kilo nécessite un module de noyau wireguard sur tous les nœuds. Si vous utilisez des noyaux plus récents que 5.6, alors le module sera déjà dans la branche principale et vous n'aurez rien à finaliser. Ensuite, l'agent kilo, "kg", s'exécute sur chaque nœud du cluster, configurant des clés privées et publiques pour configurer un VPN. Les règles de routage du trafic entre des régions distinctes sont également configurées automatiquement. Kilo peut également fonctionner en conjonction avec d'autres solutions de mise en réseau pour les clusters, telles que Flannel. Dans le même temps, kilo assurera la communication entre les régions et Flannel se chargera du trafic au sein d'un même endroit.
Lors de la création d'une topologie de réseau, elle s'appuie sur topology.kubernetes.io/region , mais vous pouvez également marquer les régions manuellement.
Exigences:
- Kernel newer 5.6 ou module wireguard séparé
- IP blanche aux nœuds, pour organiser une connexion directe entre eux.
Pour plus de détails, consultez la conférence des développeurs de l'année dernière sur les forums Kubernetes à Séoul et la documentation .
wg-gen-web
Ce qu'on appelle "encore un autre générateur de configuration". Mais très agréable à travailler. La principale différence dans l'approche est que l'auteur n'essaie pas de modifier la configuration d'un service en cours d'exécution à la volée, mais fournit uniquement une interface graphique pratique pour générer des règles. Ensuite, vous implémentez vous-même la mise à jour des configs à votre goût.
Principales caractéristiques - génère des codes QR pratiques pour les clients mobiles et envoie toutes les données nécessaires à la connexion à la messagerie du client. Eh bien, dockerisé, bien sûr. Le référentiel est ici .
Le déploiement est assez simple:
docker run --rm -it -v /tmp/wireguard:/data -p 8080:8080 -e "WG_CONF_DIR=/data" vx3r/wg-gen-web:latest
Sous-espace
Une autre interface graphique pour un travail facile avec de nombreux périphériques clients.
Caractéristiques principales:
- Authentification unique à l'aide de SAML. Vous pouvez aller sous compte Google.
- Ajoutez et supprimez des appareils en quelques clics
- Génération de configurations individuelles pour chaque appareil. Eh bien, le code QR, bien sûr.
- Crypter HTTPS hors de la boîte et rediriger automatiquement vers le port 443
Facile à déployer sur VPS. Au fait, nous les avons. On peut dormir)
Le wireguard doit être installé sur le serveur et les ports doivent être ouverts: 80 / tcp, 443 / tcp, 51820 / udp (WireGuard). Dans ce cas, vous devez supprimer le dnsmasq standard, car il sera lancé dans le conteneur.
Ensuite, tout est assez typique, remplacez uniquement --env SUBSPACE_HTTP_HOST par votre domaine:
# Your data directory should be bind-mounted as `/data` inside the container using the `--volume` flag.
$ mkdir /data
docker create \
--name subspace \
--restart always \
--network host \
--cap-add NET_ADMIN \
--volume /usr/bin/wg:/usr/bin/wg \
--volume /data:/data \
--env SUBSPACE_HTTP_HOST=subspace.example.com \
subspacecloud/subspace:latest
$ sudo docker start subspace
Le référentiel est ici .
Au lieu de conclusions
Si vous n'avez pas encore essayé ce VPN, je le recommande vivement. Souvent, il est capable de faire revivre du matériel peu puissant, qui ne pouvait pas faire face à une charge plus tôt. Ce n'est pas non plus très difficile à configurer. Certes, sa tâche principale est toujours de percer des tunnels droits et préconfigurés. Aucune configuration dynamique ne lui est disponible au sens habituel. Un prix à payer pour la simplicité et la performance.
D'ailleurs, si vous ne le savez pas encore, wireguard est déjà inclus dans la version bêta de RouterOS 7.1 de MikroTik. Vous pouvez l'essayer maintenant, mais selon mes sentiments, il est encore humide.
Eh bien, traditionnellement, je peux vous inviter à essayer de déployer wireguard sur notre VPS... Par exemple, pour envelopper une partie du trafic de votre réseau domestique vers la Suisse ou les Pays-Bas. Nous avons de nombreux emplacements différents et la politique de prix est très agréable pour de telles tâches.
Comme je l'ai dit, Wireguard est très économe en ressources, donc une configuration minimale avec 1 cœur et 1 Go de RAM sera plus que suffisante pour prendre en charge un grand nombre de clients. Les prix sont également assez humains:
- Location à Amsterdam, Londres, Francfort - 503 ₽ / mois
- Et sur le site de Moscou, avec un processeur légèrement plus simple - 240 ₽ / mois.