QNAP [Tuto] Comment configurer un serveur WireGuard sur son NAS QNAP ( QVPN )

EVO

Administreur
Membre du personnel
25 Novembre 2019
10 482
2 274
293
/var/run/docker.sock
Comment configurer un serveur WireGuard sur son NAS QNAP ( QVPN )

⚠️ CECI EST BASÉE EN PARTIE SUR LA FAQ DE QNAP

Pourquoi ce tutoriel ? :giggle:
Ce tuto va vous permettre ( je l'espère ) d'apprendre a configurer un serveur WireGuard sur votre NAS QNAP, et a configurer les clients ( pair ) pour qu'ils puissent s'y connecter à distance et accéder au NAS de manière sécurisé et transparente même hors de votre domicile.
L'aide de QNAP bien que complète n'est je trouve pas asser clair , et de plus mélange la configuration de QVPN en Serveur et en Client VPN, ce qui est plutôt étrange et peut être perturbant lors de la lecture.

Disclamer :
Le but de ce tuto sera de rendre cette installation facile et accessible a tous, bien que loin d’être un expert, n’hésiter pas à répondre à ce sujet avec vos interrogations, .. Pour ceux qui sont plus a l'aise avec ce genre d'installation, n'hésiter pas a proposer des améliorations, ou des conseils, ...

Pré-requis :
- Un NAS QNAP compatible QVPN Service 3

Sommaire :
1/ Installation de QVPN
2/ Activation et Configuration du VPN
3/ Autoriser les clients VPN dans le pare-feu
4/ Création d'un Pair et Configuration du client WireGuard
4.a/ Sur Windows
4.b/ Sur Mac
4.c/ Sur Android
4.d/ Sur iOS
5/ Aller plus loin : Clé pré-partagée
6/ Dépannage
6.a/ La connexion est t'elle établie ?
6.b/ La connexion est établie mais je n'arrive pas a joindre le NAS




Aller go :)




1/ Installation de QVPN

Pour installer QVPN, rendez vous dans l'App Center sur l'interface de votre NAS :
1737668353863.png

Rechercher "QVPN" et cliquez sur "installer" en dessous de QVPN Service :
1737668271228.png
1737668313324.png

Une fois l'installation terminée, vous pouvez cliquer sur "Ouvrir" pour ouvrir QVPN :)
1737668454202.png



2/ Activation et Configuration du VPN

Une fois QVPN Service 3 ouvert, nous allons dans le menu Serveur VPN > WireGuard, et on coche la case "Activer le serveur VPN WireGuard".
1664573144440.png
Et on rempli, dans l'ordre :

Nom du serveur : Choisissez un nom, caractères autorisés, chiffres et lettres uniquement (A–Z, a–z, 0–9)

Clé privé et Clé publique : Il suffit de cliquer sur "Générer des paires de clés" pour que QVPN genere et renseigne les clés de lui même.

Adresse IP : Par défaut, 198.18.7.1/24 - C'est très bien comme cela, a modifié uniquement si vous avez déja un service qui utilise cette même plage d'adresse.

Port d'écoute : Par défaut, 51820 en UDP - Vous pouvez le personnaliser au choix sur un port compris entre 1 et 65535. ( Attention dans ce cas a définir un port qui n'est pas déjà utilisé )

Interface réseau : Par défaut sur "Tout" ( Ceux possèdant des NAS avec plusieurs connexions pourrons cliquer sur le petit stylet pour personnaliser ce choix )

Serveur DNS : Si vous possédez un serveur DNS, renseignez son adresse. Sinon vous pouvez utilisez un DNS Public, comme Cloudfare ( 1.1.1.1 ) ou Quad9 ( ? ). Vous pouvez également utiliser l'assistant pour vous laisser guider dans ce choix.

Maintenant que j'ai fini de configuré, je valide en cliquant en bas sur : Appliquer
1664576889296.png


A partir de la notre Serveur VPN est en route !




3/ Autoriser les clients VPN dans le pare-feu

