Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Configurer un VPN auto-hébergé à l'aide de Wireguard

Un VPN (Virtual Private Network) permet à l'utilisateur de se connecter à un réseau privé à distance comme si l'ordinateur de l'utilisateur était directement connecté au réseau privé. La technologie a été initialement développée afin de permettre l'accès à distance au réseau privé interne d'une entreprise, pour les employés qui ne sont pas réellement présents sur le site du réseau interne.

Un serveur VPN est déployé à l'emplacement du réseau interne. Ce serveur est sur le réseau public et est accessible via un client VPN par l'employé. L'authentification est nécessaire pour se connecter au serveur VPN. La communication entre le serveur VPN et le client VPN est sécurisée à l'aide d'un protocole de tunneling. Notez que cette communication peut être cryptée ou non, mais généralement dans la plupart des protocoles VPN, elle est cryptée.

Une autre utilisation du VPN est de gagner l'anonymat lors de l'accès à Internet ou de contourner les restrictions géographiques imposées lors de l'accès à certains sites Web. Dans de tels cas, le réseau auquel l'utilisateur souhaite se connecter n'est pas un réseau privé, mais plutôt Internet.

De nombreux protocoles VPN ont été développés au fil des ans. Ces protocoles utilisent différents protocoles de tunneling et algorithmes de cryptage pour la communication entre le serveur et le client.

L'un de ces protocoles, qui est de plus en plus utilisé récemment, est Wireguard . Wireguard est plus léger, plus simple et plus performant que les protocoles VPN traditionnellement utilisés tels que OpenVPN, IPSec. Il est déjà implémenté pour Windows, Mac OS et un grand nombre de distributions Linux. Sous Linux, il est implémenté en tant que module de noyau. Il est disponible dans les référentiels officiels d'Ubuntu 20.04.

Dans cet article, nous verrons comment configurer un serveur et un client VPN Wireguard dans Ubuntu 20.04.

Installation

Pour cet article, je configure un serveur Wireguard sur un Linode Ubuntu 20.04 et un client Wireguard sur ma machine locale avec Ubuntu 20.04.

Le package wireguardinstalle à la fois Wireguard Server et Client. Exécutez la commande suivante sur la machine serveur et la machine cliente.

sudo apt install wireguard

Configuration du serveur

Clés de sécurité

Nous devons générer un ensemble de paires de clés publiques/privées afin d'authentifier et de sécuriser la connexion Wireguard. Cela peut être fait à l'aide des commandes suivantes :

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

Notez que nous effectuons toutes les tâches de configuration en tant que superutilisateur. La raison en est que l'accès au répertoire /etc/wireguardest interdit aux utilisateurs normaux et que l'accès au répertoire ne peut pas être obtenu avec des privilèges sudo uniquement pour un utilisateur normal.

Ensuite, nous définissons le masque de création de fichier sur077 . Cela signifie que chaque fois qu'un nouveau fichier est créé dans ce dossier par un processus, ses autorisations seront automatiquement masquées avec 077. Par exemple. si un fichier est créé dans ce dossier avec les autorisations 777, il est automatiquement masqué et les autorisations deviennent effectivement 700. Ceci est fait pour que seul le propriétaire du fichier dispose de toutes les autorisations sur le fichier et que tout le monde n'en ait pas.

Sur la ligne suivante, nous générons la paire de clés publique/privée pour le serveur. Ils sont enregistrés dans des fichiers private_keyet public_key. Pour afficher les clés, exécutez :

cat private_key
cat public_key

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Copiez la clé privée, nous en avons besoin à l'étape suivante.

Remarque : Ne partagez jamais votre clé privée publiquement !

Fichier de configuration

Créons un fichier de configuration pour le serveur Wireguard. Vous pouvez choisir n'importe quel nom pour le fichier. Nous allons créer un fichier wg0.confdans cet exemple.

vim wg0.conf

Ajoutez ce qui suit au fichier.

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

