
WS4W est une application de bureau qui permet d'exécuter et de gérer un point de terminaison du serveur Wireguard sur Windows.
Inspiré par la publication d'Henry Chang, comment configurer le serveur VPN Wireguard sur Windows, mon objectif était de créer une application qui automatise et simplifiait de nombreuses étapes complexes. Bien qu'il ne soit toujours pas tout à fait une solution de plug-and-play, l'idée est de pouvoir effectuer chacune des étapes préalables, un par un, sans exécuter de scripts, de modification du registre ou d'entrer dans le panneau de configuration.
La dernière version est disponible ici. Téléchargez l'installateur et exécutez.
Remarque : l'application demandera à s'exécuter en tant qu'administrateur. En raison de tous les Finagling du registre, des services Windows, des appels WG.exe, etc., il est plus facile d'exécuter l'ensemble de l'application élevée.
Avant d'introduire un installateur, WS4W a été distribué sous forme d'application portable. Les versions portables (1.5.2 et plus tôt) n'ont pas de chemin de mise à niveau automatique vers la version d'installation. Pour mettre à niveau, supprimez simplement la version portable téléchargée et téléchargez l'installateur. Aucun paramètre de configuration ne sera perdu.
Vous trouverez ci-dessous les tâches qui peuvent être effectuées automatiquement à l'aide de cette application.

Cette étape télécharge et exécute la dernière version de Wireguard pour Windows à partir de https://download.wireguard.com/windows-stient/wireguard-installer.exe. Une fois installé, il peut également être désinstallé directement à partir de WS4W.

Ici, vous pouvez configurer le point de terminaison du serveur. Voir la documentation Wireguard pour le sens de chacun de ces champs. La clé privée et la clé publique sont générées en appelant respectivement wg genkey et wg pubkey [private key] . (Vous pouvez éventuellement fournir votre propre clé privée.)
Remarque : Il est important que la plage de réseau du serveur ne soit pas en conflit avec l'adresse IP du système hôte ou la plage de réseau LAN.
En plus de créer / udpating le fichier de configuration pour le point de terminaison du serveur, la modification de la configuration du serveur mettra également à jour la valeur de registre ScopeAddress (sous HKLMSYSTEMCurrentControlSetServicesSharedAccessParameters ). Il s'agit de l'adresse IP qui est utilisée pour l'adaptateur Wireguard lors de l'utilisation de la fonction de partage Internet (expliqué ici). Ainsi, la propriété d'adresse de la configuration du serveur sert à déterminer les adresses autorisées pour les clients, ainsi que l'IP que Windows attribuera à l'adaptateur Wireguard lors de l'exécution du partage Internet. Remarque L'adresse IP est saisie de la ScopeAddress au moment où le partage Internet est pour la première fois. Cela signifie que si l'adresse IP du serveur est modifiée dans la configuration (et donc la valeur de registre ScopeAddress est mise à jour), l'interface Wire Guérique ne reflètera plus avec précision l'IP du serveur souhaité. Par conséquent, WS4W incitera à refaire Internet. En cas d'annulation, le partage Internet sera désactivé et devra être réactivé manuellement.
IMPORTANT : vous devez configurer la transmission de port sur votre routeur. Transférez tous les trafics UDP destinés au port de point de terminaison de votre serveur (par défaut
51820) vers le LAN IP de votre serveur. Chaque routeur est différent, il est donc difficile de donner des conseils spécifiques ici. Par exemple, voici à quoi ressemblerait la règle de transfert de port sur un routeur de passerelle Verizon Quantum.
Vous devez définir la propriété Endpoint sur votre adresse IPv4, IPv6 ou votre domaine publique, suivie de tout port que vous avez transmis. Le bouton Detect Public IP Address tentera de détecter automatiquement votre adresse publique à l'aide de l'API iPify.org. Cependant, si possible, il est recommandé d'utiliser un nom de domaine avec DDNS. De cette façon, si votre adresse IP publique change, vos clients pourront trouver le point de terminaison de votre serveur sans reconfiguration.