Maintenant que notre serveur VPN est opérationnel, nous allons allez dans QuFirewall pour autoriser les clients du VPN ( pair ) à accéder au NAS.
Dans QuFirewall, on clique donc sur le petit stylet en face de notre regle active pour l'éditer, puis on clique sur "Ajouter un règle" :

1664606500465.png

1664606553899.png
1664606580823.png

1664606642919.png




4/ Création d'un Pair et Configuration du client WireGuard

4.a/ Sur Windows


Dans le client WireGuard on clique sur "Ajouter le tunnel" > "Ajouter un tunnel vide ..." :
1664607564338.png
Ici, WireGuard me génère directement une clé publique est un clé privé.
Je lui donne un nom, par exemple Patrick-PC-NAS, et je complète le dessous :

Code:
Address = 198.18.7.2/32
DNS = 1.1.1.1
MTU = 1280

[Peer]
PublicKey = 32YEWTV4X2oJfZOJoW2UJEC0yFNpjtyOM0Mj0mr2fw4=
AllowedIPs = 192.168.1.0/24
Endpoint = 192.168.1.101:51820

- DNS, Ici nous avons choisi 1.1.1.1, mais il est possible de choisir un autre DNS, ou même un DNS local.
- Le MTU est une valeur par défaut que je vous conseil de ne pas modifier.
- AllowedIPs, ici 192.168.1.0/24 car je souhaite que l’ordinateur sur lequel est installé le client WireGuard puisse acceder a mon réseau local ( dont le sous-domaine est : 192.168.1.0/24 ), si javais eu un réseau sous la forme 192.168.0.X alors j'aurai renseigné : 192.168.0.0/24. Aussi, si je souhaite que tout le trafic passe au travers du VPN, alors j'aurai indiqué : AllowedIPs = 0.0.0.0/0, 192.168.1.0/24
- Endpoint est l'adresse de mon serveur VPN suivi du port de connexion UDP. Dans le cas d'une connexion distante, cela sera l'adresse public de la connexion, ou son nom de domaine. Exemple : monnas.myqnapcloud.com:51820

Il nous reste PublicKey et Address à configurer, pour savoir comment le remplir, rendez-vous dans QVPN :
1664608473063.png

Cliquez sur le logo en face de Clé publique pour récupérer la clé, et indiquez la en face de PublicKey dans la configuration du client WireGuard.

Maintenant, toujours dans QVPN, cliquer sur "Ajouter un pair" et dans la fenetre qui s'ouvre clé sur "Paramètre avancé" :
1664608603062.png
Renseigner la clé public du client WireGuard, dans l'encadré "Clé Publique" de l'ajout du pair :
1664608688726.png

Dans la client WireGuard, Address est l'adresse du client ( ou pair ) visible lors de l'ajout du pair dans QVPN WireGuard :
1664608749369.png

Dans QVPN, on clique sur Appliquer pour valider la création du pair, dans dans le client WireGuard on clique sur Enregistrer.

Et voila, c'est fini :)

Dans le Client WireGuard, on sélectionne notre tunnel est on clique sur Activer pour se connecter :

1664609007106.png
A savoir que le tunnel créer n'est pas lié a la machine, vous pouvez donc par exemple très bien les créer sur votre machine, puis exporter le tunnel afin de les mettre en place sur d'autre machine :
1664609143064.png
Cela vous donnera un fichier Zip, avec toutes vos configurations.


4.b/ Sur Mac

X

4.c/ Sur Android

X

4.d/ Sur iOS

1665261883595.png

Merci @jckfun

5/ Aller plus loin : Clé pré-partagée

En Cours de rédaction
openssl rand -base64 32


6/ Dépannage

Le protocole Wireguard est un protocole dit "silencieux", cela le rend plus sécurisé mais cela complique le diagnostique lors d'un soucis. En effet, lors d'une connexion au serveur Wireguard, le client n'est pas capable de savoir si le paquet est réellement reçu par le serveur ou non, ou s'il est reçu mais refusé, ...

