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

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 213
1 575
278
/var/run/docker.sock
Comment configurer un serveur WireGuard sur son NAS QNAP ( QVPN )

🚧 CECI EST UNE ÉBAUCHE EN COURS DE RÉDACTION 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 acceder 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
5/ Aller plus loin : Clé pré-partagée



Aller go :)



1/ Installation de QVPN




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
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.


B/ Sur Mac
C/ Sur Android
B/ Sur iOS ( Merci @jckfun )
1665261883595.png

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

En Cours de rédaction
openssl rand -base64 32
 
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
 
et tu as aussi ouvert le port d'Ă©coute de Wireguard en UDP ?
Non, je ne l'ai pas ouvert sur QuFW ...
Il faut créer une règle sous QuFW spécifique pour cela ?
Elle doit être créée comment ? Quelle synthaxe s'il te plait ?
 
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
 
Cela semble venir du DNS ? Quel mauvais paramètre ais je rempli (au niveau du serveur ou client iOS) ?
Quel serveur DNS a tu déclaré ? As tu un Pihole/adguard ?
Aussi a tu essayé depuis ton telephone de ping allociné pour voir si tu y arrivai, et ip cela donnai ?