Configuration d'un serveur VPN WireGuard sur Android pour l'accès à distance

  • Configuration étape par étape d'un serveur WireGuard sous Linux avec clés, adresses IP et redirection du trafic correctement activées.
  • Création et gestion de pairs pour plusieurs clients, y compris l'application officielle WireGuard sur Android.
  • Intégration du DNS et des domaines locaux pour accéder aux périphériques LAN distants de manière pratique et sécurisée.
  • Bonnes pratiques de sécurité et dépannage des problèmes courants lors des déploiements d'accès à distance WireGuard.

Configuration d'un serveur VPN WireGuard sur Android pour l'accès à distance

Configurer son propre serveur VPN avec WireGuard et se connecter depuis Android est l'une des méthodes les plus simples pour obtenir Accès distant sécurisé à votre réseau domestique ou à votre VPSBien qu'à première vue, la présence de commandes, de clés et de fichiers de configuration puisse paraître intimidante, en réalité, le processus est assez mécanique si vous suivez les étapes calmement.

Ce guide vous apprendra à déployer un serveur WireGuard sous Linux (par exemple, sur un VPS avec Ubuntu) et à vous y connecter depuis votre appareil mobile Android pour pouvoir : Accédez à votre réseau local, votre NAS, vos caméras IP, vos routeurs ou naviguez sur le Web comme si vous étiez chez vous.De plus, il explique les concepts de base, les conseils de sécurité, des exemples de configuration et comment tirer parti des noms de domaine locaux pour rendre l'accès à distance pratique et fluide.

Qu'est-ce que WireGuard et pourquoi l'utiliser pour l'accès à distance depuis Android ?

WireGuard est un protocole VPN moderne qui se distingue par le fait d'être beaucoup plus simple, plus rapide et plus sûr Il se distingue des alternatives classiques comme OpenVPN ou IPsec par sa mise en œuvre minimaliste (quelques milliers de lignes de code) et son recours à des algorithmes de chiffrement de pointe tels que Curve25519, ChaCha20, Poly1305 ou BLAKE2s.

Leur philosophie est centrée sur la configuration étant aussi clairement que possible : chaque appareil possède une paire de clés publique/privéeIl vous suffit de définir quelques options (adresse IP interne, port, adresses IP autorisées…) pour obtenir un tunnel chiffré fonctionnel. Plus besoin de dizaines de paramètres obscurs ni de fichiers remplis de directives incompréhensibles.

En termes de performances, WireGuard fonctionne uniquement via UDP et peut même être intégré au noyau Linux, ce qui se traduit par faible latence, vitesses élevées et utilisation efficace des ressourcesCela est particulièrement perceptible lors d'une connexion depuis un appareil Android via des réseaux mobiles ou Wi-Fi de qualité variable.

Un autre avantage important est que WireGuard est Elle est multiplateforme et dispose d'applications officielles pour Android, iOS, Windows, macOS et Linux.Cela signifie que vous pouvez configurer le serveur sur un VPS ou votre routeur compatible et vous connecter depuis votre appareil mobile simplement en important un fichier .conf ou en scannant un code QR.

Prérequis avant la configuration du serveur WireGuard

Avant de commencer à saisir des commandes, il est conseillé de s'assurer d'avoir préparé les éléments de base nécessaires. Serveur VPN WireGuard accessible depuis AndroidCela vous fera gagner beaucoup de temps et vous évitera bien des erreurs bêtes en cours de route.

L'approche la plus courante consiste à utiliser un VPS ou un serveur Linux dédié, sur lequel vous installerez le service. Ubuntu 22.04 est l'une des options les plus pratiquescar elle inclut WireGuard dans ses dépôts officiels et qu'il existe une documentation abondante, mais n'importe quelle distribution moderne fera l'affaire.

Vous aurez également besoin d'un utilisateur disposant de privilèges d'administrateur, soit accès direct en tant qu'administrateur ou utilisateur disposant des droits sudoÉtant donné que vous allez installer des paquets, modifier les paramètres réseau et activer le transfert IP, il est important que vous ayez un accès SSH au serveur et que vous sachiez comment vous y connecter depuis votre ordinateur.

Enfin, vous aurez besoin d'un client pour vous connecter à ce serveur : il peut s'agir de votre Appareil mobile Android avec l'application officielle WireGuardmais aussi d'autres systèmes (Windows, macOS, Linux, iOS). Dans cet article, nous nous concentrerons plus particulièrement sur Android, même si vous constaterez que le fichier de configuration est pratiquement identique pour tous.

Configuration du serveur Linux : mise à niveau et installation de WireGuard

