Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Wireguard ====== * [[https://github.com/pirate/wireguard-docs]] * [[https://dev.to/tangramvision/what-they-don-t-tell-you-about-setting-up-a-wireguard-vpn-1h2g]] * [[https://www.procustodibus.com/blog/2021/03/wireguard-logs/|Four ways to view WireGuard logs]] * [[https://linuxfr.org/news/wireguard-protocole-de-communication-chiffre-sur-udp-et-logiciel-libre|WireGuard, protocole de communication chiffré sur UDP et logiciel libre]] * [[https://dataswamp.org/~solene/2024-07-02-linux-vpn-netns.html|WireGuard and Linux network namespaces]] * [[https://it-notes.dragas.net/2024/07/15/bridging-networks-across-vps-wireguard-vxlan-freebsd/|Bridging Networks Across VPS With Wireguard and VXLAN on FreeBSD]] * [[https://korben.info/wg-easy-interface-web-simplifiee-wireguard.html|WG-Easy : l'interface web simplifiée pour WireGuard]] * [[https://blog.thea.codes/nordvpn-wireguard-namespaces/|Split tunneling using Wireguard and namespaces]] * [[https://enge.math.u-bordeaux.fr/blog/wireguard.html|Wireguard VPN with Guix]] Installer le paquet ''wireguard''. ==== Topologie avec un serveur central ==== [[https://www.procustodibus.com/blog/2020/11/wireguard-hub-and-spoke-config/|Wireguard: hub-and-spoke configuration]] ''A'' et ''B'' sont tous les deux derrière un NAT et un pare-feu et ont une adresse IP publique dynamique. Ils vont communiquer via Wireguard par le biais d'un serveur ''C'', accessible publiquement, avec une adresse IP fixe. === Génération des clés === Sur chaque machine, générer une paire de clés publique/privée: <code bash> (umask 077; wg genkey > endpoint-a.key) wg pubkey < endpoint-a.key > endpoint-a.pub </code> Les fichiers ne sont pas nécessaires, c'est ce qu'ils contiennent qui va être nécessaire dans les fichiers de configuration. === Configuration === Sur le serveur ''C'': <code ini /etc/wireguard/wg0.conf> # la configuration de C, le serveur [Interface] PrivateKey = <la clé privée de C> Address = 10.0.0.1/32 ListenPort = 51823 # la configuration de A, un client [Peer] PublicKey = <la clé publique de A> AllowedIPs = 10.0.0.2/32 # la configuration de B, un autre client [Peer] PublicKey = <la clé publique de B> AllowedIPs = 10.0.0.3/32 </code> Ajouter ''net.ipv4.ip_forward=1'' à ''/etc/sysctl.conf''. Sur le client ''A'': <code ini /etc/wireguard/wg0.conf> # la configuration de A, un client [Interface] PrivateKey = <la clé privée de A> Address = 10.0.0.2/32 ListenPort = 51823 # la configuration de C, le serveur [Peer] PublicKey = <la clé publique de C> Endpoint = 192.168.1.100:51823 AllowedIPs = 10.0.0.1/32, 10.0.0.3/32 PersistentKeepalive = 25 </code> * ''AllowedIPs'' contient les adresses IP que le serveur C va router au sein du VPN. * ''PersistentKeepalive'' permet d'initier automatiquement la connexion des clients au serveur et de la maintenir fonctionnelle. Sans cela, A ne pourra parler à B en passant par C que si B a déjà parlé à C auparavant (un article qui en parle: [[https://jrs-s.net/2018/08/05/routing-between-wg-interfaces-with-wireguard/]]) Adapter pour le client ''B''. === Démarrage === Sur toutes les machines: <code bash> sudo systemctl enable wg-quick@wg0.service sudo systemctl start wg-quick@wg0.service sudo journalctl -u wg-quick@wg0.service </code> ==== Derrière un NAT ==== Objectif : que deux machines chacune derrière leur NAT puisse établir un tunnel sans faire passer tout le trafic par un serveur central (on a besoin d'un serveur central servant de point de rencontre pour partager les informations de connexion). * [[https://headscale.net/stable/#__do_not_save__|Headscale]] : implémentation libre et auto-hébergée du serveur Tailscale, qui semble pouvoir répondre à ce besoin * [[https://github.com/anderspitman/awesome-tunneling]] * [[https://hcartiaux.github.io/posts/2025-01-30-headscale/|Create a private network with Headscale and Tailscale]] * https://fossorial.io/Getting%20Started/quick-install * https://netbird.io/ * [[https://github.com/darksunstealth/multi-vpn-routing]] * [[https://blog.nommy.moe/blog/exotic-mesh-vpn/|Testing "exotic" p2p VPN]] Une solution est de faire du NAT-hole-punching : * [[https://github.com/malcolmseyd/natpunch-go]] * [[https://github.com/hoyho/wg-wormhole]] * [[https://github.com/alex14fr/wgsig]] * [[https://www.jordanwhited.com/posts/wireguard-endpoint-discovery-nat-traversal/|WireGuard Endpoint Discovery and NAT Traversal using DNS-SD]] * [[https://github.com/connet-dev/connet]] wireguard/accueil.txt Dernière modification : 2025/10/25 20:31de phsw