Collez la clé privée que nous avons précédemment copiée à la ligne 5 du code ci-dessus.

Nous devons configurer Wireguard sur un sous-réseau (virtuel) différent de l'adresse IP du serveur. Ici, j'ai utilisé 10.20.43.1 pour le serveur et j'utiliserai 10.20.43.2 pour le client. N'importe quel sous-réseau peut être utilisé ici. Pour obtenir l'adresse IP du serveur et de l'interface, exécutez :

ifconfig

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

La partie en surbrillance est l'adresse IP

Notez l'adresse IP du serveur. Ceci est requis lors de la configuration du client.

L'interface utilisée par le serveur, comme le montre l'image ci-dessus, est eth0. Le nom de l'interface peut différer en fonction du réseau de l'utilisateur, il peut l'être wlan0ou wlp2s0si l'utilisateur est connecté à un réseau WiFi à l'aide d'une carte sans fil.

Remplacez le in PostUpet PostDownpar votre interface ; dans cet exemple, c'est le cas eth0. PostUpet les PostDowndirectives sont utilisées pour spécifier quelles commandes doivent être exécutées lorsque le serveur démarre et s'arrête respectivement. Dans notre exemple, nous utilisons la iptablescommande pour définir des règles IP telles que l'adresse IP du serveur est partagée par les clients. Les règles seront supprimées une fois que le serveur s'arrêtera.

Enregistrez et quittez le fichier. Lorsque vous utilisez vim, appuyez sur Echap , puis tapez :wqet appuyez sur Entrée pour enregistrer et quitter.

Si vous utilisez un ufwpare - feu sur le serveur, nous devons autoriser les connexions UDP au port du serveur VPN, 51190.

ufw allow 51190/udp

Démarrage du service

Maintenant que la configuration est terminée, nous pouvons démarrer le service VPN Wireguard.

Pour permettre au service de démarrer au démarrage, exécutez :

systemctl enable [email protected]

Notez que voici wg0le nom du fichier de configuration.

Pour démarrer le service, exécutez :

service [email protected] start

Vérifiez que le service a démarré avec succès :

service [email protected] status

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Vérifiez que l'interface que nous avons créée dans le fichier de configuration a démarré, à l'aide de la commande IP.

ip a show wg0

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Le serveur VPN Wireguard est maintenant configuré et en cours d'exécution. Configurons le client maintenant.

Configuration des clients

La configuration client pour Wireguard est plus ou moins la même qu'une configuration serveur. Nous générons les clés pour le client, puis créons un fichier de configuration.

Clés de sécurité

Pour générer la paire de clés publique/privée pour le client, exécutez :

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

Les clés publiques et privées du client sont désormais générées respectivement dans les fichiers client_private_keyet client_public_key.

Vérifiez qu'ils ont été créés à l'aide de la catcommande.

cat client_private_key
cat client_public_key

Copiez la clé privée affichée car nous devons l'ajouter au fichier de configuration du client.

Fichier de configuration

Créez le fichier de configuration avec le nom que vous souhaitez. Nous allons le créer avec le nom wg0-clientde cet exemple.

vim wg0-client.conf

Ajoutez la configuration suivante.

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

Saisissez l'adresse de sous-réseau du client. Comme décrit précédemment, nous utilisons 10.20.43.2 pour le client dans cet exemple.

Ajoutez la clé privée du client générée à l'étape précédente à la ligne 4 du code de configuration ci-dessus.

Sous « Peer », nous ajoutons des informations sur le serveur VPN Wireguard auquel nous voulons nous connecter.

Entrez la clé publique du serveur. Entrez l' adresse IP du serveur , que nous avons précédemment notée, et le port au format donné par rapport au point de terminaison . Il s'agit du port que nous avons spécifié dans le fichier de configuration du serveur et sur lequel le service VPN du serveur a démarré.

Les adresses IP autorisées doivent être saisies telles quelles (0.0.0.0/0) afin que toute demande sur une adresse IP publique dynamique utilisée par le client soit toujours transmise au serveur VPN.