Une fois le VPS ou le serveur initialisé et Ubuntu 22.04 (ou une version similaire) installé, la première étape logique est : mettre à jour les packages système pour s'assurer que tout est à jour et que vous ne reproduisez pas d'erreurs ou de vulnérabilités connues.

Connectez-vous au serveur via SSH et exécutez :

apt update
apt upgrade -y

La première commande actualise la liste des paquets dans les dépôts, et la seconde met à jour les paquets déjà installés Ils seront automatiquement mis à jour vers leurs versions les plus récentes. Cela peut prendre un certain temps, surtout si le serveur est récent ou n'a pas été mis à jour depuis longtemps.

Une fois le système à jour, installez WireGuard depuis les dépôts officiels avec :

apt install -y wireguard

Cette commande installera le paquet principal, ainsi que des utilitaires tels que : wg et wg-quick et, si nécessaire, le module noyau requis sera chargé. Certains tutoriels montreront également explicitement l'utilisation de :

modprobe wireguard

Cette commande force simplement le chargement manuel du module WireGuard dans le noyau, ce qui peut s'avérer utile. si, pour une raison quelconque, le module ne s'est pas chargé automatiquement ou si vous vous trouvez dans un environnement un peu plus inhabituel.

Génération de clés et structure de configuration de base du serveur

Le cœur du système WireGuard réside dans sa gestion des clés, la prochaine étape est donc… créer la paire de clés privée et publique du serveurToute la configuration se trouve généralement dans le répertoire standard /etc/wireguard/.

Accédez à ce répertoire avec :

cd /etc/wireguard/

Pour protéger les clés, il est conseillé de commencer par ajuster le masque d'autorisation par défaut afin que les fichiers créés aient autorisations restrictives et ne sont pas lisibles par les autres utilisateurs du système. Cela se fait avec :

umask 077

Ensuite, générez la paire de clés du serveur de manière simple :

wg genkey > privatekey
wg pubkey < privatekey > publickey

L'archive PrivateKey La clé privée doit être conservée en lieu sûr et ne jamais être partagée, tandis que la clé publique peut être distribuée aux clients autorisés. Pour renforcer la sécurité, il est recommandé de définir explicitement les permissions de la clé privée.

chmod 600 privatekey

Si vous souhaitez afficher le contenu des clés à l'écran, vous pouvez utiliser une simple commande tail :

tail privatekey publickey

Vous obtiendrez ainsi un aperçu des chaînes de caractères que vous devrez ensuite copier dans le fichier de configuration wg0.conf et dans les configurations client. toujours respecter ce qui est public et ce qui est privé.

Création et modification du fichier wg0.conf sur le serveur

Configuration d'un serveur VPN WireGuard sur Android pour l'accès à distance

WireGuard est organisé par interfaces virtuelles, qui, par convention, sont généralement appelées wg0, wg1, etc.Chaque interface possède son propre fichier de configuration dans /etc/wireguard/. Dans notre cas, nous créerons wg0.conf pour l'interface principale.

Pour modifier le fichier, vous pouvez utiliser n'importe quel éditeur de texte en mode console, mais de nombreux tutoriels recommandent nano pour sa simplicité. Si vous ne l'avez pas installé, vous pouvez l'ajouter avec :

apt install -y nano

Une fois que vous l'avez, créez et ouvrez le fichier de configuration du serveur :

nano /etc/wireguard/wg0.conf

Avant de rédiger la configuration, il est conseillé de déterminer le nom de l'interface réseau physique par laquelle le serveur se connecte à Internet, car Vous en aurez besoin pour la règle NATPour ce faire, utilisez :

ip a

Sur de nombreux VPS, l'interface est appelée ens3, eth0, enp0s3 ou similaire, et c'est celle qui se verra attribuer l'adresse IP publique ou l'adresse IP interne par laquelle vous vous connectez via SSH.

Voici un exemple complet de bloc sur le serveur :


PrivateKey = <tu_clave_privada_servidor>
Address = 10.30.0.1/24
ListenPort = 51928
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <nombre_interfaz_salida> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <nombre_interfaz_salida> -j MASQUERADE

Dans cet exemple, vous attribuez l'adresse IP interne au serveur. 10.30.0.1/24 à l'intérieur du VPNVous écoutez sur le port UDP 51928 et ajoutez des règles iptables pour autoriser le transfert et appliquer la NAT lorsque l'interface wg0 est activée (PostUp) et supprimez ces règles lorsqu'elle est désactivée (PostDown).

