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

Configurez votre propre serveur VPN WireGuard sur CentOS/RHEL

Ce tutoriel va vous montrer comment configurer votre propre serveur VPN WireGuard sur CentOS/RHEL. WireGuard est spécialement conçu pour le noyau Linux. Il s'exécute à l'intérieur du noyau Linux et vous permet de créer un tunnel VPN rapide, moderne et sécurisé.

Caractéristiques du VPN WireGuard

  • Léger et super rapide, faisant sauter OpenVPN hors de l'eau.
  • Multiplateforme. WireGuard peut fonctionner sous Linux, BSD, macOS, Windows, Android, iOS et OpenWRT.
  • L'authentification des utilisateurs se fait en échangeant des clés publiques, similaires aux clés SSH.
  • Il attribue des adresses IP de tunnel statiques aux clients VPN. Certaines personnes peuvent ne pas l'aimer, mais cela peut être utile dans certains cas.
  • Les appareils mobiles peuvent basculer entre le Wi-Fi et le réseau mobile de manière transparente sans perdre de connectivité.
  • Il vise à remplacer OpenVPN et IPSec dans la plupart des cas d'utilisation.

Exigences

Pour suivre ce tutoriel, vous aurez besoin d'un VPS (Virtual Private Server) pouvant accéder librement aux sites bloqués (Hors de votre pays ou système de filtrage Internet). Je recommande Kamatera VPS, qui comprend :

  • 30 jours d'essai gratuit.
  • À partir de 4 $/mois (1 Go de RAM)
  • VPS basé sur KVM hautes performances
  • 9 centres de données dans le monde, dont les États-Unis, le Canada, le Royaume-Uni, l'Allemagne, les Pays-Bas, Hong Kong et Israël

Suivez le tutoriel lié ci-dessous pour créer votre serveur Linux VPS chez Kamatera.

  • Comment créer un serveur VPS Linux sur Kamatera

Une fois que vous avez un VPS exécutant CentOS/Alma Linux/Rocky Linux, suivez les instructions ci-dessous.

Ce didacticiel suppose que le serveur VPN et le client VPN exécutent tous deux CentOS/RHEL système d'exploitation.

Étape 1 :Installez WireGuard sur le serveur et le bureau CentOS/RHEL

Connectez-vous à votre serveur CentOS/RHEL, puis exécutez les commandes suivantes pour installer WireGuard.

CentOS 8

sudo dnf install elrepo-release epel-release -ysudo dnf install kmod-wireguard wireguard-tools -y

RHEL 8

sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpmsudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest -8.noarch.rpmsudo dnf install kmod-wireguard wireguard-tools -y

CentOS/RHEL 7

sudo yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmsudo yum install yum-plugin-elreposudo yum install kmod-wireguard wireguard-tools -y 

Utilisez ensuite les mêmes commandes pour installer WireGuard sur votre ordinateur CentOS/RHEL local (le client VPN).

Étape 2 :Générer une paire de clés publique/privée

Serveur

Créez un répertoire pour WireGuard.

sudo mkdir -p /etc/wireguard/

Exécutez la commande suivante sur le serveur CentOS/RHEL pour créer une paire de clés publique/privée, qui sera enregistrée sous /etc/wireguard/ répertoire.

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

Client

Créez un répertoire pour WireGuard.

sudo mkdir -p /etc/wireguard/

Exécutez la commande suivante pour créer une paire de clés publique/privée sur l'ordinateur CentOS/RHEL local (le client VPN).

wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

Étape 3 :Créer un fichier de configuration WireGuard

Serveur

Utilisez un éditeur de texte en ligne de commande comme Nano pour créer un fichier de configuration WireGuard sur le serveur CentOS/RHEL. wg0 sera le nom de l'interface réseau.

sudo dnf installer nanosudo nano /etc/wireguard/wg0.conf

Copiez le texte suivant et collez-le dans votre fichier de configuration. Vous devez utiliser votre propre clé privée de serveur et votre clé publique client.

[Interface]Adresse =10.10.10.1/24ListenPort =51820PrivateKey =cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=[Peer]PublicKey =AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4=10.pre> 