6.a/ La connexion est t'elle établie ?

Une méthode pour savoir si la connexion est correctement établie, et de vérifier dans QVPN s'il y a eu un échange récent entre le client et le NAS.

Dans QVPN rendez vous alors dans l'onglet Wireguard :

1735835554590.png

Dans la table des pairs, vous pouvez vous les clients déclarés. Dans "Dernière Handshake", il s'agit du temps depuis le dernier échange entre le client et le serveur.

Dans le cas de (1), il y a 17secondes . On voit donc que la connexion est ok, et avec une dernière connexion il y a 17 secondes, le client est même encore connecter actuellement.

Dans le cas de (2), il y 8 jours et 16heures, Cela indique que la configuration du client était bonne, mais que soit la configuration a changé depuis, et le client n'arrive plus a se connecter, ou alors que tout simplement le client n'a pas essayé de se connecter depuis + de 8 jours.

Dans le cas de (3), il n'y a rien, cela semble indique que le client ne c'est jamais connecté, ou alors depuis très longtemps. Peut être que la configuration de ce peer n'est pas bonne, ou non utilisé.

Dans tout les cas, ici on voit que le serveur Wireguard fonctionne comme attendu, un des clients arrivant à échanger avec le serveur correctement.


6.b/ La connexion est établie mais je n'arrive pas a joindre le NAS

Si 6.a/ est un succès ( vous avez bien un échange entre le serveur Wireguard et le client ), mais que le NAS n'est pas joignable depuis le client via son IP locale. Il y a peut être un probleme de configuration du pare-feu. En effet, les clients Wireguard ont une IP locale différente du réseau locale du NAS, le pare-feu doit donc autoriser cette plage d'IP a se connecter.

Une erreur de configuration qui reviens souvent au niveau du pare-feu c'est la plage d'IP à accepter, attention il s'agit de 198.18.7.1/24 et non 192.18.7.1/24 ou 192.18.7.1/32, ...

2025-01-25 - Rédaction de la partie 1 "Installation de QVPN"
2025-01-02 - Création de la rubrique "Dépannage" avec le point 6.a et 6.b + Mise en page
2022-10-01 - Création
 
Dernière édition:
Merci pour ton tuto EvoTK,

J'ai tout suivi à la lettre, mais je n'arrive pas à me connecter depuis mon téléphone avec le client iOS.

Pourtant, j'ai bien NATé le port sur ma box internet, créé une regle sur le firewall.

Utilisé les bonnes clés publiques dans le serveur et dans le client ...

Bref, je ne m'en sors pas...

Aucun log sous QVPN

Une idée ?
 
Tu as bien ouvert et NAT le port en UDP ?
Si tu fait un test depuis par exemple https://www.ipvoid.com/udp-port-scan/ cela t'indique bien qu'il est ouvert ?
Oui, j'ai bien ouvert et naté le port en UDP.

