GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer Wireguard VPN sur CentOS 8

Wireguard est une implémentation VPN multiplateforme open source qui utilise une cryptographie de pointe. Il est plus rapide, plus simple et plus fonctionnel que les protocoles IPSec et OpenVPN. Il est conçu comme un VPN à usage général pour fonctionner sur des interfaces embarquées et des superordinateurs et fonctionne sur Linux, Windows, macOS, iOS, Android, BSD et diverses autres plates-formes.

Ce didacticiel explique comment installer Wireguard VPN sur un serveur basé sur CentOS 8 et s'y connecter à l'aide d'un client Linux (CentOS/Fedora/Ubuntu).

Étape 1 - Mettre à jour le système

Avant d'aller plus loin, il est impératif de mettre à jour votre système pour installer les dernières mises à jour.

$ sudo dnf update

Étape 2 - Installer et activer le référentiel EPEL

Les packages Wireguard requis se trouvent dans le référentiel EPEL, nous devons donc l'installer et l'activer.

$ sudo dnf install epel-release
$ sudo dnf config-manager --set-enabled PowerTools

Nous avons également activé le référentiel PowerTools puisque les packages EPEL en dépendent.

Étape 3 - Installer Wireguard

Activez le référentiel Wireguard.

$ sudo dnf copr enable jdoss/wireguard

Installez Wireguard.

$ sudo dnf install wireguard-dkms wireguard-tools

Cette étape installe également le compilateur GNU GCC nécessaire pour construire les modules du noyau Linux.

Étape 4 - Configurer le serveur Wireguard

Créez un fichier de configuration vide sur le serveur pour les paramètres Wireguard avec les autorisations appropriées.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

La commande Touch crée le fichier wg0-server.conf fichier dans le /etc/wireguard répertoire.

Ensuite, créez une paire de clés privée/publique pour le serveur Wireguard.

$ cd /etc/wireguard
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'

Cela crée à la fois une clé publique et une clé privée pour le Wireguard et les écrit dans les fichiers respectifs.

Affichez la clé privée que nous venons de créer.

$ sudo cat privatekey

Notez la clé et copiez-la car nous en aurons besoin pour configurer Wireguard.

Ensuite, modifiez le fichier de configuration.

$ sudo nano /etc/wireguard/wg0.conf

Ajoutez le code suivant.

[Interface]
## VPN server private IP address ##
Address = 192.168.10.1/24
 
## VPN server port - You can choose any port ##
ListenPort = 37822
 
## VPN server's private key i.e. /etc/wireguard/privatekey - the one from above ##
PrivateKey = GCEXafeZKqSsuLfvuHE+zLzMYwoH4qQyBh7MZ4f/3kM=
 
## Save and update this config file when a new peer (vpn client) added ##
SaveConfig = true

Chaque configuration a une section appelée [Interface] où la partie serveur est définie.

Il contient la clé privée du serveur WireGuard local, le port UDP qu'il doit écouter pour les connexions entrantes et ses propres adresses IP VPN.

Nous définissons également SaveConfig à true . Cela indiquera au service Wireguard d'enregistrer automatiquement sa configuration active dans ce fichier à l'arrêt.

Appuyez sur Ctrl + W pour fermer le fichier et saisissez Y lorsque vous êtes invité à enregistrer le fichier.

Étape 5 - Configurer le pare-feu

Nous devons ouvrir le port que nous avons choisi pour Wireguard.

Tout d'abord, nous devons définir le service Wireguard pour le pare-feu. Pour cela, créez un fichier wireguard.xml avec l'éditeur Nano.

$ sudo nano /etc/firewalld/services/wireguard.xml

Collez le code suivant dans le fichier.

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard open UDP port 37822 for client connections</description>
  <port protocol="udp" port="37822"/>
</service>

Appuyez sur Ctrl + W pour fermer le fichier et saisissez Y lorsque vous êtes invité à enregistrer le fichier.

Ensuite, activez le service Wireguard dans le pare-feu.

$ sudo firewall-cmd --permanent --add-service=wireguard

Activez le masquage pour que tout le trafic entrant et sortant de 192.168.10.0/24 routé via notre adresse IP publique du serveur 203.1.114.98/24 .

$ sudo firewall-cmd --permanent --add-masquerade

Enfin, rechargez le pare-feu pour activer les règles.

$ sudo firewall-cmd --reload

Répertoriez les règles de pare-feu actuelles à confirmer.

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: wireguard ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Étape 6 - Activer le transfert IPv4

Créez /etc/sysctl.d/99-custom.conf fichier.

$ sudo nano /etc/sysctl.d/99-custom.conf

Collez le code suivant dans le fichier.

## Turn on bbr ##
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
 
## for IPv4 ##
net.ipv4.ip_forward = 1
 
## Turn on basic protection/security ##
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

## for IPv6 ##
net.ipv6.conf.all.forwarding = 1

Appuyez sur Ctrl + W pour fermer le fichier et saisissez Y lorsque vous êtes invité à enregistrer le fichier.

La portée du code dans le fichier ci-dessus est en dehors de la portée de ce didacticiel, donc pour l'instant, utilisez-le tel quel.

Rechargez les modifications.

$ sudo sysctl -p /etc/sysctl.d/99-custom.conf

Par défaut, le pare-feu ne laissera pas wg0 et eth0 les interfaces communiquent entre elles. Nous devons donc ajouter l'interface Wireguard au réseau interne et activer le masquage.

$ sudo firewall-cmd --add-interface=wg0 --zone=internal
$ sudo firewall-cmd --permanent --zone=internal --add-masquerade

Étape 7 - Activer et démarrer le service Wireguard