N'oubliez pas qu'avec nano, vous pouvez économiser avec Ctrl + A et sortir avec Ctrl + XUne fois enregistré, le fichier wg0.conf servira de base pour l'ajout ultérieur des différents pairs (clients).

Activez le transfert IP et le service WireGuard sur le serveur

Pour que les clients connectés via WireGuard puissent accéder à Internet ou à d'autres réseaux situés derrière le serveur, il est essentiel activer le transfert de paquets IP au niveau système. Cela se fait en modifiant la configuration sysctl.

Dans de nombreux cas, le simple fait de lancer le projet suffit :

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p

Cela active le transfert de paquets pour IPv4 et IPv6 et recharge les paramètres du noyau avec `sysctl -p`. Il est important de ne pas oublier cette étape, car si le transfert de paquets est désactivé, Vous aurez un tunnel, mais vous ne pourrez pas accéder au réseau local ni à Internet. de la part des clients.

Vous pouvez désormais démarrer le service WireGuard associé à wg0 à l'aide de la commande wg-quick, ce qui simplifie grandement la gestion des interfaces :

systemctl start wg-quick@wg0

Pour que l'interface WireGuard démarre automatiquement à chaque démarrage du serveur, activez le service avec :

systemctl enable wg-quick@wg0

Pour vérifier s'il est actif, vous pouvez consulter l'état du service :

systemctl status wg-quick@wg0

