Créer un VPN entre deux PC : la méthode WireGuard, et les alternatives quand la box bloque
Pour relier deux PC par un tunnel chiffré, installez WireGuard sur chacun, échangez les clés publiques et ouvrez un port UDP (51820 par défaut) sur la box de la machine qui écoute. Si aucune des deux n'est joignable depuis Internet, à cause d'un CGNAT ou d'une connexion 4G, passez par un réseau mesh type Tailscale ou ZeroTier qui relaie la liaison sans aucune redirection de port.
VPN entre deux PC ou VPN commercial : deux produits différents
La requête « créer un VPN » recouvre deux besoins opposés. Le premier consiste à faire sortir son trafic par le serveur d'un fournisseur (Proton, Mullvad, NordVPN) pour masquer son adresse. Le second, celui qui vous amène ici, consiste à construire un lien privé entre votre PC fixe et votre portable, pour atteindre un partage de fichiers, une base de données locale ou une session Bureau à distance sans exposer le service sur Internet. Aucun abonnement n'est nécessaire dans ce second cas.
Le terme technique est VPN point à point, ou tunnel site à site quand il relie deux réseaux entiers. Chaque machine reçoit une seconde adresse IP, prise dans un sous-réseau privé que vous choisissez librement, par exemple 10.10.0.1 et 10.10.0.2. Les deux PC se voient ensuite comme s'ils étaient branchés sur le même switch, à 10 mètres ou à 800 kilomètres.
Autre confusion fréquente : le VPN n'affiche pas d'écran distant. Il transporte, RDP ou VNC affiche. Vous montez d'abord le tunnel, puis vous vous connectez à 10.10.0.2:3389 comme si la machine était sur votre réseau local.
Choisir la méthode selon qui est joignable depuis Internet
Tout se joue sur une seule question : au moins une des deux machines peut-elle recevoir un paquet UDP entrant venu de l'extérieur ? Si oui, WireGuard en direct suffit et vous n'avez besoin de personne d'autre. Sinon, il faut un tiers qui relaie.
Regardez l'adresse WAN affichée par votre box. Si elle tombe entre 100.64.0.0 et 100.127.255.255, c'est le bloc 100.64.0.0/10 réservé par la RFC 6598 aux NAT opérateurs : la redirection de port ne servira à rien. Même situation sur une box 4G ou un partage de connexion mobile. Le test rapide consiste à comparer l'IP affichée dans l'interface de la box avec celle que renvoie curl ifconfig.me. Si les deux diffèrent, un NAT opérateur se trouve entre vous et Internet.
Le tunnel SSH figure dans le tableau pour mémoire. Il fonctionne, mais il fait passer du TCP dans du TCP : les deux couches retransmettent en même temps dès que la ligne perd des paquets, et le débit s'effondre au lieu de se dégrader doucement. À réserver au dépannage ponctuel.
Évitez enfin la fonction « Connexion entrante » de Windows accessible par ncpa.cpl : elle crée un serveur PPTP. L'authentification MS-CHAPv2 a été cassée publiquement en 2012, Microsoft a publié l'avis de sécurité 2743314 pour déconseiller le protocole, et macOS ne sait plus s'y connecter depuis Sierra en 2016.
| Méthode | Transport | Port par défaut | Redirection de port nécessaire |
|---|---|---|---|
| WireGuard | UDP | 51820 | Oui, côté machine qui écoute |
| OpenVPN | UDP, TCP possible | 1194 | Oui |
| IKEv2 / IPsec | UDP | 500 et 4500 | Oui |
| Tailscale (mesh WireGuard) | UDP, repli HTTPS | 41641, relais DERP en 443 | Non |
| ZeroTier | UDP | 9993 | Non |
| Tunnel SSH (ssh -w) | TCP | 22 | Oui |
WireGuard entre un PC Linux et un PC Windows : la configuration minimale
WireGuard est intégré au noyau Linux depuis la version 5.6 (mars 2020) et dispose d'un client officiel signé pour Windows et macOS. Le même fichier .conf fonctionne sur les trois systèmes. Le chiffrement repose sur Curve25519 pour l'échange de clés, ChaCha20-Poly1305 pour les données et BLAKE2s pour le hachage, sans aucun choix d'algorithme à faire au moment de la configuration.
Sur la machine A, celle qui écoutera, générez la paire de clés : wg genkey | tee cle-privee | wg pubkey > cle-publique. Une clé fait 32 octets bruts, soit 44 caractères en base64. Chaque machine garde sa clé privée et ne transmet que la publique. Répétez l'opération sur la machine B.
Fichier wg0.conf sur A :
[Interface]
PrivateKey =
Fichier wg0.conf sur B :
[Interface]
PrivateKey =
AllowedIPs est le champ le plus mal compris de WireGuard. Il joue deux rôles à la fois : table de routage en sortie (quels paquets partent dans le tunnel) et filtre en entrée (quelles adresses sources sont acceptées de ce pair). Un paquet venu de B avec une adresse source hors de la plage déclarée est jeté sans message d'erreur, ce qui donne des tunnels « montés mais muets ». Pour relier deux machines, un /32 de chaque côté suffit. Mettre 0.0.0.0/0 enverrait tout votre trafic Internet chez l'autre PC, ce qui répond à un autre besoin.
Démarrage : sudo wg-quick up wg0 sous Linux, ou « Ajouter un tunnel vide » puis Activer dans le client Windows. Contrôlez avec wg show. La ligne latest handshake doit indiquer quelques secondes. Si elle reste absente alors que les compteurs transfer montrent des octets envoyés et zéro reçu, le paquet UDP n'atteint pas la machine A : redirection manquante sur la box, pare-feu, ou CGNAT. La poignée de main est renégociée toutes les 120 secondes tant que du trafic circule.
Sur un serveur Windows, ouvrez le port en ligne de commande : netsh advfirewall firewall add rule name=WireGuard dir=in action=allow protocol=UDP localport=51820. Et gardez PersistentKeepalive = 25 côté client : sans ce paquet vide toutes les 25 secondes, la table NAT de la box oublie l'association au bout d'une trentaine de secondes d'inactivité, et la machine derrière le NAT devient injoignable jusqu'à ce qu'elle reparle la première.
- Vérifier le handshake : wg show
- Voir passer les paquets côté serveur : sudo tcpdump -ni any udp port 51820
- Relancer proprement un tunnel : wg-quick down wg0 && wg-quick up wg0
Les pannes qui reviennent à chaque installation
Le MTU arrive en tête. Le tunnel monte, le ping passe, mais SSH se fige juste après la bannière et certaines pages HTTPS ne se chargent jamais. L'encapsulation coûte 60 octets sur un transport IPv4 (20 d'en-tête IP, 8 d'UDP, 32 pour l'en-tête interne et le tag Poly1305) et 80 en IPv6. wg-quick retranche 80 au MTU détecté, d'où la valeur 1420 sur une liaison Ethernet à 1500. Sur une ligne PPPoE à 1492, descendez plus bas, 1412 par exemple. Le test : ping -M do -s 1372 10.77.0.2 sous Linux, ping -f -l 1372 sous Windows. Si 1372 passe et 1400 échoue, ajoutez MTU = 1400 dans la section [Interface].
Deuxième panne, le conflit de sous-réseaux. Les deux PC sont derrière deux box qui utilisent toutes les deux 192.168.1.0/24, et le routage devient ambigu dès que vous voulez atteindre autre chose que l'IP du tunnel elle-même. Choisissez pour le tunnel une plage qui n'existe nulle part chez vous : 10.77.0.0/24 plutôt que 192.168.0.0/24 ou 192.168.1.0/24, valeurs d'usine de la quasi-totalité des box françaises.
Troisième panne, le faux négatif au ping. Le pare-feu Windows bloque les demandes d'écho ICMPv4 entrantes par défaut sur le profil Public, et une interface VPN est très souvent classée Public. Le ping vers le PC Windows échoue alors que le tunnel fonctionne parfaitement. Testez un port réel avant de conclure : Test-NetConnection 10.77.0.2 -Port 3389.
Dernier piège, propre aux IP dynamiques. Si votre Endpoint est un nom DynDNS, wg-quick ne le résout qu'au démarrage du tunnel. Quand l'opérateur change votre IP publique, la configuration reste accrochée à l'ancienne adresse jusqu'à un down suivi d'un up. Le dépôt wireguard-tools fournit un script reresolve-dns.sh prévu pour être lancé par cron dans ce cas.
Ce que ce tunnel ne fait pas
Votre adresse IP publique ne change pas. Tant que AllowedIPs se limite au sous-réseau du tunnel, seul le trafic destiné à l'autre PC est chiffré ; votre navigation continue de sortir par votre box avec votre IP habituelle. Pour faire sortir tout le trafic par l'autre machine, il faut AllowedIPs = 0.0.0.0/0 côté client, plus le routage et le NAT côté serveur (net.ipv4.ip_forward = 1 et une règle MASQUERADE).
Le débit est plafonné par le débit montant de la machine qui héberge, jamais par le chiffrement. Une fibre à 300 Mb/s en émission laisse de la marge ; une ligne ADSL à 1 Mb/s montant limitera tout transfert depuis cette machine à cette valeur, quel que soit le protocole choisi. ChaCha20-Poly1305 ne sature pas un processeur récent.
Le tunnel ne remplace pas non plus un service. Il vous donne une route et une adresse, ensuite c'est à RDP (3389), VNC (5900), SMB (445) ou SSH (22) de travailler. L'intérêt de la manoeuvre est là : vous n'exposez plus aucun de ces ports sur Internet. Seul 51820/UDP est ouvert, et il ne répond strictement rien à qui ne possède pas la bonne clé publique, ce qui le rend invisible aux scans de ports classiques.
Testez vos connaissances
Quel port UDP WireGuard utilise-t-il par convention ?
Score : 0 sur 3
Questions fréquentes
Faut-il payer un abonnement VPN pour relier deux PC ?
Non. WireGuard, OpenVPN et ZeroTier sont des logiciels libres, et un lien entre deux machines ne consomme aucun service tiers si l'une des deux est joignable depuis Internet. Les abonnements payants servent à faire sortir votre trafic par les serveurs d'un fournisseur, ce qui est un autre usage.
Les deux PC sont derrière un CGNAT, comment faire ?
Deux options. La première : un réseau mesh comme Tailscale ou ZeroTier, où les deux machines ouvrent une connexion sortante vers un plan de contrôle qui tente ensuite une liaison directe par perçage NAT, avec repli sur un relais si le NAT est symétrique. La seconde : louer un petit VPS avec IP publique et le désigner comme Endpoint WireGuard commun aux deux PC. Le VPS ajoute un aller-retour de latence mais reste sous votre contrôle.
Est-ce que ça marche entre Windows, macOS et Linux ?
Oui, le même fichier .conf est accepté par les clients officiels des trois systèmes, avec les mêmes noms de champs. Une seule différence pratique : sous Linux wg-quick applique automatiquement le MTU et les routes, tandis que le client graphique Windows attend que vous saisissiez la valeur MTU dans le fichier si la valeur calculée ne convient pas.
Comment savoir si le tunnel est vraiment monté ?
wg show donne la réponse en une ligne. Un latest handshake daté de moins de deux minutes signifie que les deux pairs se sont authentifiés. Regardez ensuite les compteurs transfer : des octets envoyés mais zéro reçu indiquent que vos paquets partent sans réponse, donc un blocage en entrée côté distant, pas un problème de clés.
Et Hamachi, qui était la solution classique pour jouer en réseau local ?
Il fonctionne toujours et reste simple, mais son offre gratuite plafonne le nombre de machines par réseau et le produit évolue peu. Pour le même usage, Tailscale et ZeroTier reposent sur des piles cryptographiques plus récentes et savent basculer entre liaison directe et relais selon la qualité du NAT.
À lire aussi
chiffrement asymetrique · box internet · cidr · changer adresse ip