WireGuard configuration des clients mobiles
Introduction
WireGuard est un protocole de communication et un logiciel libre et open source permettant de créer un réseau privé virtuel (VPN). Avec une architecture moderne et plus compact. Il vise à être plus rapide et moins complexe qu’IPsec tout en étant une alternative plus performante à OpenVPN. Initialement publié pour le noyau Linux, il est maintenant multiplateforme et largement déployable.
Ce document décrit la mise en place d’un serveur central WireGuard sur DynFi Firewall et la configuration d’un ou plusieurs clients pour créer un tunnel vers ce serveur.
Étape 1 - Installer le plugin WireGuard
Wireguard est déjà pré-installé sur DynFi Firewall. Pour y accéder rendez-vous sur la page de configuration de WireGuard via VPN >> WireGuard
.
Etape 2 - Configurer le pair local (serveur)
Allez dans
VPN >> WireGuard >> Local
.Cliquez sur + afin d’ajouter une nouvelle configuration locale.
Configurez la configuration locale comme suit (si une option n’est pas mentionnée ci-dessous, laissez-la par défaut) :
Activé
Coché
Nom
Appellez-le comme vous voulez (eg
HomeWireGuard
)Clé publique
Cette clé sera initialement vide ; elle sera remplie une fois la configuration sauvegardée.
Clé privée
Il s’agit d’une clé vide au départ ; elle sera remplie une fois la configuration sauvegardée.
Port d’écoute
51820 ou un port unique de numéro supérieur.
Adresse du tunnel
Par exemple, 10.10.10.1/24. Voir la note ci-dessous
Paires
Les paires seront spécifiés ici ; laissez ce champ vide jusqu’à ce que la configuration du point d’extrémité soit créée à l’étape 3.
Désactiver les Routes
Non coché
Note
L’adresse du tunnel doit être en notation CIDR et doit être une IP et un sous-réseau uniques pour votre réseau, comme s’il s’agissait d’une interface routée physiquement différente. Le sous-réseau doit être d’une taille appropriée pour inclure tous les clients pairs qui utiliseront le tunnel. Pour IPv4, il doit s’agir d’une adresse privée (RFC1918), par exemple 10.10.10.1/24. Pour IPv6, il peut s’agir d’une adresse ULA /64 unique ou d’une adresse GUA /64 unique dérivée de votre délégation de préfixe. N’utilisez pas d’adresse de tunnel qui soit un /32 (IPv4) ou un /128 (IPv6).
Note
Laissez le champ DNS Server vide (il apparaît si advanced mode est sélectionné). Sinon WireGuard écrasera la configuration DNS de DynFi Firewall.
Sauvegardez la configuration de l’hôte local, puis cliquez à nouveau sur Apply.
Ré-ouvrir la configuration de l’hôte local
Copiez la clé publique qui a été générée dans la configuration. Elle sera nécessaire pour l’appareil client - voir Étape 7 - Configurer le client WireGuard.
Sauvegardez ou Annulez pour quitter la configuration.
Étape 3 - Configuration du point d’extrémité (client)
Allez dans
VPN >> WireGuard >> Points de terminaison
Cliquez sur + pour ajouter un nouveau Point de terminaison
Configurez le point de terminaison comme suit (si une option n’est pas mentionnée ci-dessous, laissez-la par défaut) :
Activé
Coché
Nom
Appellez-le comme vous voulez (par exemple Phone)
Clé publique
Insérez la clé publique du client ; si nécessaire, passez à l’étape 7 pour générer la clé publique du client.
IP autorisées
Adresse IP unique du tunnel (IPv4 et/ou IPv6) du client - il doit s’agir d’une adresse /32 ou /128 (selon le cas) dans le sous-réseau configuré sur le pair local. Par exemple, 10.10.10.2/32
Sauvegardez la configuration du point de terminaison, puis cliquez à nouveau sur Apply.
Retournez maintenant à
VPN >> WireGuard >> Local
Ouvrez la configuration locale qui a été créée à l’étape 1 (par exemple HomeWireGuard)
Dans le menu déroulant Peers, sélectionnez le nouveau point de terminaison (par exemple Phone)
Sauvegardez à nouveau la configuration de l’homologue local, puis cliquez à nouveau sur Apply.
Répétez cette étape 3 pour autant de clients que vous souhaitez configurer.
Étape 4 - Allumer/redémarrer WireGuard
Activez WireGuard sous
VPN >> WireGuard >> General
si ce n’est pas déjà fait (cliquez sur Apply après avoir coché la case).Sinon, redémarrez WireGuard - vous pouvez le faire en le désactivant et en l’activant sous
VPN >> WireGuard >> General
(cliquez sur Apply après avoir décoché et coché la case).
Étape 5 - Affectation et routage
Note
Les étapes 5(a) et 5(b) ci-dessous peuvent ne pas être nécessaires dans votre cas. Strictement parlant, si vos clients n’ont l’intention d’utiliser le tunnel que pour accéder aux IP/sous-réseaux locaux derrière DynFi Firewall, alors aucune des deux étapes n’est nécessaire. Si vous avez l’intention d’utiliser le tunnel WireGuard pour accéder à des IPs en dehors du réseau local, par exemple depuis l’Internet public, alors au moins une des étapes, et peut-être les deux, seront nécessaires. Ceci est expliqué ci-dessous
Cependant, il est utile de compléter l’étape 5(a) de toute façon, pour les raisons expliquées ci-dessous.
Etape 5(a) - Assigner une interface à WireGuard (recommandé)
Warning
Cette étape n’est en aucun cas nécessaire dans le cas d’une installation de type “road warrior”. Cependant, il est utile de la mettre en oeuvre, pour plusieurs raisons :
Premièrement, elle génère un alias pour le(s) sous-réseau(x) du tunnel qui peut être utilisé dans les règles du pare-feu. Sinon, vous devrez définir votre propre alias ou au moins spécifier manuellement le(s) sous-réseau(x)
Deuxièmement, il ajoute automatiquement une règle NAT IPv4 sortante, qui permettra au tunnel d’accéder aux IPv4 en dehors du réseau local (si vous le souhaitez), sans qu’il soit nécessaire d’ajouter manuellement une règle.
Enfin, il permet de séparer les règles de pare-feu de chaque instance WireGuard (chaque dispositif wgX). Sinon, elles doivent toutes être configurées sur le groupe WireGuard par défaut créé par DynFi Firewall. Il s’agit plus d’une question d’esthétique organisationnelle que d’une question de fond.
Allez dans
Interfaces >> Assignments
Dans la liste déroulante à côté de “Nouvelle interface :”, sélectionnez le dispositif WireGuard (wg1 si c’est votre premier)
Ajoutez une description (par exemple HomeWireGuard)
Cliquez sur + pour l’ajouter, puis cliquez sur Sauvegarde.
Sélectionnez ensuite votre nouvelle interface dans le menu Interfaces.
Configurez-la comme suit (si une option n’est pas mentionnée ci-dessous, laissez-la par défaut) :
Activer
Checked (coché)
Verrouillage
Vérifié
Description
Même chose que sous Affectations, si cette case n’est pas déjà remplie
Type de configuration IPv4
Aucun Type de configuration IPv6 Aucune
Type de configuration IPv6
Aucun Type de configuration IPv6 Aucun
Note
Il n’est pas nécessaire de configurer les IPs sur l’interface. L’adresse du tunnel spécifiée dans la configuration locale de votre serveur WireGuard sera automatiquement assignée à l’interface une fois que WireGuard sera redémarré.
Sauvegardez la configuration de l’interface et cliquez sur Appliquer les changements.
Redémarrez WireGuard - vous pouvez le faire en l’éteignant et en le rallumant sous
VPN >> WireGuard >> General
(cliquez Appliquer après avoir décoché et coché la case).
Warning
Lors de l’assignation des interfaces, des passerelles peuvent être ajoutées à celles-ci. Ceci est utile pour équilibrer le trafic à travers plusieurs tunnels ou dans des scénarios de routage plus complexes.
Pour ce faire, allez dans Système >> Passerelles >> Unique
et ajoutez une nouvelle passerelle. Choisissez l’interface WireGuard appropriée et réglez la passerelle sur dynamique.
Note
Si le DNS Unbound est configuré avec toutes les interfaces enregistrées, il faut recharger le DNS Unbound pour que la nouvelle interface Wireguard soit ajoutée. Ceci est nécessaire pour que le DNS fonctionne à travers le tunnel VPN.
Etape 5(b) - Créer une règle NAT sortante
Note
Cette étape n’est nécessaire (le cas échéant) que pour permettre aux clients pairs d’accéder à des IPs Si une interface a déjà été assignée à l’étape 5(a), elle n’est pas nécessaire pour le trafic IPv4, et n’est nécessaire pour le trafic IPv6 que si le tunnel utilise des ULA IPv6 (les GUA IPv6 n’ont pas besoin de NAT). Dans de nombreux cas d’utilisation, cette étape peut donc être ignorée.
Allez dans
Firewall >> NAT >> Outbound
(Sélection de menu)Sélectionnez “Hybrid outbound NAT rule generation” si ce n’est pas déjà le cas, et cliquez sur Save puis Apply changes.
Cliquez sur + / Ajouter pour ajouter une nouvelle règle.
Configurez la règle comme suit (si une option n’est pas mentionnée ci-dessous, laissez-la par défaut) :
Interface
WAN
TCP/IP Version
IPv4 ou IPv6 (selon le cas)
Protocole
toutes
Inversion de la source
Décoché
Adresse source
Si vous avez assigné une interface à l’étape 5(a), sélectionnez l’alias généré pour le(s) sous-réseau(x) de l’interface (ex. `HomeWireGuard net` ) - voir la note ci-dessous si vous n’avez pas assigné cette interface.
Port source
n’importe lequel
Inversion de destination
Non vérifié
Adresse de destination
toutes
Port de destination
tous
Port de destination
tous
Translation / cible
Adresse de l’interface
Description
Ajouter une description si vous le souhaitez
Sauvegardez la règle, puis cliquez sur Appliquer les changements.
Redémarrez WireGuard - vous pouvez le faire en le désactivant et en l’activant sous
VPN >> WireGuard >> General
(cliquez sur Apply après avoir décoché et coché la case).
Note
Si vous n’avez pas assigné d’interface comme suggéré à l’étape 5(a), alors vous devrez spécifier manuellement les IPs/sous-réseaux sources pour le tunnel (par exemple, 10.10.10.0/24).
Il est probablement plus facile de définir un alias (via Firewall >> Aliases
) pour ces IP/sous-réseaux et de l’utiliser.
Si vous n’avez qu’une seule instance locale de WireGuard et qu’un seul point de terminaison WireGuard configuré, vous pouvez utiliser le réseau WireGuard par défaut, bien que cela ne soit généralement pas recommandé.
Étape 6 - Créer des règles de pare-feu
Ceci implique deux étapes - d’abord la création d’une règle de pare-feu sur l’interface WAN pour permettre aux clients de se connecter au serveur DynFi Firewall WireGuard, et ensuite la création d’une règle de pare-feu pour permettre aux clients d’accéder à toutes les IP auxquelles ils sont censés avoir accès.
Allez dans
Firewall >> Rules >> WAN
.Cliquez sur + Ajouter pour ajouter une nouvelle règle.
Configurez la règle comme suit (si une option n’est pas mentionnée ci-dessous, laissez-la par défaut) :
Action
Pass
Quick
Coché
Interface
WAN
Direction
in
Version IP/TCP
IPv4 ou IPv4+IPv6 (au choix, en fonction de la façon dont vous voulez que les clients se connectent au serveur ; notez que ceci est distinct du type de trafic autorisé dans le tunnel une fois établi).
Protocole
UDP
Source
Décoché
Source
toutes
Destination
Non vérifié
Destination
Adresse WAN
Port de destination
Le port WireGuard spécifié dans la configuration locale à l’étape 2.
Description
Ajouter une description si vous le souhaitez
Sauvegardez la règle, puis cliquez sur Appliquer les modifications.
Allez ensuite dans
Firewall >> Rules >> [Nom de l'interface assignée à l'étape 5(a)]
- voir la note ci-dessous si vous n’avez pas assigné cette interface.Cliquez sur Add pour ajouter une nouvelle règle.
Configurez la règle comme suit (si une option n’est pas mentionnée ci-dessous, laissez-la par défaut) :
Action
Pass
Quick
Coché
Interface
Il s’agit de l’interface sur laquelle vous configurez la règle (par exemple HomeWireGuard) voir la note ci-dessous.
Direction
In
TCP/IP Version
IPv4 ou IPv4+IPv6 (selon le cas)
Protocole
Any
Source
Décoché - Si vous avez assigné une interface à l’étape 5(a), sélectionnez l’alias généré pour le(s) sous-réseau(x) de l’interface* (ex. HomeWireGuard net ) - voir la note ci-dessous si vous n’avez pas assigné cette interface.
Destination
Non vérifié
Destination
Spécifiez les IP auxquelles les clients pairs doivent pouvoir accéder, par exemple “any” ou des IP/sous-réseaux spécifiques.
Plage de ports de destination
toutes
Description
Ajouter une description si vous le souhaitez
Sauvegardez la règle, puis cliquez sur Appliquer les modifications.
Note
Si vous n’avez pas assigné d’interface comme suggéré à l’étape 5(a), alors la seconde règle de pare-feu décrite ci-dessus devra être configurée sur le groupe WireGuard automatiquement créé qui apparaît une fois que la configuration locale est activée et que WireGuard est démarré.
Vous devrez également spécifier manuellement les IPs/sous-réseaux sources pour le tunnel. Il est probablement plus facile de définir un alias (via Firewall >> Aliases
) pour ces IP/sous-réseaux et de l’utiliser.
Si vous n’avez qu’une seule instance locale de WireGuard et qu’un seul point de terminaison WireGuard configuré, vous pouvez utiliser le WireGuard net par défaut, bien que cela ne soit généralement pas recommandé et peux prooquer un comportement inattendu.
Étape 7 - Configurer le client WireGuard
Note
La génération de clés peut être effectuée sur un appareil approprié avec WireGuard client tools. Pour générer une paire de clés privée et publique, il suffit de wg genkey | tee private.key | wg pubkey > public.key
.
Alternativement, les applications WireGuard qui peuvent être utilisées sur certains appareils peuvent automatiser la génération de clés pour vous.
La configuration du client va largement au-delà de la portée de ce guide puisqu’il y a un large éventail de cibles possibles (et autant de méthodes de configuration correspondantes). Un exemple de configuration d’un client (et d’un serveur) se trouve dans l’annexe. Les principaux éléments d’information requis pour configurer un client sont décrits ci-dessous :
[Interface]
Adresse
Réfère à la ou aux IP spécifiées comme IP autorisées dans la configuration du point final sur DynFi Firewall. Par exemple, 10.10.10.2/32.
Clé publique
Réfère à la clé publique qui (avec une clé privée) doit être générée manuellement ou automatiquement sur le client. La clé publique doit ensuite être copiée dans la configuration du point final sur DynFi Firewall pour le pair client concerné - voir l’étape 3.
DNS
Réfère aux serveurs DNS que le client doit utiliser pour le tunnel - voir note ci-dessous
[Peer]
Clé publique
Réfère à la clé publique générée sur DynFi Firewall. Copiez la clé publique à partir de la configuration locale sur DynFi Firewall - voir l’étape 2.
Endpoint
Réfère à l’adresse IP publique ou au nom de domaine résoluble publiquement de votre hôte DynFi Firewall, et au port spécifié dans la configuration locale sur DynFi Firewall.
IPs autorisés
Réfère au trafic (par IP/sous-réseaux de destination) qui doit être envoyé via le tunnel. Par exemple, si tout le trafic du client doit être envoyé via le tunnel, indiquez 0.0.0.0/0 (IPv4) et/ou ::/0 (IPv6).
Note
Si le(s) serveur(s) DNS spécifié(s) n’est (ne sont) accessible(s) que par le tunnel, ou si vous souhaitez qu’il(s) soit(ent) accessible(s) par le tunnel, assurez-vous qu’il(s) est (sont) couvert(s) par les AllowedIPs.
Annexe - Exemples de configuration
Warning
Ne pas réutiliser ces exemples de clés!
Un exemple de fichier de configuration client :
[Interface]
PrivateKey = 8GboYh0YF3q/hJhoPFoL3HM/ObgOuC8YI6UXWsgWL2M=
Adresse = 10.10.10.2/32, fd00:1234:abcd:ef09:10:2/128
DNS = 192.168.1.254, fd00:1234:abcd:ef09:1:254
[Peer]
Clé publique = OwdegSTyhlpw7Dbpg8VSUBKXF9CxoQp2gAOdwgqtPVI=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = DynFi Firewall.example.com:51820
Exemple de fichier de configuration du serveur :
[Interface]
Adresse = 10.10.10.1/24, fd00:1234:abcd:ef09:10:1/64
ListenPort = 51820
PrivateKey = YNqHwpcAmVj0lVzPSt3oUnL7cRPKB/geVxccs0C0kk0=
[Peer]
PublicKey = CLnGaiAfyf6kTBJKh0M529MnlqfFqoWJ5K4IAJ2+X08=
AllowedIPs = 10.10.10.2/32, fd00:1234:abcd:ef09:10:2/128