Enregistrez et quittez le fichier. Lorsque vous utilisez vim, appuyez sur Echap , puis tapez :wqet appuyez sur Entrée pour enregistrer et quitter.

Activez le service client pour qu'il s'exécute à chaque démarrage et démarrez-le.

systemctl enable [email protected]
service [email protected] start

Vérifiez si le service a démarré.

service [email protected] status

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Ajout d'un pair au serveur

Nous avons maintenant le serveur VPN et le client opérationnels. Cependant, un tunnel sécurisé entre les deux n'est pas établi à moins que nous n'établissions une connexion peer to peer entre le serveur et le client.

Retournez au serveur. Tout d'abord, arrêtez le service VPN .

service [email protected] stop

Ensuite, ouvrez le fichier de configuration pour ajouter la configuration pour le pair (client).

vim /etc/wireguard/wg0.conf

Ajoutez les lignes suivantes au fichier.

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

Maintenant, redémarrez le service VPN .

service [email protected] start

C'est ça! C'est toute la configuration nécessaire pour la configuration du client et du serveur Wireguard VPN. Testons maintenant notre VPN.

Tester le VPN

Tout d'abord, faisons un simple ping du client au serveur, pour s'assurer que la communication du tunnel VPN fonctionne. Exécutez ce qui suit sur le client :

ping 10.20.43.1

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Ensuite, ouvrez un navigateur Web et ouvrez n'importe quel site Web pour vérifier si vous pouvez vous connecter à Internet à partir de la machine cliente. Vous pouvez également vérifier votre connectivité Internet à partir de la ligne de commande en utilisant wget.

wget 

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Maintenant, nous avons vérifié la connectivité du tunnel et la connectivité Internet. Si les deux fonctionnent, nous devons maintenant nous assurer que tout le trafic Internet arrivant au client passe par le serveur.

Pour cela, il suffit de vérifier l'adresse IP du client telle qu'elle est vue par Internet. Une façon de le faire est d'aller sur whatsmyip.org . Ou bien à partir de la ligne de commande, nous pouvons interroger un autre service similaire appelé IP info, en utilisant Curl.

Exécutez ce qui suit sur la machine cliente

curl https://ipinfo.io/ip

Comment configurer le serveur et le client VPN WireGuard sur Ubuntu 20.04

Oui. C'est l'adresse IP publique du Linode où le serveur VPN est hébergé. C'est ainsi que l'anonymat est obtenu à l'aide du VPN, car partout sur Internet, l'adresse IP du serveur VPN est désormais visible et non celle de votre ordinateur.

Conclusion

La facilité de configuration est l'un des avantages les plus importants de Wireguard par rapport aux logiciels VPN traditionnels comme OpenVPN, qui nécessitent un niveau plus élevé de connaissances en réseau et en routage pour être configurés. Cependant, il existe un manque de documentation officielle détaillée pour Wireguard, ce qui peut causer des problèmes si votre configuration Wireguard génère des erreurs ou ne fonctionne pas comme prévu.

Néanmoins, Wireguard est un excellent choix si vous souhaitez un VPN auto-hébergé pour une communication sécurisée sur Internet. Pour en savoir plus sur Wireguard et les protocoles et technologies qu'il utilise, vous pouvez consulter le site officiel .


Le Wi-Fi ne fonctionne pas sur Ubuntu ? Voici comment y remédier

Le Wi-Fi ne fonctionne pas sur Ubuntu ? Voici comment y remédier

Ubuntu est populaire pour sa robustesse et relativement moins d'erreurs. Mais ce n'est pas sans son sac de problèmes, bien sûr. L'un de ces problèmes concerne son pilote Wi-Fi. Vous pourriez mettre votre système sous tension pour constater que votre Wi-Fi ne fonctionne pas.

Comment déplacer des fichiers Linux avec la commande Mv

Comment déplacer des fichiers Linux avec la commande Mv

