Comment créer un VPN sur Ubuntu 20.04 Utilisation de Wireguard
- 3110
- 198
- Clara Nguyen
Wireguard est un VPN moderne et très facile à configurer disponible sur plusieurs systèmes d'exploitation. La demande est disponible dans l'ubuntu 20.04 Référentiels officiels, il est donc également très facile à installer. Contrairement à d'autres logiciels comme OpenVPN qui est basé sur l'utilisation de certificats SSL, Wireguard est basé sur l'utilisation de paires de clés. Dans ce tutoriel, nous verrons comment configurer, en quelques étapes faciles, un serveur VPN et un pair client sur la dernière version stable d'Ubuntu.
Dans ce tutoriel, vous apprendrez:
- Comment installer wireguard sur Ubuntu 20.04 FOCAL FOSSA
- Comment créer une paire de clés publiques et privées
- Comment configurer le serveur et un pair client
- Comment rediriger tout le trafic entrant vers le VPN
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Ubuntu 20.04 FOCAL FOSSA |
Logiciel | givré |
Autre | Privilèges racinaires |
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier |
Installation
Wireguard est officiellement disponible dans le référentiel «Univers» d'Ubuntu 20.04, donc nous pouvons l'installer via apte
. La version disponible, au moment de l'écriture, est 1.0.20200319-1UBUNTU1
:
$ sudo apt install wireguard
Le système nous demandera de confirmer que nous voulons installer le programme et ses dépendances, et terminerons l'opération en quelques secondes.
Génération de clés
Nous devons générer un public et une clé privée pour chaque machine que nous voulons utiliser dans notre VPN. La clé privée doit être gardée secrète sur la machine, le public est utilisé pour accéder à la machine depuis les autres pairs.
Pour générer les clés, nous pouvons utiliser le wg
utilitaire. À l'intérieur du fichier de configuration Wireguard, nous devrons référencer la clé privée de la machine, tandis que le public sera utilisé sur les autres pairs. Notez que nous ferons référence directement aux clés, donc théoriquement, nous n'avons pas besoin de les stocker dans des fichiers. Nous allons cependant le faire de toute façon, juste pour la commodité.
Pour générer la clé privée pour notre serveur, nous devons utiliser le Genkey
sous-commande de wg
. La commande sort la clé créée pour stdout
; Pour écrire la clé dans un fichier, nous pouvons utiliser la puissance des redirections de coquille:
$ wg genkey> server_private_key
La commande générera la clé et la stockera au server_private_key
dossier, mais soulèvera l'avertissement suivant:
AVERTISSEMENT: Écriture dans un fichier accessible dans le monde. Envisagez de définir l'umask sur 077 et de réessayer.
En effet, avec l'utilisateur par défaut umask (002
) Les fichiers sont créés avec le mode 664
, il en va de même pour le monde, ce qui n'est pas recommandé. Pour résoudre ce problème, nous pouvons soit modifier le UMask utilisé dans la session de shell actuelle avant de créer les fichiers:
$ umask 077
Ou modifiez les autorisations de fichiers vers 600
Après la création. Ici, nous irons pour cette dernière solution.
Une fois notre clé privée prête, nous pouvons générer le public celui qui est basé sur lui. Pour accomplir la tâche, nous utilisons le pubkey
sous-commande de wg
. Tout comme avant d'utiliser les redirections de coquille: d'abord pour passer le contenu du server_private_key
fichier à la stdin
de la commande, puis et pour rediriger la clé générée vers le server_public_key
déposer:
$ wg pubkey server_public_key
Pour épargner un certain typage, nous pouvons générer les deux clés, avec une seule commande, qui implique l'utilisation de la coquille |
(tuyau) opérateur et le tee
commande:
$ wg genkey | Tee Server_private_key | wg pubkey> server_public_key
La sortie de la commande sur le côté gauche de l'opérateur de tuyau (|
) est transmis à l'entrée standard du programme sur son côté droit. Le tee
commande, permettez-nous plutôt de rediriger la sortie d'une commande vers un fichier et vers la sortie standard (en savoir plus sur les redirections de coque ici).
Une fois nos clés prêtes, nous pouvons créer le fichier de configuration du serveur.
Fichier de configuration du serveur
Pour configurer notre installation Wireguard, nous pouvons créer un fichier de configuration appelé wg0.confli
avec le contenu suivant:
[Interface] privateKey = adresse = 10.0.0.1/24 écouterport = 51820
Notez que le nom du fichier est arbitraire, mais il devrait être basé sur le nom que nous utiliserons pour notre interface, wg0
dans ce cas. Ce nom sera référencé lors du démarrage du service, comme nous le verrons ci-dessous.
Dans notre exemple. le [interface]
La section du fichier de configuration contient les champs suivants:
- Clé privée
- Adresse
- Écouter
Le Clé privée La valeur du champ n'est rien de plus que la clé privée du serveur que nous avons généré plus tôt.
Dans le Adresse champ Nous avons spécifié l'adresse à affecter à l'interface du VPN avec le masque de sous-réseau à l'aide du Cière notation. Dans ce cas, nous avons utilisé dix.0.0.1/24
, Ainsi, notre adresse «serveur» Wireguard à l'intérieur du VPN sera dix.0.0.1
, qui se trouve dans la gamme disponible des adresses qui vont de dix.0.0.1
pour dix.0.0.254
.
Enfin, dans le Écouter Field, nous avons spécifié ce que Port Wireguard écoutera pour le trafic entrant. Une règle pour permettre ledit trafic doit également être ajoutée à notre pare-feu. Nous le ferons dans la section suivante.
Nous pouvons maintenant modifier les autorisations des fichiers et les déplacer vers le / etc / wireguard
annuaire:
$ chmod 600 server_public_key server_private_key wg0.Conf $ sudo mv server_private_key server_public_key wg0.conf / etc / wireguard
Nous pouvons maintenant démarrer le wg-quick
Service spécifiant le nom de l'interface Wireguard après @
dans le nom de l'unité. Quelle est cette notation? C'est une fonctionnalité de SystemD: avec lui, nous pouvons générer plusieurs fichiers unitaires sur la base d'un «modèle», passant la valeur qui sera remplacée dans le modèle, après le @
symbole au nom de l'unité. C'est le contenu du wg-quick @.service
unité:
[Unité] Description = Wireguard via WG-QUICK (8) pour% i After = Network-online.cibler NSS-Lookup.Target Want = Network-online.cibler NSS-Lookup.Documentation cible = homme: documentation WG-QUICK (8) = Man: Wg (8) Documentation = https: // www.givré.com / documentation = https: // www.givré.com / QuickStart / documentation = https: // git.zx2c4.com / wireguard-tools / about / src / man / wg-quick.8 documentation = https: // git.zx2c4.com / wireguard-tools / about / src / man / wg.8 [Service] Type = ONESHOT RESTAFTEREXIT = Oui ExecStart = / USR / BIN / WG-QUICK UP% I EXECSTOP = / USR / BIN / WG-QUICK DOWN% i Environment = WG_ENDPOINT_RESOLUTION_RETRES = Infinity [Install] WantedBy = Multi-User.cible
La valeur que nous spécifions après le @
dans le nom de l'unité lors du démarrage ou de l'arrêt, il remplacera %je
dans le Exercice
et Execstop
lignes. Dans ce cas, nous utiliserons wg0
:
$ sudo systemctl activer --now wg-quick @ wg0
Avec la commande ci-dessus, nous avons démarré le service et nous le faisons également pour démarrer automatiquement au démarrage. Pour vérifier que notre configuration a été appliquée, nous pouvons exécuter le wg
commande. La sortie produite doit afficher des informations sur le wg0
interface:
$ sudo wg Interface: WG0 Clé publique: nnx3zpcv9d2dtghdsoygbnr64zg5jtj4z4t2se759v4 = clé privée: (caché) Port d'écoute: 51820
Maintenant, procédons et configurons notre pare-feu et notre transfert de paquets.
Pare-feu et configuration du réseau
Dans ce tutoriel, je suppose l'utilisation de ufw
. Comme nous l'avons dit précédemment, nous devons ajouter une règle pour permettre le trafic entrant dans le port que nous avons spécifié dans le fichier de configuration, 51820
. Nous le faisons en exécutant une commande très simple:
$ sudo ufw autoriser 51820 / udp
Nous devons également permettre le transfert de paquets sur notre système. Pour accomplir la tâche, nous supprimons le commentaire de la ligne 28
de la / etc / sysctl.confli
fichier, de sorte que cela ressemble à ceci:
# Décommente la ligne suivante pour permettre le transfert de paquets pour IPv4 net.ipv4.ip_forward = 1
Pour rendre les modifications efficaces sans redémarrer le système, nous devons exécuter la commande suivante:
$ sudo sysctl -p
À l'étape suivante, nous configurerons le client.
Génération de clés du client
Passons maintenant au système que nous voulons utiliser en tant que client. Nous devons installer Wireguard dessus; Une fois terminé, nous pouvons générer une paire de clés comme nous l'avons fait sur le serveur:
$ wg genkey | Tee client_private_key | wg pubkey> client_public_key
Tout comme nous avons fait le côté du serveur, nous créons le wg0.confli
fichier de configuration. Cette fois avec ce contenu:
[Interface] privateKey = adresse = 10.0.0.2/24 [Peer] publicKey = Endpoint =: 51820 ALLERDIPS = 0.0.0.0/0
Nous avons déjà vu la signification des champs contenus dans le Interface
Section, lorsque nous avons généré la configuration du serveur. Ici, nous venons d'adapter les valeurs à notre client (il aura le dix.0.0.2
adresse dans le VPN).
Dans cette configuration, nous avons utilisé une nouvelle section, [Pair]
. Dans ce document, nous pouvons spécifier les informations par rapport à un pair, dans ce cas celle que nous utilisons comme «serveur». Les champs que nous avons utilisés sont:
- Clé publique
- Point final
- ALLIPS
Dans le Clé publique champ, nous spécifions le public Clé du pair, donc, dans ce cas, la clé publique que nous avons générée sur le serveur.
Le Point final L'adresse IP publique ou le nom d'hôte du pair est-il suivi d'un côlon et du numéro de port sur lequel le pair écoute (dans notre cas 51820
).
Enfin, la valeur transmise au ALLIPS Field, est une liste séparée par des virgules d'adresses IP et de masque de sous-réseau avec notation CIDR. Seul le trafic dirigé vers le pair qui provient des adresses spécifiées sera autorisée. Dans ce cas, nous avons utilisé 0.0.0.0/0
En valeur: il fonctionne comme une valeur «fourre-tout», donc tout le trafic sera envoyé au pair VPN (le serveur).
Tout comme nous avons fait le côté du serveur, nous définissons les autorisations appropriées et déplacons les clés et le fichier de configuration vers le / etc / wireguard
annuaire:
$ chmod 600 client_public_key client_private_key wg0.Conf $ sudo mv client_public_key client_private_key wg0.conf / etc / wireguard
Avec le fichier de configuration en place, nous pouvons démarrer le service:
$ sudo systemctl activer --now wg-quick @ wg0
Finalement, le [Pair]
Section par rapport à notre client, doit être ajoutée au fichier de configuration que nous avons précédemment créé sur le serveur. Nous ajouter le contenu suivant:
[Peer] publicKey = ALLOLIPS = 10.0.0.2/32
À ce stade, nous redémarrons le service:
$ sudo systemctl redémarrer wg-quick @ wg0
Les informations sur le pair associé doivent être signalées dans la sortie wg
commande:
$ sudo wg Interface: Wg0 Clé publique: nnx3zpcv9d2dtghdsoygbnr64zg5jtj4z4t2se759v4 = clé privée: (caché) Port d'écoute: 51820 PEER: T5PKKG5 / 9FJKIU0LRNTAHV6GVABCMCJQQQ5GF3BXWIDQ = IPS: 10.0.0.2/32
À ce stade, à partir du système «client», nous devrions pouvoir cingler le serveur au dix.0.0.1
adresse:
$ ping -c 3 10.0.0.1 ping 10.0.0.1 (10.0.0.1) 56 (84) octets de données. 64 octets de 10.0.0.1: ICMP_SEQ = 1 TTL = 64 Time = 2.82 ms 64 octets de 10.0.0.1: ICMP_SEQ = 2 TTL = 64 Time = 38.0 ms 64 octets de 10.0.0.1: ICMP_SEQ = 3 TTL = 64 Time = 3.02 ms --- 10.0.0.1 Ping Statistics --- 3 paquets transmis, 3 reçus, 0% de perte de paquets, heure 2003ms RTT min / avg / max / mDev = 2.819/14.613/37.999/16.536 ms
Conclusions
Dans ce tutoriel, nous avons vu comment créer un VPN en utilisant Wireguard sur la dernière version stable d'Ubuntu: 20.04 FOCAL FOSSA. Le logiciel est vraiment simple à installer et à configurer, surtout par rapport à d'autres solutions, comme par exemple OpenVPN.
Nous avons vu comment générer les clés publiques et privées utilisées pour notre configuration et comment configurer à la fois le serveur et un client afin que tout le trafic soit redirigé vers le VPN. Après l'instruction donnée, vous aurez une configuration de travail. Pour plus d'informations, veuillez consulter la page du projet.
Tutoriels Linux connexes:
- Choses à installer sur Ubuntu 20.04
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Comment configurer un serveur OpenVPN sur Ubuntu 20.04
- Ubuntu de base 22.04 Configuration de la connexion client / serveur OpenVPN
- Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
- Ubuntu 20.04 Guide
- Choses à installer sur Ubuntu 22.04
- Liste des clients FTP et installation sur Ubuntu 20.04 Linux…
- Ubuntu 20.04: WordPress avec l'installation de Nginx
- Les 8 meilleurs environnements de bureau Ubuntu (20.04 FOCAL FOSSA…
- « Comment installer Lubuntu Desktop sur Ubuntu 20.04 Focal Fossa Linux
- Erreur de résolution de défaillance temporaire sur Ubuntu 20.04 Focal Fossa Linux »