Pour information, cela fonctionnait très bien en OpenVPN (j'ai désactivé le serveur OpenVPN pour tester avec Wireguard) ...

Peut etre est ce une regle de QuFW ?
Pourtant j'ai mis ALLOW 198.18.7.0/24 tout en haut de la liste ...
 
Dernière édition:
Cela me semble juste, apres ici sur Android par défaut c'est aléatoire ( dans Port ) :
1664912421520.png
Je laisse comme cela personnellement
 
1664915316600.png
Le port ici
Source : N'importe ( ou Region est limité a la France peut etre aussi une bonne pratique ;) )
Protocole : UDP
En dessus tu rendre ton port
 
Voir la pièce jointe 6461
Le port ici
Source : N'importe ( ou Region est limité a la France peut etre aussi une bonne pratique ;) )
Protocole : UDP
En dessus tu rendre ton port
Présentation03.png
Merci pour ta réponse.

Voici quelques copies d'écran de ma configuration Firewall Qufw, regle NAT box internet, résultat du port scanner.

Tout te semble OK ?

Ca ne marche toujours pas de mon côté alors que pour OpenVPN, ca marche parfaitement ...

Peut etre s'agit il d'un probleme de configuration Wireguard ?

Bonne journée
 
Et la configuration du FW de ma box internet, réglé sur MOYEN (sinon mon interphone connecté ne fonctionne pas)

Cela te semble cohérent ?

merciConfiguration Livebox 4 - mai 2022.png
 
Je ne vois pas le soucis, oui le pare-feu et bon.

Dans le client iOS a tu enlevé le port d'écoute ici ? Laisse le choisir, tu laisse la case vide
Cela me semble juste, apres ici sur Android par défaut c'est aléatoire ( dans Port ) :
1664912421520.png

Je laisse comme cela personnellement
 
Je ne vois pas le soucis, oui le pare-feu et bon.

Dans le client iOS a tu enlevé le port d'écoute ici ? Laisse le choisir, tu laisse la case vide
Un grand merci : cela fonctionne parfaitement en laissant le port d'écoute sur le client iOS vide.
J'avoue ne pas comprendre pourquoi, mais cela fonctionne :)

Par contre, ce qui est étrange, c'est que je ne vois pas dans l'application QVPN que je suis connecté depuis mon iphone.
En effet dans les rubriques :
- UTILISATEURS du NAS en ligne
- Journaux de connection
- Vue d'ensemble

Je n'ai aucune trace de connection de mon client Wireguard.

Seul, dans la section WireGuard, table des pairs, je vois pour le pair jciphone dans la colonne Tx/Rx le temps de connection et les données échangées.

Est ce normal ? Est ce la meme chose de ton côté ?

Si tu veux, je peux contribuer à enrichir ton tutorial en te faisant parvenir des copies d'écran iOS (si tu veux) ?

Bonne journée
 
Dernière édition:
  • J'aime
Réactions: EVO
J'en conclu que cela fonctionne :love:

Dès que j'ai le temps j'inclu cela, merci beaucoup !
Oui, tout a fait, cela fonctionne.

Maintenant, il faut que j'optimise en renseignant mon nom de domaine NOIP à la place de mon IP publique dans le champs Point de Terminaison:Port du client iOS, en espérant que cela fonctionne ...
 
Comportement etrange ce soir : j'ai changé mon port WireGuard histoire de ne pas utiliser le port par défaut au niveau de :
- Serveur WireGuard
- Client Wireguard iOS
- Regle NAT box internet
- Regle QuFW

Et la ... ca ne marche plus !

Donc, je remets comme avant ce changement, et la ... ce ne marche plus.

Question : lorsque l'on modifie un réglage sur le serveur (comme le port) et sur le client (comme le port), faut il regener des paires de clés serveur et client ?

Ou alors c'est la règle de NAT qui prends du temps a être acceptée par ma box ... Redemarrage necessaire ?
Idem QuFW ?

Merci.

Bonne soirée
 
Question : lorsque l'on modifie un réglage sur le serveur (comme le port) et sur le client (comme le port), faut il regener des paires de clés serveur et client ?
Je connais pas encore trop de fonctionnement de QuVPN, mais en tout cas dans le fonctionnement normal de Wireguard, un changement de port ne demande pas de régénération des clés.

Ou alors c'est la règle de NAT qui prends du temps a être acceptée par ma box ... Redemarrage necessaire ?
Idem QuFW ?
Normalement non, mais pareil, peut etre pas pour toutes les box
Pour QuFW c'est immédiat
 
Merci pour tes réponses.

Mon serveur Wireguard fonctionne bien maintenant depuis iOS.

Seul hic : lorsque je suis connecté à mon serveur Wireguard depuis mon iOS, je ne parviens plus à aller sur des sites internet.

Par exemple : allociné ... probleme de chargement.

Cela semble venir du DNS ? Quel mauvais paramètre ais je rempli (au niveau du serveur ou client iOS) ?

Merci à toi