Ici, vous pouvez configurer le ou les clients. L'adresse peut être entrée manuellement ou calculée en fonction de la plage de réseau du serveur. Par exemple, si le réseau du serveur est 10.253.0.0/24 , la configuration du client peut déterminer que 10.253.0.2 est une adresse valide. Notez que la première adresse dans la plage (dans cet exemple, 10.253.0.1 ) est réservée au serveur. DNS est facultatif, mais recommandé. Vous pouvez ajouter des domaines de recherche DNS (également appelés suffixes DNS, en savoir plus). Enfin, la clé privée, la clé publique et la clé présharée sont générées à l'aide de wg genkey , wg pubkey [private key] et wg genpsk . (Vous pouvez spécifier votre propre clé privée. Les clés préalables sont facultatives, générées de manière unique par client et partagées avec la configuration du serveur. Voir # 34 pour plus d'informations.)
En raison d'un peu de bizarrerie dans Wireguard, si vous supprimez une clé présharée du client et synchroniser la configuration du serveur, Wireguard s'attendrait toujours à ce que le client se connecte avec un PSK. Par conséquent, WS4W ne vous permet pas d'effacer le champ clé préfabriqué des clients. Au lieu de cela, supprimez et recréez un client pour supprimer le PSK.
Une fois configuré, il est facile d'importer la configuration dans votre application client de choix via le code QR ou en exportant le fichier .conf .

Pour la sécurité, vous ne voudrez peut-être pas conserver les clés privées des clients sur le serveur. Dans ce cas, vous pouvez effacer le champ de la clé privée avant d'enregistrer une configuration client. Cependant, il y a deux choses à garder à l'esprit.
Une fois le serveur et le ou les clients configurés, vous pouvez installer le service de tunnel, qui crée une nouvelle interface réseau pour Wireguard à l'aide de la commande wireguard /installtunnelservice . Après l'installation, le tunnel peut également être supprimé directement dans WS4W. Cela utilise la commande wireguard /uninstalltunnelservice .
Après avoir terminé cette étape, les clients de Wireguard devraient être en mesure d'aller jusqu'à effectuer une poignée de main réussie avec le serveur.
Remarque: Si la configuration du serveur est modifiée après l'installation du service de tunnel, le service de tunnel sera automatiquement mis à jour via la commande
wg syncconf(si la configuration du serveur nouvellement enregistrée est valide). Cela est également vrai pour les configurations du client, les mises à jour à la mise à jour de la configuration du serveur (par exemple, si un nouveau client est ajouté, la configuration du serveur doit être consciente de ce nouveau pair).
Même après l'installation du service du tunnel, certains protocoles peuvent être bloqués. Il est recommandé de modifier le profil du réseau en Private , ce qui facilite les restrictions Windows sur le réseau.
Cette étape crée également une tâche Windows pour rendre le réseau privé automatiquement sur le démarrage. Vous pouvez désactiver la tâche via la liste déroulante.
Remarque : Sur un système où la connexion Internet partagée provient d'un réseau de domaine, cette étape n'est pas nécessaire, car les interfaces Wireguard ramassent le profil du réseau de domaine partagé.
La dernière étape consiste à permettre aux demandes de l'interface Wireguard d'être acheminée vers votre réseau privé ou Internet. Pour ce faire, la connexion de l'adaptateur réseau "réel" sur la machine Windows doit être partagée avec l'adaptateur Wireguard virtuel. Cela peut être fait de deux manières.
La première option n'est disponible que sur certains systèmes (voir plus ci-dessous). Les deuxièmes options peuvent être utilisées si nécessaire, mais ont des mises en garde (comme, si la connexion Internet est partagée avec l'adaptateur Wireguard, il ne peut être partagé avec aucun autre adaptateur; voir # 18). Il y a également eu plusieurs problèmes signalés avec le partage Internet, de sorte que le routage NAT doit être utilisé si disponible.
Ces options s'excluent mutuellement.
Ici, vous pouvez créer une règle de routage NAT sur l'interface Wireguard pour lui permettre d'interagir avec votre réseau privé / public. Plus précisément, les commandes suivantes sont invoquées.
New-NetIPAddress est appelé sur l'adaptateur Wireguard pour affecter une IP statique dans la plage de la propriété d'adresse de la configuration du serveur.New-NetNat est appelé pour créer une nouvelle règle NAT sur l'adaptateur Wireguard.New-NetIPAddress sur démarrage.Le routage NAT nécessite au moins Windows 10, et l'option pour le permettre n'apparaîtra même pas dans l'application sur les anciennes versions de Windows. Cependant, même avec Windows 10, le routage NAT ne fonctionne pas toujours. Parfois, cela nécessite que Hyper-V soit activé, ce que l'application invitera, mais cela nécessite également une version pro ou supérieure (c'est-à-dire pas à domicile) de Windows. En fin de compte, si l'application n'est pas en mesure d'activer le routage NAT, il recommandera d'utiliser le partage de la connexion Internet à la place (ci-dessous). Voir # 30 pour une discussion complète sur le support de routage NAT.

