Accès WireGuard à la maison : serveur, pair, pare-feu et vérification du tunnel
Périmètre
Section intitulée « Périmètre »Cette page vérifie :
- la création d’une interface serveur WireGuard
wg0sur OpenWrt ; - l’ajout d’un pair client ;
- le placement de
wg0dans la zone de pare-feu LAN ; - la poignée de main, le ping de l’IP du tunnel et LuCI à travers le tunnel.
Elle ne vérifie pas :
- la redirection de port UDP WAN publique/le pare-feu ;
- le DDNS/nom de domaine ;
- l’itinérance d’un client téléphone/Windows ;
- le transfert/NAT vers tout le LAN.
Cela dépend de l’environnement de déploiement ; ce test sur le LAN n’en tient pas lieu.
Topologie
Section intitulée « Topologie »Client 192.168.1.251 │ vmbr5 (lab LAN) ▼OpenWrt VM 200 192.168.1.2 wg0 10.10.0.1/24, UDP 51820 │ └── tunnel 10.10.0.0/24 client wg0 10.10.0.2/24Dans un véritable accès depuis la maison, le client est sur internet ; le WAN d’OpenWrt doit transférer/autoriser l’UDP 51820. Ce laboratoire ne couvre que le côté LAN.
Préparation
Section intitulée « Préparation »apk add wireguard-tools kmod-wireguardwg --versioncat /proc/modules | grep wireguardCe laboratoire : wireguard-tools v1.0.20260223 ; module wireguard chargé.
Attenduwg existe et le module wireguard est chargé.
umask 077wg genkey > /tmp/wg-server.keywg pubkey < /tmp/wg-server.key > /tmp/wg-server.pubcat /tmp/wg-server.pub # only the public key goes to the clientLe client génère aussi sa propre paire de clés ; n’envoyez jamais sa clé privée au serveur. Le serveur n’a besoin que de la clé publique du client.
AttenduLa clé privée reste sur l'appareil ; la clé publique va au client.
Configurer le serveur
Section intitulée « Configurer le serveur »uci set network.wg0=interfaceuci set network.wg0.proto='wireguard'uci set network.wg0.private_key='<server-private-key>'uci set network.wg0.listen_port='51820'uci set network.wg0.addresses='10.10.0.1/24'uci set network.wg0.auto='1'
uci set network.wg0_client=wireguard_wg0uci set network.wg0_client.public_key='<client-public-key>'uci set network.wg0_client.allowed_ips='10.10.0.2/32'uci set network.wg0_client.persistent_keepalive='25'
uci commit network/etc/init.d/network restartLes noms comptent :
- section d’interface
wg0, type de pairwireguard_wg0; les suffixes doivent correspondre ; - dans ce laboratoire, nommer l’interface
wga fait signalerproto: nonepar netifd et le périphériquewg0était absent ; la renommer enwg0a corrigé le problème. Utilisez wg0.
Vérifiez :
wg showip -4 addr show wg0ubus call network.interface.wg0 statusAttendunetifd voit proto=wireguard et wg0 a son adresse.
uci show firewall | grep -E "zone.*name|zone.*network"uci add_list firewall.@zone[0].network='wg0'uci commit firewall/etc/init.d/firewall reload@zone[0] était la zone LAN dans ce laboratoire ; votre index peut différer — trouvez la section avec name='lan'.
Après l’ajout de wg0 au LAN, le client pouvait envoyer un ping à 10.10.0.1 et accéder à LuCI.
AttenduL'UDP 51820 est joignable et les IP du tunnel peuvent communiquer.
Vérification minimale du client
Section intitulée « Vérification minimale du client »La configuration du client est décrite dans la page 022. Sur le serveur :
wg showUne fois la poignée de main du client effectuée, le serveur doit afficher :
peer: <client-public-key> endpoint: 192.168.1.251:44421 allowed ips: 10.10.0.2/32 latest handshake: ... transfer: ...Client de ce laboratoire :
- poignée de main il y a 3 secondes ;
transfer 124 B received, 180 B sent;- ping de
10.10.0.14/4 ; - HTTP
http://10.10.0.1/a renvoyé LuCI.
Ce qu’il faut encore pour un vrai WAN
Section intitulée « Ce qu’il faut encore pour un vrai WAN »- IP publique/redirection de port : UDP 51820 du WAN → OpenWrt ;
- le pare-feu en entrée du WAN autorise cet UDP ;
- DDNS/nom d’hôte fixe ;
- l’
Endpointdu client utilise l’adresse publique, pas 192.168.1.2 ; - pour accéder à tout le LAN, les
allowed_ipsdu pair côté serveur et lesAllowedIPsdu client doivent inclure le préfixe du LAN, ainsi que le routage de retour/NAT ; - ne confondez pas « l’IP du tunnel répond au ping » avec « tout le LAN de la maison est joignable ».
Défaillances courantes
Section intitulée « Défaillances courantes »wg0 absent / proto none
Section intitulée « wg0 absent / proto none »- le nom de la section d’interface et le suffixe du type de pair ne correspondent pas ;
wireguard-tools/kmod-wireguardmanquants ;- le réseau n’a pas été redémarré ;
- vérifiez
wg show,ubus status,logread.
Pas de poignée de main
Section intitulée « Pas de poignée de main »- clés publiques du client et du serveur inversées ;
- mauvais endpoint/port ;
- le pare-feu n’autorise pas l’UDP ;
- permissions/contenu de la clé privée incorrects ;
- WireGuard ne dépend pas de la synchronisation de l’horloge pour les poignées de main, mais une mauvaise clé échoue quand même.
Le ping dans le tunnel échoue
Section intitulée « Le ping dans le tunnel échoue »allowed_ipsn’inclut pas l’IP du tunnel du pair ;- l’interface n’a pas d’adresse / est inactive ;
- zone de pare-feu ;
- la route du client envoie l’endpoint lui-même dans le tunnel (boucle).
L’IP du tunnel répond mais le LAN est injoignable
Section intitulée « L’IP du tunnel répond mais le LAN est injoignable »- les AllowedIPs du client n’incluent pas le préfixe du LAN ;
- le serveur n’a pas de transfert/NAT/route de retour ;
- le transfert du pare-feu n’est pas autorisé ;
- ne confondez pas un tunnel qui fonctionne avec un LAN qui fonctionne.
Essai en laboratoire E2 (2026-10-20)
Section intitulée « Essai en laboratoire E2 (2026-10-20) »- Environnement : VM OpenWrt 25.12.6 x86 n° 200 ;
wg010.10.0.1/24, UDP 51820 ; client netns PVE10.10.0.2/24. - Serveur :
wg showlistait le pair, la poignée de main a réussi, transfert 1,47 KiB/1,90 KiB ;wg0actif. - Client : poignée de main, ping du tunnel 4/4, HTTP 200 (LuCI).
- Non testé : redirection de port/pare-feu WAN, DDNS, téléphone/Windows, transfert LAN, NAT/route de retour.
- Recette :
tests/recipes/wireguard-server-25.12.md.
Sources et relecture
Section intitulée « Sources et relecture »- Il s’agit d’un E2 partiel : le serveur côté LAN et le tunnel ont été testés ; le vrai WAN, les clients mobiles et le transfert LAN ne l’ont pas été.
- Les clés privées restent sur les appareils ; ne les mettez jamais dans le dépôt, les captures d’écran ou un chat.
- Aucun relecteur indépendant ; les conclusions se limitent à cet environnement VM/netns.
Sources
Notes indépendantes sur OpenWrt. Chaque page précise le firmware, l’appareil, le gestionnaire de paquets et le retour arrière.
Icônes : Solar by 480 Design, CC BY 4.0