Le statut devrait apparaître comme actif (en cours d'exécution)De plus, vous pouvez utiliser la commande :

wg

pour afficher des informations en temps réel sur l'interface, les clés, les pairs configurés et le trafic échangé via le tunnel.

Ajouter des clients au serveur : PC, appareils mobiles Android et autres appareils

Une fois le serveur opérationnel, vous devez ajouter les clients qui se connecteront en tant que pairs. Pour chaque appareil à connecter (PC, téléphone, tablette, routeur client, etc.). Vous devez générer une nouvelle paire de clés et lui attribuer une adresse IP au sein du réseau VPN.

Par souci de simplicité, de nombreux administrateurs génèrent les clés client directement sur le serveur, bien que, du point de vue de la sécurité, l'idéal serait de… créez-les directement sur l'appareil client. et ne transférer que la clé publique au serveur. Le processus étant identique, nous allons examiner le cas simple de la génération des clés dans /etc/wireguard/.

Par exemple, pour un ordinateur de bureau, vous pourriez faire :

wg genkey > mypc_privatekey
wg pubkey < mypc_privatekey > mypc_publickey

Et pour votre mobile Android :

wg genkey > myphone_privatekey
wg pubkey < myphone_privatekey > myphone_publickey

Avec un simple :

ls

Vous verrez tous les fichiers clés. Et avec :

tail mypc_publickey myphone_publickey

Vous pourrez voir leurs valeurs à l'écran. Ces clés publiques sont celles que vous collerez dans le fichier wg0.conf du serveur, dans des blocs distincts, en attribuant à chacun son adresse IP de tunnel.

Ouvrez à nouveau wg0.conf :

nano wg0.conf

et ajoutez les définitions client, par exemple :


PublicKey = <clave_publica_mipc>
AllowedIPs = 10.30.0.2/32

Clé publique =
IP autorisés = 10.30.0.3/32

Ces lignes indiquent que le pair dont la clé publique correspond à mypc_publickey utilisera l'adresse IP 10.30.0.2 au sein du VPN, et que L'application mobile Android utilisera la version 10.30.0.3.AllowedIPs avec /32 implique qu'il s'agit d'une adresse IP individuelle, ce qui est courant dans les configurations de voyageurs.

Enregistrez les modifications et redémarrez le service afin que le serveur puisse lire la nouvelle configuration :

systemctl restart wg-quick@wg0

Chaque fois que vous modifiez le fichier wg0.conf sur le serveur (par exemple, pour ajouter ou supprimer des pairs), vous devrez : recharger le service Pour que les modifications prennent effet, une nouvelle commande `systemctl status wg-quick@wg0` confirmera que tout est toujours au vert.

Création de fichiers de configuration pour les clients

Une fois les pairs enregistrés sur le serveur, l'étape suivante consiste à préparer les fichiers .conf que les clients utiliseront pour se connecter. Ces fichiers contiennent les clé privée du client, son adresse IP du tunnel, DNS et les détails du serveur (clé publique, adresse IP et port).

En suivant cet exemple, pour le PC, vous pouvez créer un fichier mypc.conf dans /etc/wireguard/ :

nano mypc.conf

et écrivez quelque chose de similaire à :


PrivateKey = <clave_privada_mipc>
Address = 10.30.0.2/32
DNS = 8.8.8.8

Clé publique =
Point d'extrémité = :51928
IP autorisés = 0.0.0.0/0
PersistantKeepalive = 20

Cette section décrit le côté client : la clé privée du périphérique, son adresse IP sur le réseau WireGuard et le serveur DNS qu’il utilisera lorsque le tunnel est actif. Le serveur est défini dans la section `defines`, en spécifiant… votre clé publique, l'adresse IP ou le domaine par lequel vous pouvez y accéder et le port que vous avez configuré précédemment (51928 dans cet exemple).

Configurer AllowedIPs = 0.0.0.0/0 redirige tout le trafic client via le VPN (pratique pour masquer votre véritable adresse IP ou utiliser systématiquement l'adresse IP du serveur). Si vous souhaitez uniquement accéder à certains sous-réseaux distants, vous pouvez limiter l'accès, par exemple, à 10.30.0.0/24 ou 192.168.0.0/24, selon la topologie de votre réseau.

Le paramètre PersistentKeepalive maintient un échange périodique de paquets afin d'éviter la fermeture de la connexion lorsque le client se trouve derrière un NAT ou un pare-feu qui bloque les connexions inactives. Une valeur de 20 à 25 secondes est généralement optimale. pour les clients mobiles connectés en 4G/5G.

Configuration spécifique au client Android avec WireGuard

Pour Android, l'approche est exactement la même que pour PC : le mobile a besoin de sa propre clé privée, qui lui est attribuée. L'adresse IP du tunnel et la clé publique du serveur sont référencées.Vous pouvez générer les clés sur le serveur lui-même (comme nous l'avons fait précédemment) ou directement depuis l'application Android.

En suivant la procédure précédente, vous devriez déjà avoir créé les fichiers `myphone_privatekey` et `myphone_publickey` dans `/etc/wireguard/`. Il vous reste à enregistrer la configuration client, que vous importerez ensuite sur l'appareil mobile. Voici un exemple de fichier pour Android :

nano myphone.conf

et à l'intérieur :


PrivateKey = <clave_privada_mitelefono>
Address = 10.30.0.3/32
DNS = 8.8.8.8

Clé publique =
Point d'extrémité = :51928
IP autorisés = 0.0.0.0/0
PersistantKeepalive = 20

Ce fichier contient tout ce qui est nécessaire au fonctionnement de l'application officielle WireGuard sur Android. créer le tunnel et négocier la prise de contact avec le serveurLa difficulté réside ici dans le transfert sécurisé de ce fichier vers le téléphone, en évitant autant que possible de laisser des traces dangereuses en cours de route.

En laboratoire, vous pourriez configurer un serveur web (par exemple, Apache), copier le fichier myphone.conf à la racine du système et le télécharger depuis le navigateur Android. Cependant, en situation réelle, il est plus conseillé de… Utilisez des méthodes telles que l'USB, des outils de synchronisation cryptés ou, encore mieux, un code QR. généré par le serveur lui-même.

Pour ce faire, vous pouvez installer l'utilitaire qrencode sur le serveur :

apt install -y qrencode

et depuis le répertoire de configuration, exécutez :

qrencode -t ansiutf8 -r myphone.conf

Cette commande affichera un code QR sous forme de caractères dans le terminal, que vous pourrez scanner. directement depuis l'application WireGuard sur Android Utilisez l'option « Scanner un code QR » pour ajouter un nouveau tunnel. Vous n'aurez ainsi pas besoin d'envoyer le fichier par e-mail ni de le télécharger sur des services externes.

Configuration de l'accès LAN distant, du DNS et des noms de domaine locaux

Outre la création du tunnel de base, ce que vous souhaitez souvent, c'est pouvoir y accéder depuis votre mobile Android. périphériques LAN du serveur, comme un NAS, une caméra IP, un routeur ou un serveur interne, en utilisant leurs noms de domaine locaux au lieu de mémoriser des adresses IP.

Certains routeurs faisant office de serveurs WireGuard (par exemple, certaines marques intégrant un serveur VPN à leur micrologiciel) disposent d'une section dédiée à la gestion de ces noms locaux. Dans le panneau d'administration web, vous trouverez généralement des options telles que : RÉSEAU → DNS → Modifier les hôtes, à partir duquel vous pouvez définir des paires IP/nom (par exemple, 192.168.1.50 nas-casa.local).

Si votre routeur ne résout pas correctement les noms de domaine locaux, vous pouvez ajouter manuellement des entrées pour les appareils que vous souhaitez rendre accessibles via le VPN et appliquer les modifications. Cela garantit que le routeur lui-même et les clients utilisant son DNS pourront résoudre le problème. résolvez correctement ces noms internes.

Les serveurs WireGuard intégrés aux routeurs, dotés de différentes versions de firmware, possèdent souvent des paramètres spécifiques permettant l'accès distant au réseau local. Par exemple, certaines interfaces proposent des options telles que « Autoriser l'accès distant au sous-réseau LAN » ou « Accès distant au réseau local » qu'il convient d'activer dans la configuration du serveur WireGuard.

L'activation de cette option rend le routeur et les appareils du réseau local accessibles via le tunnel, vous permettant ainsi de les atteindre depuis le réseau client (par exemple, votre réseau local domestique secondaire ou votre réseau mobile Android). les services internes du routeur serveur et les équipements du réseau local principal.

Dans de nombreux cas, ces routeurs permettent d'exporter le profil de configuration WireGuard pour une utilisation sur des clients externes. Depuis l'onglet « Serveur WireGuard », vous pouvez généralement générer un fichier .conf contenant déjà l'adresse IP du tunnel, le DNS correct (pointant vers l'adresse IP de l'interface tunnel du serveur) et tous les paramètres nécessaires pour se connecter depuis un autre routeur client ou l'application mobile.

Vérification, dépannage et sécurité dans WireGuard

Une fois le tunnel configuré et la configuration importée dans Android, la première vérification consiste à s'assurer que le poignée de main L'opération s'est déroulée avec succès. L'application WireGuard sur votre appareil mobile affichera l'état du tunnel et les horodatages des dernières négociations.

Sur le serveur, exécutez la commande suivante :

wg

Il vous indiquera, pour chaque pair, la clé publique, l'adresse IP du point de terminaison depuis lequel il se connecte, la dernière négociation et les octets transférés. Si la dernière activité est vide ou très ancienne, il s'agit probablement du client. Il se peut qu'il n'y ait pas de connexion, ou qu'il y ait un problème de pare-feu ou de redirection de port..

En cas d'absence de connexion, vérifiez que le port UDP configuré (par exemple, 51928 ou 51820) est correctement ouvert dans le pare-feu du serveur et sur les routeurs intermédiaires. Notez que si votre serveur se trouve derrière un routeur domestique, vous devrez… redirection du port UDP de WireGuard vers l'adresse IP interne du serveur.

Si le tunnel est opérationnel mais que vous n'avez pas accès à Internet depuis le client, vérifiez que le transfert de paquets (net.ipv4.ip_forward et net.ipv6.conf.all.forwarding) est activé et que la règle NAT dans iptables a été correctement appliquée à l'interface de sortie appropriée (eth0, ens3, etc.).

Les problèmes DNS se manifestent généralement par l'impossibilité de pinguer des adresses IP spécifiques, mais Les noms de domaine ne sont pas résolus.Dans ce cas, vérifiez que dans le fichier de configuration du client (Android, PC, routeur client), le champ DNS pointe vers le serveur correct : il peut s’agir d’un DNS public (8.8.8.8, 1.1.1.1) ou de l’adresse IP du tunnel serveur si vous souhaitez qu’il agisse également comme résolveur.

En matière de sécurité, au-delà de la robustesse cryptographique du protocole, les points suivants sont fondamentaux :

  • Protéger les clés privées et ne les partagez jamais.
  • Limitez autant que possible le Adresses IP autorisées de chaque pair afin qu'ils n'aient accès qu'à ce qui est strictement nécessaire.
  • Utilisez des ports UDP non standard pour réduire le bruit provenant des scanners automatiques.
  • Maintenez le système et, bien sûr, WireGuard lui-même à jour.
  • Appliquer des règles de pare-feu supplémentaires à limiter qui peut accéder au port WireGuard sur votre serveur.

Cet ensemble de mesures rend votre VPN avec WireGuard non seulement rapide et fonctionnel, mais aussi robuste face aux attaques courantes qui exploitent les erreurs de configuration ou la négligence dans la gestion des clés.

Grâce à toutes ces étapes, vous disposerez d'un serveur WireGuard correctement configuré, avec accès distant depuis Android et d'autres systèmes, trafic chiffré, navigation complète via tunnel et possibilité d'accéder à vos appareils personnels ou professionnels via des noms de domaine internes ; bref, une solution plutôt élégante pour Emportez votre filet partout où vous allez sans se casser la tête.

Ouvrir l'application VPN sur le smartphone
Article connexe:
Les VPN les plus sécurisés pour les appareils Android

Vous pourriez être intéressé par :
Comment supprimer les virus sur Android
Suivez-nous sur Google Actualités