Si le routage NAT n'est pas disponible, vous pouvez utiliser le partage Internet pour fournir une connexion réseau à l'interface Wireguard. Lors de la configuration de cette option, vous pouvez sélectionner l'un de vos adaptateurs réseau à partager. Notez que cela ne fonctionnera probablement que pour les adaptateurs dont le statut est Connected et qu'il ne sera utile que pour les adaptateurs qui fournissent un accès Internet ou LAN. Lorsque vous choisissez l'adaptateur à partager, survolez l'élément de menu pour obtenir plus de détails, y compris l'adresse IP attribuée de l'adaptateur, pour déterminer si c'est celle que vous souhaitez partager.
Remarque: Lors de l'exécution du partage Internet, l'adaptateur Wireguard se voit attribuer une IP à partir de la valeur de registre
ScopeAddress(sousHKLMSYSTEMCurrentControlSetServicesSharedAccessParameters). Cette valeur est automatiquement définie lors de la mise à jour de la propriété d'adresse de la configuration du serveur. Voir plus ici.
Il y a des problèmes dans Windows qui font que le partage Internet devient désactivé après un redémarrage. Si le serveur Wireguard est destiné à être laissé sans surveillance, il est recommandé de permettre le partage Internet persistant afin qu'aucune interaction ne soit requise après le redémarrage.
Lors de l'activation de cette fonctionnalité, deux actions sont effectuées sous Windows:
Internet Connection Sharing est passé du Manual à Automatic .EnableRebootPersistConnection RegTry dans HKLMSoftwareMicrosoftWindowsCurrentVersionSharedAccess est définie sur 1 (elle est créée si elle n'est pas trouvée).Même avec ces solutions de contournement, le partage d'Internet peut devenir désactivé après un redémarrage. Par conséquent, une autre action est effectuée. Une tâche planifiée est créée qui désactive et réoriense le partage Internet à l'aide de la CLI WS4W sur le démarrage du système. Cela devrait être suffisant pour garantir que le partage reste activé.

Une fois le tunnel installé, l'état de l'interface Wireguard peut être affiché. Ceci est accompli via la commande wg show . Il sera continuellement mis à jour tant que Update Live sera vérifiée.
Définir le retard de la tâche de démarrage
Ce paramètre permet de configurer un retard pour les tâches de démarrage. Cela peut être utile pour les tâches qui dépendent des adaptateurs qui sont lents à charger. Notez que les tâches doivent être désactivées et réactivées après avoir modifié cette valeur.

Il y a aussi un CLI regroupé dans le téléchargement portable appelé ws4w.exe qui peut être invoqué à partir d'un terminal ou appelé à partir d'un script. En plus des messages écrits à Standard Out, la CLI définira également le code de sortie en fonction du succès de l'exécution de la commande donnée. Dans PowerShell, par exemple, le code de sortie peut être imprimé avec echo $lastexitcode .
Remarque : La CLI doit également être exécutée en tant qu'administrateur pour les mêmes raisons que ci-dessus.
La CLI utilise des verbes, ou des commandes de niveau supérieur, chacune ayant son propre ensemble d'options. Vous pouvez exécuter ws4w.exe --help pour une liste de tous les verbes ou ws4w.exe verb --help pour voir la liste des options pour un verbe particulier.
ws4w.exe restartinternetsharing [--network <NETWORK_TO_SHARE>]--network peut être transmise pour spécifier le réseau WS4W devrait partager.--network est passé).--network doit être transmise pour spécifier.--network doit être passé, sinon il n'y a aucun moyen de savoir quel réseau partager.Cette commande est utilisée par la tâche planifiée qui est créée lorsque le partage Internet persistant est activé.
ws4w.exe setpathPATH du système.Cette commande est utilisée par l'installateur lorsque l'option "Ajouter un CLI au chemin" est sélectionnée.
ws4w.exe setnetipaddress --serverdatapath <PATH_TO_SERVER_CONFIG>Set-NetIPAddress sur l'interface Wireguard, en utilisant l'adresse réseau telle que définie dans le fichier de configuration du serveur WireGuard donné.Cette commande est utilisée par la tâche planifiée qui est créée lorsque le routage NAT est activé.
ws4w.exe privatenetworkCette commande est utilisée par la tâche Windows créée lorsque le réseau privé est activé.
Tout d'abord, il est recommandé d'utiliser le routage NAT si disponible.
Cependant, si vous ressentez le message d'erreur suivant lors de l'activation du partage Internet, veuillez effectuer les étapes manuelles suivantes.

wg_server .Remarque: ce problème est souvent déclenché après avoir créé un nouveau commutateur virtuel pour une machine virtuelle. La solution de contournement manuelle ne doit être nécessaire qu'une seule fois après cela et n'affecte pas le commutateur virtuel.
WS4W a été testé et est connu pour fonctionner sur Windows Server (2012 R2 et plus récent) et Windows Desktop (10 et plus récent).
Wireguard est une marque déposée de Jason A. Donenfeld.
Icône fabriquée par Freepik sur www.flacon.com.