Où :

  • Adresse :Spécifiez l'adresse IP privée du serveur VPN. Ici, j'utilise la plage de réseau 10.10.10.0/24, donc cela n'entrera pas en conflit avec la plage de votre réseau domestique. (La plupart des routeurs domestiques utilisent 192.168.0.0/24 ou 192.168.1.0/24). 10.10.10.1 est l'adresse IP privée du serveur VPN.
  • Clé privée :La clé privée du serveur VPN, qui se trouve dans le /etc/wireguard/server_private.key fichier sur le serveur.
  • ListenPort  :Le serveur VPN WireGuard écoutera sur le port UDP 51820, qui est le port par défaut.
  • Clé publique :La clé publique du client VPN, qui se trouve dans le /etc/wireguard/client_public.key fichier sur l'ordinateur client.
  • IP autorisées :adresses IP que le client VPN est autorisé à utiliser. Dans cet exemple, le client ne peut utiliser que l'adresse IP 10.10.10.2 à l'intérieur du tunnel VPN.

Enregistrez et fermez le fichier. (Pour enregistrer un fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O , puis appuyez sur Entrée pour confirmer. Appuyez sur Ctrl+X pour quitter.)

Modifiez le mode d'autorisation des fichiers afin que seul l'utilisateur root puisse lire les fichiers.

sudo chmod 600 /etc/wireguard/ -R

Client

Utilisez un éditeur de texte en ligne de commande comme Nano pour créer un fichier de configuration WireGuard sur votre ordinateur CentOS/RHEL local. wg-client0 sera le nom de l'interface réseau.

sudo nano /etc/wireguard/wg-client0.conf

Copiez le texte suivant et collez-le dans votre fichier de configuration. Vous devez utiliser votre propre clé privée client et votre clé publique serveur.

 [Interface] Adresse =10.10.10.2/24DNS =10.10.10.1PrivateKey =COFA + X5UVHF + A3XJ6Enlatg + DoE3I5PHMGKRMKYXI =[Peer] PublicKe 51820PersistentKeepalive =25

Où :

  • Adresse :Spécifiez l'adresse IP privée du client VPN.
  • DNS :spécifiez 10.10.10.1 (le serveur VPN) comme serveur DNS. Il sera configuré via le resolvconf commande. Vous pouvez également spécifier plusieurs serveurs DNS pour la redondance comme ceci :DNS = 10.10.10.1 8.8.8.8
  • Clé privée :La clé privée du client, qui se trouve dans le /etc/wireguard/client_private.key fichier sur l'ordinateur client.
  • Clé publique :La clé publique du serveur, qui se trouve dans le /etc/wireguard/server_public.key fichier sur le serveur.
  • IP autorisées  :0.0.0.0/0 représente l'ensemble d'Internet, ce qui signifie que tout le trafic vers Internet doit être acheminé via le VPN.
  • Point de terminaison :L'adresse IP publique et le numéro de port du serveur VPN. Remplacez 12.34.56.78 par la véritable adresse IP publique de votre serveur.
  • PersistentKeepalive :envoie un paquet vide authentifié au pair toutes les 25 secondes pour maintenir la connexion active. Si PersistentKeepalive n'est pas activé, le serveur VPN peut ne pas être en mesure d'envoyer un ping au client VPN.

Enregistrez et fermez le fichier.

Modifiez le mode de fichier afin que seul l'utilisateur root puisse lire les fichiers.

sudo chmod 600 /etc/wireguard/ -R

Étape 4 :Activer le transfert IP sur le serveur

Pour que le serveur VPN achemine les paquets entre les clients VPN et Internet, nous devons activer le transfert IP. Modifier sysctl.conf fichier.

sudo nano /etc/sysctl.conf

Ajoutez la ligne suivante à la fin de ce fichier.

net.ipv4.ip_forward =1

Enregistrez et fermez le fichier. Appliquez ensuite les modifications avec la commande ci-dessous. Le -p l'option chargera les paramètres sysctl depuis /etc/sysctl.conf dossier. Cette commande conservera nos modifications lors des redémarrages du système.

sudo sysctl -p

Étape 5 : Configurer le masquage d'adresses IP sur le serveur

