Protéger sa connexion sans abonnement
Un abonnement VPN rassure, surtout loin de chez soi. Ce mémo sépare ce que le tunnel protège de ce qu’il laisse passer, compare les services qui tiennent une politique sans journaux, puis monte un réseau privé sur une machine déjà payée. Chaque couche répond à un risque nommé. On garde celles qui correspondent au déplacement réel.
Avant d'appliquer ce mémo
Les manipulations décrites ici peuvent entraîner une perte de données ou l'indisponibilité d'un service. Avant d'en appliquer une seule : faites une sauvegarde complète et vérifiez qu'elle se restaure, travaillez d'abord sur un environnement sans enjeu, et n'exécutez aucune commande dont vous ne comprenez pas l'effet.
Ce mémo est un contenu pédagogique de portée générale. Il ne tient pas compte de votre situation, n'a pas valeur de conseil professionnel, et son application relève de votre seule responsabilité. Avertissement et limites d'usage
1. Trois endroits, trois menaces Le même portable, des réseaux qui ne se valent pas
Le cas que je prends pour la suite est fréquent chez un indépendant. Le travail se fait presque toujours à la maison, sur une fibre. Les déplacements sont rares, et ils mènent chez des proches. Le portable se branche alors au partage de connexion du téléphone, en 4G ou en 5G, pour éviter le Wi-Fi de l’endroit. Un seul appareil porte les accès qui comptent. L’ancien poste et le second téléphone dorment dans un tiroir.
Dans ce cadre, « sécuriser Internet » désigne trois situations différentes. Les mélanger est ce qui fait payer un abonnement toute l’année pour un risque qui n’existe que quelques jours.
| Endroit | Qui peut voir le trafic avant qu’il ne soit chiffré | Ce qui est raisonnable |
|---|---|---|
| Fibre à la maison | Le fournisseur d’accès, et les équipements de la box. | Les sites sont déjà en HTTPS. Le VPN masque les noms de domaine au fournisseur d’accès, et les lui retire pour les confier à l’opérateur du tunnel. Le gain est mince si l’on n’a rien à cacher à son opérateur. |
| Partage de connexion du téléphone | L’opérateur mobile. Le mot de passe du partage écarte les voisins radio, s’il est long et si le chiffrement du partage est WPA3 ou, à défaut, WPA2. | Le lien est à vous. Le VPN ajoute une couche entre le portable et une sortie que vous choisissez. Il est utile. Il est moins urgent que sur un Wi-Fi d’hôtel. |
| Wi-Fi ou prise murale que vous ne tenez pas | Le gérant du lieu, et quiconque est sur le même segment, y compris un point d’accès qui porte le même nom que celui de l’hôtel. | C’est le cas pour lequel un tunnel se justifie. La prise Ethernet de la chambre retire l’écoute radio. Elle laisse les autres clients sur le même réseau. |
2. Ce que le tunnel protège HTTPS a déjà fait une partie du travail
Entre le navigateur et un site en HTTPS, le contenu de la page, les mots de passe et les cookies sont chiffrés. Un voisin sur le Wi-Fi du café ne lit pas le message. Ce qu’il peut encore voir, sans tunnel, c’est surtout le nom du site : la requête DNS, et souvent le nom envoyé en clair au début de la connexion TLS (le SNI), tant que le site ne le chiffre pas. Il voit aussi tout ce qui ne passe pas par HTTPS : un vieux protocole, un outil en ligne de commande mal réglé, une application qui parle en clair.
Le VPN enveloppe l’ensemble dans un second tunnel, du portable jusqu’à un serveur de sortie. Le réseau local ne voit plus qu’un seul flux, vers ce serveur. Le nom des sites devient visible pour l’opérateur de la sortie, et cesse de l’être pour le café et pour le fournisseur d’accès du lieu. On déplace la confiance. On ne la supprime pas.
Un kill switch, ou coupe-circuit, ferme la fuite du moment où le tunnel tombe. Sans lui, la panne du VPN remet le trafic sur le réseau local, souvent sans que rien ne s’affiche à l’écran. C’est le réglage qui sépare un tunnel décoratif d’un tunnel sur lequel on peut s’appuyer.
1 Le tunnel tient ceci
L’écoute et la modification du trafic par le réseau local. Le masquage des destinations vis-à-vis de ce réseau et du fournisseur d’accès du lieu. Une adresse de sortie stable, utile quand un hébergeur n’accepte l’administration à distance que depuis une adresse connue.
2 Le tunnel ne tient pas ceci
Le hameçonnage, un mot de passe réutilisé, une session déjà volée, un paquet piégé, un ordinateur déjà compromis. Le filtrage de domaines malveillants, quand il existe, est un service DNS ajouté au tunnel. Il s’arrête dès que le VPN est déconnecté, donc presque tout le temps si l’on travaille chez soi sans le lancer.
La suite du mémo juge les outils sur ces deux colonnes, et sur une troisième : qui peut être obligé de dire ce que vous avez fait. Une politique « sans journaux » ne vaut que si quelqu’un d’extérieur l’a regardée, ou si une saisie réelle est repartie les mains vides. Le pays du siège donne le cadre juridique. Il ne remplace pas cette preuve.
3. Les services, avec leurs prix Relevés le 1er octobre 2026, sur les pages des fournisseurs
Les montants bougent avec les promotions. Ce qui suit nomme la page lue et la date. Un devis, ou une résiliation, se refait sur la page du jour.
| Service | Prix | Appareils en même temps | Où la confiance est placée |
|---|---|---|---|
| Proton VPN Plus, renouvellement | 83,88 € par an après la période d’appel. L’appel public est à 47,88 € les 12 premiers mois, ou 71,76 € les 24 premiers mois. Le mois sans engagement est à 9,99 €. | 10 | Proton AG, Suisse. Applications ouvertes. Audit Securitum en mai 2026, le cinquième, sur l’absence de journaux. Le rapport de transparence compte 458 réquisitions suisses refusées faute de logs, dont 47 au premier semestre 2026. |
| Proton VPN Free | 0 € | 1 | La même société et la même politique sans journaux. La page tarifs limite le gratuit à une vitesse présentée comme moyenne, et à des serveurs dans une dizaine de pays tirés au sort. NetShield, Secure Core, le choix du pays, le P2P et le streaming sont dans l’offre payante. |
| Mullvad | 5 € par mois TTC, le même prix au mois et à l’année, soit 60 €. Le paiement en cryptomonnaie est affiché à −10 %. | 5 | Mullvad VPN AB, Suède. Compte réduit à un numéro, espèces acceptées. Applications ouvertes, audits publiés en 2025 et 2026. En 2023, une perquisition suédoise est repartie sans données à saisir. WireGuard seul depuis le 15 janvier 2026. |
| IVPN Standard | 60 $ par an. L’offre Pro, à 10 appareils, est à 100 $ par an. | 5, ou 10 en Pro | Privatus Limited, Gibraltar. Inscription sans adresse de courriel. Audit Cure53 chaque année depuis 2019. |
| AirVPN | 49 € l’année, lu le 1er octobre 2026 sur airvpn.org. Le mois est à 7 €. | 5 connexions. La fiche d’aide, mise à jour le 11 juillet 2024, le dit encore, et le support le confirmait en janvier 2025. | Italie, depuis 2010. Paiement crypto direct. Je n’ai pas trouvé d’audit indépendant de la politique sans journaux. |
| Windscribe, gratuit puis Pro | 0 € avec 10 Go par mois si le courriel est confirmé, 2 Go sinon. Pro : 69 $ par an, lu sur leur centre d’aide en 2026. | Pas de plafond d’appareils annoncé sur le gratuit | Windscribe Limited, Canada. Le gratuit suffit pour une journée légère. Une après-midi de visio mange le quota. La barre de preuve est sous Proton et Mullvad. |
| Cloudflare WARP | 0 €, sans plafond de données annoncé | Autant d’appareils que l’on veut installer | Cloudflare, États-Unis. Le trafic du café est chiffré jusqu’à leur réseau. On ne choisit pas le pays de sortie. Je n’ai pas trouvé d’audit indépendant propre au tunnel, distinct des engagements publiés sur le résolveur 1.1.1.1. |
| Tailscale, plan Personal | 0 $ | Appareils illimités, jusqu’à 6 utilisateurs. Les sorties Internet et les routeurs de sous-réseau sont inclus. Le plan est réservé à un usage non commercial. | Le chiffrement du flux est WireGuard, d’appareil à appareil. La coordination (qui est en ligne, quelles clés) est chez Tailscale Inc. Le contenu ne passe par eux que si deux machines ne se joignent pas en direct et empruntent un de leurs relais. |
| Headscale, sur une machine à vous | 0 € de logiciel. La machine est un serveur déjà loué, ou il n’y a pas de montage. | Autant que la machine en accepte | Vous, et l’hébergeur de la machine. Le bail est à votre nom. Une réquisition vise une personne identifiable, là où Proton et Mullvad peuvent répondre qu’ils n’ont pas le journal. |
Les marques à gros volume, NordVPN, Surfshark et leurs voisines, descendent souvent sous 40 € par an sur un engagement long. Elles coûtent moins. Sur le code ouvert, les audits répétés et la retenue de données, elles sont en dessous de Proton et de Mullvad. Elles répondent à un autre critère que celui de ce mémo.
4. Où chaque famille gagne, où elle lâche La sécurité d’abord, le prix ensuite
| Famille | Elle tient quand | Elle lâche quand |
|---|---|---|
| Proton payant | On veut un coupe-circuit déjà fait, un protocole déguisé pour les réseaux qui bloquent le VPN (Stealth), une double sortie (Secure Core), 10 appareils, et une société suisse auditée. | L’usage réel est un portable, quelques jours par an. On paie alors le réseau mondial pour un tunnel que WireGuard sait faire seul. |
| Proton gratuit | Un seul appareil sensible, et l’on accepte de ne pas choisir le pays. La politique sans journaux est celle du payant. | Deux appareils doivent être couverts en même temps. Le filtrage malware et le choix de la sortie manquent. |
| Mullvad ou IVPN | On veut le même niveau de preuve que Proton, un prix sans promotion piège, et un compte qui n’a pas d’adresse de courriel. Mullvad a en plus une saisie réelle à son actif. | Il faut 6 appareils. Le plafond est à 5, et l’offre IVPN à 10 appareils dépasse le renouvellement Proton. |
| AirVPN | On veut payer moins, garder le choix technique, et payer en cryptomonnaie sans intermédiaire. | On cherche une preuve externe de l’absence de journaux. Je ne l’ai pas trouvée. |
| WARP | Le seul adversaire est le Wi-Fi du lieu, et l’on accepte que Cloudflare voie les destinations. | On voulait sortir Proton pour une confidentialité équivalente. Le pays, l’audit du tunnel et le choix de la sortie ne suivent pas. |
| Tailscale hébergé | Le besoin principal est d’atteindre ses serveurs sans les exposer, et le plan personnel couvre la maison. | On ne veut aucune société sur le chemin des clés. La coordination reste chez Tailscale. |
| Headscale | On a déjà un serveur joignable, on sait le tenir, et le but est autant d’apprendre que d’arrêter un prélèvement. | On voulait disparaître. La sortie est une adresse stable, liée à un bail. On voulait aussi zéro maintenance : les mises à jour, le certificat et le coupe-circuit deviennent les vôtres. |
Mullvad ferme son résolveur DNS public le 2 novembre 2026 et finance Quad9 à la place. Le DNS interne du VPN Mullvad, lui, continue pour les clients connectés. Qui utilisait les adresses publiques Mullvad dans son réseau doit migrer avant cette date.
5. Trancher selon le déplacement réel Le cas du début, appliqué
1 Rester chez Proton, en gratuit
Un seul poste compte, les sorties sont rares, et l’on veut encore une société auditée. On installe le gratuit sur ce poste. On perd le choix du pays, NetShield et Secure Core. On garde la politique sans journaux. Le téléphone, sur son propre forfait, n’a pas besoin du même tunnel pour le motif « café ».
2 Mullvad, si cinq appareils suffisent
On veut un service tenu par d’autres, avec une preuve au moins aussi forte, et un prix fixe de 60 €. Dès qu’un sixième appareil entre, la limite bloque, là où Proton en prend dix.
3 Headscale, pour apprendre et pour arrêter le prélèvement
C’est le montage des sections suivantes. Il couvre le portable, le téléphone, et les serveurs que l’on veut retirer d’Internet. Il demande une machine déjà joignable depuis l’extérieur.
4 Ne rien mettre, à la maison
Sur la fibre, le temps passé à tenir un tunnel protège moins qu’un gestionnaire de mots de passe, une double authentification, et des mises à jour qui tournent. Le mémo sur les mots de passe et les accès traite cette couche, qui arrête des attaques que le VPN n’effleure pas.
6. Les couches, du plus près au plus loin Chaque ligne répond à un risque, et se retire si le risque est absent
Un montage « à zéro euro » empile des contrôles gratuits. Aucune ligne ne couvre la suivante. On lit le risque, on décide si on l’a, on pose la couche ou on la laisse.
| Risque | Couche | Ce qu’elle coûte |
|---|---|---|
| Le portable est volé, éteint | Le disque est chiffré (LUKS sur Ubuntu, FileVault, BitLocker). La phrase de passe est longue. | Déjà dans l’installateur d’Ubuntu si on l’a cochée. À activer avant d’y mettre les clés. |
| Le portable est volé en veille | On éteint la machine en quittant un lieu que l’on ne tient pas. En veille, la clé de chiffrement est en mémoire. Le cadenas du disque est ouvert. | Une habitude. |
| Un mot de passe fuite d’un site | Un mot de passe différent par service, et une double authentification sur le courriel, l’hébergeur, la banque, le dépôt de code. | Un gestionnaire, souvent déjà installé. Le mémo cité plus haut détaille l’ordre. |
| Un domaine malveillant est ouvert chez soi, VPN coupé | Un résolveur qui refuse les domaines connus pour servir des malwares. Quad9, fondation suisse, le fait sur 9.9.9.9 et 149.112.112.112, en DNS chiffré sur tls://dns.quad9.net. NextDNS ajoute des profils par appareil : 300 000 requêtes par mois gratuites, ou 19,90 $ par an. |
Un réglage DNS sur le poste et sur le téléphone. Il travaille aussi les jours sans tunnel. |
| Un correctif de sécurité ne part pas, parce que le partage de connexion est « mesuré » | Ubuntu saute les mises à jour automatiques sur une connexion mesurée. Le fichier /etc/apt/apt.conf.d/50unattended-upgrades contient Unattended-Upgrade::Skip-Updates-On-Metered-Connections. Le passer à "false" laisse sortir les correctifs, quelques mégaoctets, et garde le gros des mises à jour pour la fibre. |
Une ligne, puis la lecture du journal /var/log/unattended-upgrades/unattended-upgrades.log. Une option activée qui n’écrit jamais « All upgrades installed » n’a pas tourné. |
| Un service du portable répond sur le réseau du lieu | Le pare-feu local refuse l’entrant. Les outils de développement (bases, Docker, panneaux) écoutent sur 127.0.0.1, jamais sur toutes les interfaces. |
Déjà disponible : ufw sous Ubuntu. |
| Le SSH ou le panneau d’un serveur est ouvert au monde | Le serveur rejoint le réseau Headscale. L’administration n’écoute plus que sur l’adresse de ce réseau. Le port public se ferme après un essai concluant, depuis une seconde session. | Le temps d’installation de la section 7. Le serveur s’administre sans rester ouvert au monde entier. |
| Le Wi-Fi du lieu lit ou modifie le trafic | Le portable envoie tout son trafic vers le nœud de sortie Headscale, et une règle de pare-feu interdit le reste tant que cette sortie est exigée. | Le même serveur. On n’active la sortie que hors de la maison. |
| Un point d’accès porte le nom d’un réseau déjà vu | Le profil du lieu inconnu ne se reconnecte pas seul (connection.autoconnect no), et on le supprime en partant. Le partage du téléphone a un mot de passe long, saisi une fois par appareil. |
Trois commandes nmcli, le jour où le cas se présente. |
| La caméra ou le micro s’ouvrent sans qu’on le voie | Un cache physique sur la caméra, ou la coupure dans le BIOS. Un bouton logiciel se rétablit par n’importe quel programme de l’utilisateur. Couper le module du micro emporte souvent les haut-parleurs avec lui : le BIOS est le verrou qui reste. | Un cache à un euro, ou une case dans le firmware. |
| Le serveur de coordination est perdu | Une copie de /etc/headscale/config.yaml, de la base SQLite, et de la clé du relais, restaurée une fois sur une machine d’essai. Le mémo sur les sauvegardes fixe la méthode. |
Quelques fichiers, hors de la machine. |
Le mémo sur l’auto-hébergement rappelle la question qui reste après le tableau : qui répare le dimanche où la sortie ne répond plus. Si la réponse est « personne », Mullvad ou le gratuit Proton sont le bon arrêt, et les couches du tableau qui ne dépendent pas du serveur se posent quand même.
7. Installer Headscale Le logiciel est gratuit, la machine doit déjà être joignable
Headscale est le serveur de coordination de Tailscale, publié pour un usage personnel ou une petite structure. Les clients officiels Tailscale s’y connectent à la place de tailscale.com. Le trafic utile va en WireGuard d’une machine à l’autre. Headscale ne voit pas le contenu : il distribue les clés et dit qui a le droit de parler à qui.
La version stable au 23 septembre 2026 est la 0.29.4. Elle demande un client Tailscale au moins en 1.80.0. Les commandes ci-dessous sont celles de la documentation stable ce jour-là (headscale.net/stable). La ligne de commande a déjà changé une fois : l’ancienne forme headscale routes enable est devenue headscale nodes approve-routes. Le jour de l’installation, on rouvre cette page avant de coller.
Il faut une machine Debian 12 ou Ubuntu 22.04 au minimum, avec une adresse publique que le téléphone peut joindre, un nom de domaine, et le port 443 libre. Une box à la maison dont l’opérateur partage l’adresse avec d’autres abonnés ne peut pas tenir ce rôle. Un serveur déjà loué le peut. On garde sous la main la console de l’hébergeur : c’est elle qui rouvre la machine si une règle de pare-feu coupe le SSH.
Poser le paquet officiel
Le paquet .deb publié par le projet crée l’utilisateur, le service systemd et un fichier de configuration. J’écarte les dépôts tiers qui promettent « la dernière version » : ajouter une source de paquets, c’est lui donner le droit d’installer ce qu’elle veut sur le serveur.
Télécharger le paquet annoncé sur la page des publications, puis l’installer
# La version se lit sur https://github.com/juanfont/headscale/releases/latest # Pas de « v » dans HEADSCALE_VERSION. L’architecture : dpkg --print-architecture HEADSCALE_VERSION="0.29.4" HEADSCALE_ARCH="amd64" wget --output-document=headscale.deb \ "https://github.com/juanfont/headscale/releases/download/v${HEADSCALE_VERSION}/headscale_${HEADSCALE_VERSION}_linux_${HEADSCALE_ARCH}.deb" sudo apt install ./headscale.deb headscale version
Dire à quelle adresse les clients vont le trouver
Le fichier est /etc/headscale/config.yaml. L’exemple commenté, livré avec le paquet, est dans /usr/share/doc/headscale/examples/config-example.yaml. On y règle server_url sur https://vpn.exemple.fr, avec le nom réel. Deux façons tiennent le HTTPS. Soit Headscale écoute lui-même le 443 et obtient le certificat (la section TLS de l’exemple, et la 0.29.4 corrige un blocage de renouvellement ACME). Soit un reverse proxy déjà en place termine le TLS et transmet à 127.0.0.1:8080, et listen_addr reste sur cette adresse locale. On choisit la façon déjà connue sur la machine, et une seule.
Démarrer, puis créer l’utilisateur du réseau
sudo systemctl enable --now headscale sudo systemctl status headscale sudo headscale users create maison
Dans la section derp du même fichier d’exemple, on active le serveur embarqué, et l’URL https://controlplane.tailscale.com/derpmap/default se retire. Sans ce retrait, deux machines qui ne se joignent pas en direct empruntent un relais de Tailscale : le contenu reste chiffré, mais le fait que ces deux machines se parlent repasse par eux. Le relais embarqué écoute en UDP, souvent sur 3478. Ce port doit être ouvert, comme le 443.
Enrôler le portable
Le client vient de Tailscale. C’est le point de confiance qui reste : le binaire est le leur, le serveur de coordination est le vôtre. Le script d’installation officiel est https://tailscale.com/install.sh. Ensuite, tailscale version doit annoncer au moins 1.80.0. Le paquet de la distribution est parfois plus vieux : dans ce cas il ne convient pas à Headscale 0.29.4.
Sur le portable, pointer le client vers votre serveur
sudo tailscale up --login-server https://vpn.exemple.fr
Le client affiche une clé de machine. On l’enregistre côté serveur, une fois :
Sur le serveur, accepter la machine
sudo headscale nodes register --user maison --key CLE_AFFICHEE_PAR_LE_CLIENT sudo headscale nodes list
La clé d’invitation (headscale preauthkeys create --user maison) évite cette aller-retour. Par défaut elle expire en une heure et ne sert qu’une fois. Une clé réutilisable se traite comme un mot de passe : quiconque la possède entre dans le réseau. On évite de la laisser dans l’historique du shell.
Sur Android, l’application officielle Tailscale (Play Store ou F-Droid) a, dans Comptes, l’entrée « Use an alternate server ». On y met la même URL. L’enregistrement se termine par la même commande nodes register, ou par une clé d’invitation. L’iPhone suit la page Apple de la documentation Headscale. On n’enrôle pas les appareils qui dorment dans un tiroir : tant que la politique est ouverte, chaque nœud peut parler aux autres.
8. La sortie Internet, et l’essai qui prouve qu’elle tient On ne résilie l’abonnement qu’après
Le nœud de sortie est en général le même serveur. Il doit router le trafic des autres. Headscale renvoie pour cela à la documentation Tailscale, et les deux lignes suivantes sont celles que cette documentation utilise depuis des années. On les vérifie le jour même si la page a bougé.
Autoriser le routage, annoncer la sortie, l’approuver
# Sur le serveur qui va servir de sortie echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-forward.conf echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-forward.conf sudo sysctl --system sudo tailscale up --login-server https://vpn.exemple.fr --advertise-exit-node # Puis, toujours sur le serveur, lire l’identifiant et approuver sudo headscale nodes list-routes sudo headscale nodes approve-routes --identifier 1 --routes 0.0.0.0/0
L’identifiant 1 dans l’exemple est celui de la ligne affichée par list-routes. On recopie le nombre lu. Approuver 0.0.0.0/0 approuve aussi la route IPv6. Sans cette approbation, le client peut « voir » une sortie que le réseau refuse encore.
Sur le portable, envoyer le trafic par cette sortie, puis vérifier
sudo tailscale set --exit-node NOM_DU_SERVEUR curl -4 --max-time 10 https://api.ipify.org
L’adresse affichée doit être celle du serveur. On recommence après avoir retiré la sortie (sudo tailscale set --exit-node=) : l’adresse doit redevenir celle du lieu. Les deux résultats, notés, sont le compte rendu. Un seul des deux ne prouve rien.
Chez soi, on retire la sortie. Le réseau privé continue de servir pour atteindre les serveurs, sans détourner toute la navigation. En déplacement, on la remet avant d’ouvrir une session de travail. Le partage de connexion du téléphone ne dispense pas de ce geste sur le portable.
curl doit échouer, et l’adresse du lieu ne doit pas apparaître. Tant que cet essai n’est pas écrit quelque part, on n’a pas de coupe-circuit. Une règle de pare-feu qui n’autorise l’Internet que par l’interface tailscale0, le temps du déplacement, est ce test rendu permanent. On l’écrit avec une session de secours ouverte, jamais en dernier geste avant de fermer le portable dans un train.Si une adresse de sortie de l’ancien VPN est autorisée chez un hébergeur pour le SSH, elle se remplace par l’adresse du nouveau serveur avant la résiliation. Sinon l’administration à distance casse le jour où l’ancien tunnel s’arrête, et le symptôme ressemble à une panne du serveur.
Fermer ce qui n’a plus de raison d’être public
Une fois le portable et le serveur dans le réseau, le SSH du serveur peut n’écouter que sur son adresse Headscale (le préfixe 100.64.0.0/10). On le vérifie depuis le portable, par cette adresse, avant de retirer le port 22 de l’adresse publique. L’authentification par mot de passe SSH se coupe au même moment, après avoir confirmé qu’une clé fonctionne. Le détail des clés est dans le mémo sur les accès.
Sans fichier de politique, Headscale laisse chaque nœud parler à chaque nœud. Pour une personne seule et deux machines, c’est tenable. Le jour où un appareil de test entre, on pose un fichier huJSON et on indique son chemin dans la configuration (la clé est dans l’exemple, sous la politique). La forme minimale, reprise de la documentation, limite le réseau à l’utilisateur maison et lui laisse la sortie Internet :
Une politique courte, à adapter au nom d’utilisateur réel
{
"grants": [
{
"src": ["maison@"],
"dst": ["maison@"],
"ip": ["*"]
},
{
"src": ["maison@"],
"dst": ["autogroup:internet"],
"ip": ["*"]
}
]
}
9. Tenir le serveur Le dimanche où ça ne répond plus fait partie du montage
- Les mises à jour. Le paquet officiel se met à jour en téléchargeant la publication suivante, pas en ajoutant un dépôt inconnu. On lit le guide de migration de la version avant de remplacer le binaire. Une base SQLite d’une version ne se relit pas toujours avec la suivante.
- La copie.
/var/lib/headscale/db.sqlite,/etc/headscale/config.yaml, et la clé privée du relais embarqué. On restaure la copie sur une machine d’essai une fois, et on note la date. Le mémo des sauvegardes explique pourquoi une archive jamais ouverte ne compte pas. - Le certificat. Un HTTPS expiré empêche les clients de joindre la coordination. Les machines déjà enrôlées peuvent continuer un temps en direct. Un téléphone neuf, lui, ne rentre plus.
- Le journal. Headscale n’a pas à écrire les sites visités. On vérifie que le serveur de sortie ne garde pas, lui, un journal de connexions détaillé « pour dépanner ». Ce journal, sur une machine à votre nom, est exactement ce qu’une réquisition viendrait chercher.
- L’hôte. L’hébergeur voit le trafic qui sort de sa machine, parce que c’est lui qui porte l’adresse. Choisir le pays du serveur, c’est choisir le droit qui s’applique à cette adresse. La Suisse de Proton n’est pas incluse dans le prix nul.
10. Ce qui reste ouvert Le lecteur retire les couches qui ne sont pas les siennes
Headscale sur un serveur à soi égale un VPN commercial contre le réseau du lieu : le café, ou le partage de connexion, ne voit plus les destinations. Il est en retrait dès que l’adversaire est une autorité qui peut interroger l’hébergeur, ou un attaquant qui prend le serveur. Il est en retrait aussi dans un hôtel qui bloque l’UDP : WireGuard sur son port habituel ne passe pas, là où le protocole Stealth de Proton est fait pour ce cas. Le contournement existe, il se maintient, et il n’a pas sa place dans un premier montage.
Aucune des couches de ce mémo n’arrête un message qui vous convainc de donner un code, ni un poste déjà ouvert par un logiciel piégé. Ces deux risques-là se traitent par les accès, les mises à jour, et le refus d’exécuter ce qu’un courriel demande. Le tunnel vient après, et seulement là où le réseau n’est pas le vôtre.
Pour le cas du début, je poserais Quad9 et les mises à jour même sur connexion mesurée tout de suite, chez moi comme dehors. Je monterais Headscale sur un serveur déjà loué, j’y ferais entrer le portable et le téléphone, et je fermerais le SSH public des serveurs. J’activerais la sortie Internet seulement en déplacement, après l’essai du coupe-circuit. Je laisserais l’ancien poste et le second téléphone hors du réseau tant qu’ils ne servent pas. Je résilierais l’abonnement payant une fois les essais notés. Si le serveur devait être tenu par personne, je resterais sur Proton gratuit, limité à ce portable, et je garderais les couches qui ne demandent pas une machine.
Mémo publié par NET&PRO à titre pédagogique. Information générale, sans garantie d'exactitude, d'exhaustivité ni d'actualité, et sans valeur de conseil personnalisé. Avertissement et limites d'usage
Dans le glossaire
Les mots croisés au fil de ce mémo, définis en une phrase. Ils sont soulignés dans le texte : un clic y mène directement.
Mémos liés
Mots de passe et accès de A à Z
Comment un mot de passe se casse vraiment, ce qui fait qu'il tient, à quoi sert un gestionnaire et lequel choisir sans rien payer.
Lire le mémoLa Cybersécurité de A à Z
De Zero Trust à l'IA offensive : menaces 2026, fondamentaux, attaques modernes, cas Mythos, IA défensive et offensive, outils.
Lire le mémoHéberger ses outils soi-même
Les trois niveaux d'auto-hébergement, les huit services qui valent vraiment le déplacement et les cinq qui ne le valent pas, le coût réel une fois le temps compté.
Lire le mémoSur le blog
Le faire vous-même
Le logiciel est gratuit. Il se pose sur un serveur déjà loué, avec un nom de domaine et une adresse publique. Le mémo donne l’ordre des couches et les commandes de Headscale 0.29.4.
- Le temps réel : une demi-journée la première fois, si le nom et le certificat sont déjà en main. Ensuite, 10 minutes le jour du départ pour activer la sortie.
- Les outils gratuits : Headscale, le client Tailscale pointé vers votre serveur, Quad9 pour le filtrage DNS, le pare-feu fourni par le système.
- Le piège : fermer le SSH public avant d’avoir ouvert une seconde session par le réseau privé. La console de l’hébergeur est le filet.
Si vous préférez me le confier
Sur ce sujet, voici ce que je fais pour mes clients. Les formules disent ce qui est compris, ce qui ne l'est pas, et ce que ça coûte au bout de trois ans.