Bien que vous sachiez probablement déjà comment déplacer un fichier sous Linux à l'aide du navigateur de fichiers GUI, vous vous demandez peut-être s'il existe une commande de déplacement dans le terminal qui vous permet de déplacer rapidement des fichiers vers différents répertoires. La commande mv est celle que vous voulez, et elle est facile à utiliser avec sa syntaxe simple et quelques indicateurs de sécurité facultatifs.

Les 10 meilleures distributions Linux basées sur Debian

Les 10 meilleures distributions Linux basées sur Debian

La Debian standard et sa populaire ramification Ubuntu sont d'excellents choix complets pour un système Linux, mais si vous avez des besoins plus spécialisés, vous voudrez peut-être une alternative à Debian.

10 meilleures distributions Linux pour les développeurs

10 meilleures distributions Linux pour les développeurs

Bien que Linux ne soit peut-être pas le système d'exploitation préféré des utilisateurs occasionnels, c'est le choix de prédilection pour la plupart des développeurs et programmeurs. Linux est un système d'exploitation plus pratique qui a été explicitement conçu en pensant à la programmation et aux développeurs.

Apprenez à installer Npm et Node.js sur Ubuntu

Apprenez à installer Npm et Node.js sur Ubuntu

Node.js est effectivement un environnement d'exécution JavaScript multiplateforme open source. Avec Node.js activé, vous pouvez exécuter JavaScript sur votre machine Ubuntu sans avoir à vous soucier d'ouvrir des navigateurs. Il est basé sur le moteur JavaScript V8 de Chrome et peut être installé de plusieurs manières sur Linux.

Comment installer Notepadqq sur Ubuntu 20.04, une alternative digne de Notepad ++

Comment installer Notepadqq sur Ubuntu 20.04, une alternative digne de Notepad ++

Vous cherchez une alternative valable à Notepad++ sur Ubuntu ? Ne cherchez pas plus loin que l'application gratuite Notepadqq

Comment mettre à jour Firefox à partir du terminal sur les PC Linux Ubuntu

Comment mettre à jour Firefox à partir du terminal sur les PC Linux Ubuntu

Apprenez à mettre à jour Firefox depuis Terminal sur un PC Linux Ubuntu

Comment désactiver Ubuntu Dock sur Ubuntu 20.04

Comment désactiver Ubuntu Dock sur Ubuntu 20.04

Parfois, il vaut mieux quitter le quai et s'éloigner !

Comment créer un utilisateur Sudo sur Ubuntu 20.04 LTS

Comment créer un utilisateur Sudo sur Ubuntu 20.04 LTS

Donnez des privilèges root à n'importe quel utilisateur avec sudo sur Ubuntu 20.04 LTS

Comment changer le mot de passe root sur Ubuntu 20.04

Comment changer le mot de passe root sur Ubuntu 20.04

Définir, réinitialiser et modifier le mot de passe root dans Ubuntu 20.04

Comment activer SSH sur Ubuntu 20.04

Comment activer SSH sur Ubuntu 20.04

Accédez en toute sécurité à votre machine Ubuntu de n'importe où

Comment installer un serveur FTP sur Ubuntu en 5 étapes

Comment installer un serveur FTP sur Ubuntu en 5 étapes

Si vous configurez un serveur Linux, vous aurez besoin d'un accès FTP. Cela signifie d'abord installer un serveur FTP sur Linux. Cela devrait être l'une des premières choses que vous faites après l'installation du système d'exploitation de votre serveur.

Comment installer Git sur Ubuntu 20.04 LTS

Comment installer Git sur Ubuntu 20.04 LTS

L'une des premières choses que vous devez installer sur votre machine Linux

Comment installer Google Chrome sur Ubuntu 20.04

Comment installer Google Chrome sur Ubuntu 20.04

Guide rapide pour installer Google Chrome à partir de la ligne de commande sur Ubuntu 20.04

Comment réparer lerreur make: command not found dans Ubuntu