Exécutez la commande suivante pour activer le masquage IP pour le 10.10.10.0/24 sous-réseau dans le pare-feu du serveur.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" masquerade'sudo systemctl recharger firewalld

Cela cachera votre réseau VPN du monde extérieur. Ainsi, Internet ne peut voir que l'IP de votre serveur VPN, mais pas l'IP de votre client VPN, tout comme votre routeur domestique masque votre réseau domestique privé.

Si votre CentOS/RHEL ne trouve pas le firewall-cmd commande, vous devez installer firewalld et démarrer le service.

sudo dnf install firewalldsudo systemctl start firewalld

Étape 6 :Installez un résolveur DNS sur le serveur

Puisque nous spécifions le serveur VPN comme serveur DNS pour le client, nous devons exécuter un résolveur DNS sur le serveur VPN. Nous pouvons installer le serveur DNS bind9.

liaison d'installation sudo dnf

Démarrez BIND 9 avec :

sudo systemctl start nommé

Et activez le démarrage automatique au démarrage :

sudo systemctl enable nommé

Vous pouvez vérifier son statut avec :

statut systemctl nommé

Exemple de sortie :

● named.service - Berkeley Internet Name Domain (DNS) Chargé :chargé (/usr/lib/systemd/system/named.service ; activé ; prédéfini par le fournisseur :désactivé> Actif :actif (en cours d'exécution) depuis Sun 2020-05 -17 11:07:34 EDT ; il y a 9 s Processus :7203 ExecStop=/bin/sh -c /usr/sbin/rndc stop>
 /dev/null 2>&1 || /bin/kill -TE> Processus :7218 ExecStart =/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited,> Process :7215 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" =="yes" ] ;> PID principal :7220 (named) Tâches :4 (limite :5045) Memory :55.5M CGroup :/system.slice/named.service └─7220 /usr/sbin/named -u named -c /etc/named.conf -4

Astuce :si la commande ci-dessus ne se ferme pas immédiatement, appuyez sur Q.

Editez le fichier de configuration principal de BIND /etc/named.conf .

sudo nano /etc/named.conf

Dans les options clause, vous pouvez trouver les deux lignes suivantes.

port d'écoute 53 { 127.0.0.1 ; };écoutez-sur-v6 port 53 { ::1; } ;

Cela rend named écouter sur localhost uniquement. Si vous souhaitez autoriser les clients du même réseau à interroger les noms de domaine, commentez ces deux lignes. (ajoutez des doubles barres obliques au début de chaque ligne)

// port d'écoute 53 { 127.0.0.1; };// écoute sur le port 53 v6 { ::1; } ;

Trouvez la ligne suivante.

allow-query { localhost ; } ;

Ajoutez la plage réseau 10.10.10.0/24 afin que les clients VPN puissent envoyer des requêtes DNS. Notez que vous devez terminer chaque plage réseau par un point-virgule.

allow-query { localhost ; 10.10.10.0/24 ; } ;

Enregistrez et fermez le fichier. Redémarrez BIND9 pour que les modifications prennent effet.

sudo systemctl restart nommé

Ensuite, vous devez exécuter la commande suivante pour autoriser les clients VPN à se connecter au port 53.

sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" accept'

Étape 7 :Ouvrir le port WireGuard dans le pare-feu

Exécutez la commande suivante pour ouvrir le port UDP 51820 sur le serveur.

sudo firewall-cmd --permanent --add-port=51820/udpsudo systemctl recharger firewalld

Étape 8 :Démarrer WireGuard

serveur

Exécutez la commande suivante sur le serveur pour démarrer WireGuard.

sudo wg-quick up /etc/wireguard/wg0.conf

Pour l'arrêter, exécutez

sudo wg-quick vers le bas /etc/wireguard/wg0.conf

Vous pouvez également utiliser le service systemd pour démarrer WireGuard.

sudo systemctl start [email protected]

Si le démarrage a échoué, vous devez consulter le journal pour savoir ce qui ne va pas.

sudo journalctl -eu [email protected]

Activez le démarrage automatique au démarrage du système avec la commande suivante.

sudo systemctl enable [email protected]

Vérifiez son état avec la commande suivante. Son statut doit être active (exited) .

statut systemctl [protégé par e-mail]

Le serveur WireGuard est maintenant prêt à accepter les connexions client.

Client

Démarrez WireGuard.

sudo systemctl start [email protected]

Si le démarrage a échoué, vous devez consulter le journal pour savoir ce qui ne va pas.

sudo journalctl -eu [email protected]

Si vous voyez l'erreur suivante dans le journal, vous pouvez essayer de redémarrer le système d'exploitation.

RTNETLINK répond :opération non prise en charge

Activez le démarrage automatique au démarrage du système.

sudo systemctl enable [email protected]

Vérifiez son état :

statut systemctl [protégé par e-mail]

Allez maintenant sur ce site :http://icanhazip.com/ pour vérifier votre adresse IP publique. Si tout s'est bien passé, il devrait afficher l'adresse IP publique de votre serveur VPN au lieu de l'adresse IP publique de votre ordinateur client.

Vous pouvez également exécuter la commande suivante pour obtenir l'adresse IP publique actuelle.

boucle https://icanhazip.com

Conseils de dépannage

Vous pouvez envoyer un ping du serveur VPN au client VPN (ping 10.10.10.2 ) pour voir si le tunnel fonctionne. Si vous voyez le message d'erreur suivant dans le ping,

ping :sendmsg :clé requise non disponible

il se peut que les AllowedIPs paramètre est erroné, comme une faute de frappe.

Si le tunnel VPN est établi avec succès, mais que l'adresse IP publique du client ne change pas, c'est parce que le masquage dans le pare-feu ne fonctionne pas. Une fois, j'ai eu une faute de frappe dans les règles du pare-feu, ce qui a empêché mon ordinateur de naviguer sur Internet.

Notez que je ne recommande pas d'utiliser SaveConfig=true dans l'[Interface] section du fichier de configuration WireGuard. SaveConfig indique à WireGuard d'enregistrer la configuration d'exécution à l'arrêt. Donc, si vous ajoutez des [Peer] supplémentaires dans le fichier de configuration, puis redémarrez WireGuard, vos configurations nouvellement ajoutées seront écrasées.

Si votre VPN ne fonctionne toujours pas, essayez de redémarrer le serveur VPN.

sudo systemctl restart [email protected]

Arrêtez ensuite le client VPN.

sudo systemctl stop [email protected]

Et mettre à niveau les packages logiciels sur le client VPN.

mise à jour sudo dnf

Ensuite, redémarrez le client VPN.

sudo shutdown -r nowsudo systemctl start [email protected]

Ajout de clients VPN supplémentaires

WireGuard est conçu pour associer une adresse IP à un client VPN. Pour ajouter plus de clients VPN, vous devez créer une paire de clés privée/publique unique pour chaque client, puis ajouter la clé publique de chaque client VPN dans le fichier de configuration du serveur (/etc/wireguard/wg0.conf ) comme ceci :

 [Interface] Adresse =10.10.10.1/24PrivateKey =UIFH + xxjj0g0uAzj6vpqsbb / o68Syvqdmyjpy / flgfa =écouter =51820 [peer] publicy =75Vnv7hqfh + 3qit5ohzkcjfbjx8tc6ck62. 1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8=IP autorisées =10.10.10.3/32[Peer]PublicKey =EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8=IP autorisées =10.10.10.4/32

Chaque client VPN aura une adresse IP privée statique (10.10.10.2, 10.10.10.3, 10.10.10.4, etc.). Redémarrez le serveur WireGuard pour que les modifications prennent effet.

sudo systemctl restart [email protected]

Ajoutez ensuite la configuration WireGuard sur chaque client VPN comme d'habitude.

Politique de routage, tunneling fractionné et kill switch VPN

Je vais maintenant vous montrer comment utiliser le routage des règles , tunneling fractionné , et interrupteur d'arrêt VPN avec WireGuard VPN. Remarque qu'il n'est pas recommandé de les utiliser conjointement les uns avec les autres. Si vous utilisez le routage de stratégie, vous ne devez pas activer le split tunneling ou le kill switch VPN, et vice versa.

Routage des règles

Par défaut, tout le trafic sur le client VPN sera acheminé via le serveur VPN. Parfois, vous souhaiterez acheminer uniquement un type de trafic spécifique, en fonction du protocole de la couche transport et du port de destination. C'est ce qu'on appelle le routage de stratégie.

Le routage de stratégie est configuré sur l'ordinateur client et nous devons d'abord arrêter la connexion VPN.

sudo systemctl stop [email protected]

Modifiez ensuite le fichier de configuration du client.

sudo nano /etc/wireguard/wg-client0.conf

Par exemple, si vous ajoutez les 3 lignes suivantes dans le [interface] section, alors WireGuard créera une table de routage nommée "1234" et ajoutera la règle IP dans la table de routage. Dans cet exemple, le trafic sera acheminé via le serveur VPN uniquement lorsque TCP est utilisé comme protocole de couche de transport et que le port de destination est 25, c'est-à-dire lorsque l'ordinateur client envoie des e-mails.

Table =1234PostUp =ip rule add ipproto tcp dport 25 table 1234PreDown =ip rule delete ipproto tcp dport 25 table 1234

Enregistrez et fermez le fichier. Ensuite, redémarrez le client WireGuard.

sudo systemctl start [email protected]

Tunneling fractionné

Par défaut, tout le trafic sur le client VPN sera acheminé via le serveur VPN. Voici comment activer le split tunneling, donc uniquement le trafic vers le 10.10.10.0/24 La plage IP sera tunnellisée via WireGuard VPN. Ceci est utile lorsque vous souhaitez créer un réseau privé pour plusieurs serveurs cloud, car les clients VPN s'exécuteront sur des serveurs cloud et si vous utilisez un tunnel VPN complet, vous perdrez probablement la connexion aux serveurs cloud.

Modifiez le fichier de configuration du client.

sudo nano /etc/wireguard/wg-client0.conf

Modifier

IP autorisées =0.0.0.0/0

À

IP autorisées =10.10.10.0/24

Ainsi, le trafic sera acheminé via VPN uniquement lorsque l'adresse de destination se trouve dans la plage IP 10.10.10.0/24. Enregistrez et fermez le fichier. Redémarrez ensuite le client WireGuard.

sudo systemctl restart [email protected]

Commutateur d'arrêt VPN

Par défaut, votre ordinateur peut accéder à Internet via la passerelle normale lorsque la connexion VPN est interrompue. Vous pouvez activer la fonction kill switch, qui empêche le flux de paquets non chiffrés via des interfaces non-WireGuard.

Arrêtez le processus client WireGuard.

sudo systemctl stop [email protected]

Modifiez le fichier de configuration du client.

sudo nano /etc/wireguard/wg-client0.conf

Ajoutez les deux lignes suivantes dans le [interface] rubrique.

PostUp =iptables -I SORTIE ! -o %i -m marque ! --mark $(wg show %i fwmark) -m type_adresse ! --dst-type LOCAL -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m marque ! --mark $(wg show %i fwmark) -m type_adresse ! --dst-type LOCAL -j REJETER

Comme ceci :

[Interface]Adresse =10.10.10.2/24DNS =10.10.10.1PrivateKey =cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=PostUp =iptables -I SORTIE ! -o %i -m marque ! --mark $(wg show %i fwmark) -m type_adresse ! --dst-type LOCAL -j REJECTPreDown =iptables -D OUTPUT ! -o %i -m marque ! --mark $(wg show %i fwmark) -m type_adresse ! --dst-type LOCAL -j REJECT[Peer]PublicKey =RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I=AllowedIPs =0.0.0.0/0Endpoint =12.34.56.78:51820PersistentKeepalive =25

Enregistrez et fermez le fichier. Démarrez ensuite le client WireGuard.

sudo systemctl start [email protected]

Cent OS
  1. Comment configurer Wireguard VPN sur CentOS 8

  2. Configurer le serveur SysLog sur CentOS 6 / RHEL 6

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

  4. Comment configurer un serveur SFTP sur Rocky Linux/CentOS 8 Server

  5. Comment configurer WireGuard VPN sur CentOS 8

Configurez votre propre serveur VPN WireGuard sur Ubuntu 20.04/18.04

Comment installer et configurer Gitlab CE Server sur Centos 8

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 SSH sur CentOS et RHEL