WireGuard est un réseau privé virtuel open source et axé sur la sécurité conçu pour la simplicité et la facilité d'utilisation. Il prend en charge différents systèmes d'exploitation, notamment Linux, macOS, Windows, BSD et Android. Il s'agit d'un VPN simple et polyvalent qui peut être facilement déployé sur de petits appareils vers des serveurs haut de gamme. Il s'agit d'un serveur VPN point à point au lieu d'un modèle client-serveur. Il utilise un mécanisme d'échange de clé publique pour authentifier le client.
Si vous recherchez un VPN léger et rapide, alors le VPN WireGuard est le meilleur choix pour vous. Dans ce tutoriel, nous allons vous montrer comment installer le serveur et le client WireGuard VPN sur Ubuntu 20.04.
Prérequis
- Deux serveurs exécutant le serveur Ubuntu 20.04.
- Un mot de passe root est configuré sur les deux serveurs.
Mise en route
Tout d'abord, il est recommandé de mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour avec la commande suivante :
apt-get update -y
Une fois tous les packages mis à jour, vous devrez installer les Iptables sur votre système. Vous pouvez l'installer avec la commande suivante :
apt-get install iptables -y
Une fois l'installation terminée, vous pouvez passer à l'étape suivante.
Installer le serveur VPN WireGuard
Par défaut, le package WireGuard est disponible dans le référentiel par défaut d'Ubuntu 20.04. Vous pouvez l'installer en exécutant la commande suivante :
apt-get install wireguard -y
Une fois le package WireGuard installé, vous pouvez passer à l'étape suivante.
Configurer le serveur WireGuard
WireGuard fonctionne en échangeant des clés publiques entre chaque appareil du réseau WireGuard. Vous devrez donc créer une clé publique et privée sur le serveur.
WireGuard fournit l'utilitaire de ligne de commande wg et wg-quick pour créer une clé et gérer les interfaces.
Vous pouvez créer à la fois une clé publique et une clé privée à l'aide de la commande suivante :
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Une fois les deux clés créées, vous pouvez les vérifier avec la commande suivante :
ls /etc/wireguard
Vous devriez voir le résultat suivant :
privatekey publickey
Vous pouvez afficher le contenu de la clé privée avec la commande suivante :
cat /etc/wireguard/privatekey
Vous devriez voir le résultat suivant :
4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=
Vous pouvez afficher le contenu de la clé publique avec la commande suivante :
cat /etc/wireguard/publickey
Vous devriez voir le résultat suivant :
00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
Ensuite, vous devrez créer une interface réseau pour WireGuard. Vous pouvez le créer avec la commande suivante :
nano /etc/wireguard/wg0.conf
Ajoutez les lignes suivantes :
[Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = server-private-key PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Enregistrez et fermez le fichier lorsque vous avez terminé.
Où :
- Adresse : Une adresse IP privée pour l'interface wg0.
- Port d'écoute : Spécifiez le port d'écoute de WireGuard.
- Clé privée : Une clé privée stockée dans le fichier /etc/wireguard/privatekey.
- Publication : Spécifiez la commande qui autorise le trafic à quitter le serveur et donne aux clients VPN l'accès à Internet. Remplacez également eth0 par le nom de votre interface réseau.
Ensuite, définissez l'autorisation appropriée pour la clé privée et le fichier wg0.
chmod 600 /etc/wireguard/{privatekey,wg0.conf}
Ensuite, activez l'interface wg0 en exécutant la commande suivante :
wg-quick up wg0
Vous devriez obtenir le résultat suivant :
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Vous pouvez également démarrer le service WireGuard en utilisant systemd comme indiqué ci-dessous :
systemctl start [email protected]
Ensuite, activez le service WireGuard pour qu'il démarre au redémarrage du système avec la commande suivante :
systemctl enable [email protected]
Ensuite, vérifiez l'état du service WireGuard avec la commande suivante :
systemctl status [email protected]
Vous devriez obtenir le résultat suivant :
? [email protected] - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (exited) since Thu 2020-12-10 11:42:14 UTC; 7s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 2173 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 2173 (code=exited, status=0/SUCCESS) Dec 10 11:42:14 ubuntu2004 systemd[1]: Starting WireGuard via wg-quick(8) for wg0... Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link add wg0 type wireguard Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Dec 10 11:42:14 ubuntu2004 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.
Vous pouvez également vérifier l'état de l'interface wg0 avec la commande suivante :
wg show wg0
Vous devriez obtenir le résultat suivant :
interface: wg0 public key: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= private key: (hidden) listening port: 51820
Vous pouvez obtenir le statut de l'adresse IP de l'interface wg0 avec la commande suivante :
ip a show wg0
Vous devriez obtenir le résultat suivant :
13: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 10.0.0.1/24 scope global wg0 valid_lft forever preferred_lft forever
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Activer le transfert IP
Ensuite, vous devrez activer le transfert IP sur votre serveur pour acheminer les paquets entre les clients VPN et Internet. Vous pouvez l'activer en éditant le fichier /etc/sysctl.conf :
nano /etc/sysctl.conf
Modifiez la ligne suivante :
net.ipv4.ip_forward=1
Enregistrez et fermez le fichier puis exécutez la commande suivante pour appliquer les modifications de configuration :
sysctl -p
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer et configurer le client WireGuard
Tout d'abord, vous devrez installer le package WireGuard sur la machine cliente. Vous pouvez l'installer avec la commande suivante :
apt-get install wireguard -y
Après avoir installé le package WireGuard, créez une clé privée et une clé publique avec la commande suivante :
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Une fois les deux clés créées, vous devrez créer un nouveau fichier de configuration.
Vous pouvez le créer avec la commande suivante :
nano /etc/wireguard/wg0.conf
Ajoutez les lignes suivantes :
[Interface] PrivateKey = client-private-key Address = 10.0.0.2/24 [Peer] PublicKey = server-public-key Endpoint = server-ip-address:51820 AllowedIPs = 0.0.0.0/0
Enregistrez et fermez le fichier lorsque vous avez terminé.
Où :
- Adresse : Une adresse IP privée pour l'interface wg0.
- Clé privée : Spécifiez la clé privée sur la machine cliente.
- Clé publique : Spécifiez la clé publique sur la machine serveur.
- Point de terminaison : Spécifiez l'adresse IP du serveur.
- IP autorisées : Spécifiez la liste des adresses IP autorisées.
Ensuite, vous devrez ajouter la clé publique et l'adresse IP du client sur la machine serveur.
Sur la machine serveur, exécutez la commande suivante pour ajouter les deux :
wg set wg0 peer client-public-key allowed-ips 10.0.0.2
Ensuite, vous devrez afficher l'interface wg0 sur la machine cliente.
Sur la machine cliente, exécutez la commande suivante pour afficher l'interface :
wg-quick up wg0
Vous devriez obtenir le résultat suivant :
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] wg set wg0 fwmark 51820
À ce stade, votre ordinateur client est connecté au serveur VPN WireGuard. Vous pouvez vérifier l'état de la connexion avec la commande suivante :
wg
Vous devriez obtenir le résultat suivant :
interface: wg0 public key: 3FXBDpAO4Vado1tDjLtVQt+JnOCa+W2piLeFYQ8KyB4= private key: (hidden) listening port: 38830 fwmark: 0xca6c peer: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= endpoint: 69.87.216.36:51820 allowed ips: 0.0.0.0/0 latest handshake: 41 seconds ago transfer: 5.27 KiB received, 12.97 KiB sent
Conclusion
Félicitations ! vous avez installé et configuré avec succès le serveur et le client WireGuard VPN sur le serveur Ubuntu 20.04. Maintenant, le trafic de votre machine cliente doit être acheminé via votre machine serveur. Vous pouvez désormais surfer sur Internet de manière anonyme et garder vos données privées.