Comment réparer lerreur make: command not found dans Ubuntu

La commande make est probablement l'une des commandes les plus utilisées dans l'écosystème Linux. Cette commande est utilisée pour construire et compiler des programmes directement à partir du code source.

Comment copier et coller sur Chromebook

Comment copier et coller sur Chromebook

La première chose que vous pourriez vous demander en passant à un Chromebook est de savoir comment faire les choses de base, le genre de choses que vous aviez sous la main dans votre ancien système d'exploitation. Le copier-coller est l'une de ces fonctions fondamentales que vous devez utiliser à un moment ou à un autre.

Comment faire un test de dactylographie sur Linux avec tt

Comment faire un test de dactylographie sur Linux avec tt

À l'ère moderne de la technologie, la dactylographie est devenue l'une des activités les plus courantes pour de nombreuses professions. Apprendre à taper plus rapidement avec précision peut vous aider à faire plus de choses dans le même laps de temps.

Le Wi-Fi ne fonctionne pas sur Ubuntu ? Voici comment y remédier

Le Wi-Fi ne fonctionne pas sur Ubuntu ? Voici comment y remédier

Ubuntu est populaire pour sa robustesse et relativement moins d'erreurs. Mais ce n'est pas sans son sac de problèmes, bien sûr. L'un de ces problèmes concerne son pilote Wi-Fi. Vous pourriez mettre votre système sous tension pour constater que votre Wi-Fi ne fonctionne pas.

Installez TeamViewer 8 pour Ubuntu 12.04

Installez TeamViewer 8 pour Ubuntu 12.04

Dans cette vidéo, j'installe et utilise TeamViewer 8 pour le système Ubuntu 12.04 avec un guide complet. Mais cela fonctionnera également sur Windows.

Comment créer et scanner des codes QR sur Chromebook

Comment créer et scanner des codes QR sur Chromebook

Les codes de réponse rapide, ou codes QR en abrégé, sont des codes-barres avancés qui contiennent plus d'informations qu'un code-barres traditionnel. Ces codes sont bidimensionnels, ce qui vous permet de les scanner verticalement ou horizontalement.

Comment installer et supprimer des packages dans Arch Linux

Comment installer et supprimer des packages dans Arch Linux

Vous voulez installer des packages sur Arch Linux mais vous ne savez pas comment faire ? Beaucoup de gens sont confrontés à ce problème lorsqu'ils migrent pour la première fois des distributions basées sur Debian vers Arch. Cependant, vous pouvez facilement gérer les packages sur votre système basé sur Arch à l'aide des gestionnaires de packages.

15 meilleurs thèmes pour Ubuntu 20.04 en 2020

15 meilleurs thèmes pour Ubuntu 20.04 en 2020

De nombreux nouveaux thèmes mis à jour sont prêts à être installés sur le nouveau bureau GNOME d'Ubuntu 20.04. Voici une liste des meilleurs thèmes Ubuntu en 2020

5 meilleures applications de transfert de fichiers Wi-Fi dUbuntu vers Android

5 meilleures applications de transfert de fichiers Wi-Fi dUbuntu vers Android

Un mécanisme comme le FTP, le transfert de fichiers peer-to-peer, le transfert Wi-Fi vous fera gagner du temps si vous partagez souvent des fichiers entre votre Android et Ubuntu.

Comment installer Spotify sur Linux

Comment installer Spotify sur Linux

Spotify est l'un des plus grands services de streaming musical. Il a des clients natifs pour les appareils mobiles (Android et iOS) et de bureau (Mac et Windows).

9 commandes de base pour démarrer avec Linux

9 commandes de base pour démarrer avec Linux

Les guides pratiques Linux s'attendent souvent à ce que vous effectuiez certaines opérations dans le terminal, ce qui peut sembler intimidant au début. Mais ne vous inquiétez pas ; cette aide-mémoire pour les commandes Linux couvrira le processus d'ouverture d'un terminal et l'émission de quelques commandes utiles.