Ensuite, nous devons activer et démarrer le service Wireguard.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

Vous pouvez vérifier si l'interface Wireguard, wg0 est opérationnel à l'aide de la commande suivante.

$ sudo wg
interface: wg0
  public key: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  private key: (hidden)
  listening port: 37822

$ sudo ip a show wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Étape 8 - Installer et configurer le client WireGuard

Vous pouvez trouver les instructions d'installation du client Wireguard pour votre distribution Linux sur leur page d'installation officielle.

Une fois le client installé, vous devez créer le fichier de configuration du client.

$ sudo mkdir /etc/wireguard
$ sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'
$ cd /etc/wireguard/
$ sudo sh -c 'umask 077; wg genkey | tee privatekey | wg pubkey > publickey'
$ sudo cat privatekey

Notez la clé privée que vous obtenez à la fin. Ensuite, nous devons modifier le fichier de configuration que nous venons de créer.

$ sudo nano /etc/wireguard/wg0.conf

Ajoutez les directives suivantes au fichier.

[Interface]
## client private key ##
PrivateKey = OEM6D/zt2fVWOepVv3iEDD430V0gAshKp4+5oVVt5EE=
 
## client ip address ##
Address = 192.168.10.2/24
 
[Peer]
## CentOS 8 server public key ##
PublicKey = VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
 
## set ACL ##
AllowedIPs = 192.168.10.0/24
 
## Your CentOS 8 server's public IPv4/IPv6 address and port ##
Endpoint = 203.1.114.98:37822
 
##  Key connection alive ##
PersistentKeepalive = 15

Notez que nous avons attribué l'IP privée 192.168.10.1 au serveur et 192.168.10.2 au client. Nous avons également ajouté la clé privée du client au fichier.

Le [Peer] est l'endroit où vous entrez la configuration du serveur auquel le client se connectera. Ici, nous avons ajouté la clé publique, l'adresse IP publique et un ensemble d'adresses IP autorisées contenant l'adresse IP privée de notre serveur. PersistentKeepalive indique à WireGuard d'envoyer un paquet UDP toutes les 15 secondes, ceci est utile si vous êtes derrière un NAT et que vous souhaitez maintenir la connexion active.

Appuyez sur Ctrl + W pour fermer le fichier et saisissez Y lorsque vous êtes invité à enregistrer le fichier.

Il est maintenant temps d'activer et de démarrer le client VPN.

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
$ sudo systemctl status [email protected]

Étape 9 - Configurer le serveur pour ajouter le client

Maintenant, nous devons ajouter à nouveau la configuration du client au serveur pour lui faire connaître le client.

Arrêtez d'abord le service Wireguard.

$ sudo systemctl stop [email protected]

Ouvrez le fichier wg0.conf pour le modifier.

$ sudo nano /etc/wireguard/wg0.conf

Ajoutez le code suivant à la fin du fichier.

[Peer] 
## client VPN public key ## 
PublicKey = dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA=  

## client VPN IP address (note /32 subnet) ## 
AllowedIPs = 192.168.10.2/32

Appuyez sur Ctrl + W pour fermer le fichier et saisissez Y lorsque vous êtes invité à enregistrer le fichier.

Le [Peer] les sections définissent les autres membres du réseau VPN. Vous pouvez en ajouter autant que nécessaire.

Ils contiennent leur clé publique, qui doit correspondre à la clé privée des pairs dans son [Interface] rubrique.

Notez que toute connexion entrante est d'abord authentifiée par l'une des clés publiques. Si la connexion ne provient pas d'un pair vérifié, les paquets entrants sont simplement ignorés en silence. Étant donné que les connexions des hôtes qui ne possèdent pas de clé privée correspondante ne reçoivent aucune réponse, un VPN WireGuard ne fournit pas seulement une communication cryptée, il reste également caché aux étrangers.

Redémarrez le service Wireguard.

$ sudo systemctl start [email protected]

Étape 10 - Tester

Vérifions si le client et le serveur sont connectés en toute sécurité à l'aide du VPN. Pour tester la connexion, exécutez les commandes suivantes sur votre client.

$ ping -c 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=44.2 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=45.8 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=46.7 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=44.1 ms

--- 192.168.10.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2800ms
rtt min/avg/max/mdev = 41.729/47.829/48.953/5.046 ms

$ sudo wg
interface: wg0
  public key: dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA= 
  private key: (hidden)
  listening port: 
 
peer: VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=
  endpoint: 203.1.114.98:37822
  allowed ips: 192.168.10.0/24
  latest handshake: 1 minute, 40 seconds ago
  transfer: 938 B received, 45.67 KiB sent
  persistent: keepalive: every 15 seconds

Conclusion

C'est tout ce qu'il y a dans ce tutoriel. Vous devriez maintenant avoir un serveur VPN basé sur Wireguard basé sur un serveur CentOS 8. Si vous avez des questions, posez-les dans les commentaires ci-dessous.


Cent OS
  1. Comment définir/modifier un nom d'hôte sur CentOS 7 Linux

  2. Comment configurer WireGuard VPN sur Ubuntu 20.04

  3. Comment configurer WireGuard VPN sur Ubuntu (un guide étape par étape)

  4. Configurer le serveur DHCP sur CentOS 8 - Comment faire ?

  5. Comment configurer les paramètres régionaux du système sur CentOS 7

Comment installer un VPN PPTP sur CentOS 6

Comment configurer le serveur DHCP sur CentOS 8

Comment installer Wireguard sur CentOS 8

Comment configurer un VPN basé sur IPsec avec Strongswan sur CentOS/RHEL 8

Comment configurer WireGuard VPN sur Debian 11

Comment configurer WireGuard VPN sur Linux