lun. Avr 22nd, 2024
Headscale pour les débutants : la configuration VPN simplifiée
Rate this post

Configurer un VPN peut sembler une tâche ardue, mais gérer votre propre réseau est maintenant facile.

Headscale pour les débutants : la configuration VPN simplifiée

Que faut-il pour être anonyme sur Internet ? De nombreux fournisseurs en sont sûrs : vous avez besoin d’un VPN. Tout le monde dit qu’ils ne se connectent pas et tout le monde sait que les autres sont pires. Aujourd’hui, vous apprendrez à configurer vous-même facilement un VPN sans même avoir à renoncer aux nombreux avantages que la technologie apporte.

Headscale – Tailscale, mais auto-hébergé

Le réseau que nous avons mis en place fonctionne sur Headscale, une réimplémentation open-source de Tailscale. N’hésitez pas à donner aux créateurs une étoile sur GitHub ou un café.

Headscale connecte vos appareils directement les uns aux autres (si possible) via Wireguard, mais peut également établir des connexions via des relais. Cependant, la configuration est aussi compacte que possible et de nombreuses fonctionnalités avancées ne sont pas couvertes. Si vous êtes intéressé, merci de nous le faire savoir sur le forum.

La liste de colisage :

  • un serveur Linux (un petit VPS, ou un Raspberry Pi fera l’affaire)
  • un domaine (facultatif, mais très utile)
    • fonctionne également avec le DNS dynamique (par exemple avec DuckDNS, NoIP ou DynDNS.dk)
  • parfois

Ce tutoriel sert de guide et remplace en aucun cas la documentation officielle. En cas de questions, la documentation doit toujours être consultée en premier !

Configurer des serveurs

Afin de ne pas perdre le focus, je suppose que vous avez déjà configuré un serveur avec les bases (pare-feu et SSH). Si ce n’est pas le cas, c’est le moment idéal pour vous rattraper. Ne vous inquiétez pas, le tutoriel ne s’enfuira pas.

Préparation

Si Docker et Docker Compose ne sont pas encore installés, vous pouvez également le faire maintenant. Les instructions officielles pour la distribution de votre choix se trouvent sur le site Web de Docker.

Voir aussi  Game Boy Color piraté - Pokemon en danger

Si nous avons maintenant un serveur avec Docker, nous pouvons commencer à configurer les services réels. Dans ce didacticiel, nous allons commencer par créer un dossier sous /srv create dans lequel se trouvent nos fichiers. Voici les commandes avec le préfixe $ fournis s’ils doivent être exécutés en tant qu’utilisateur normal, et avec #s’ils doivent être exécutés en tant que root.

Nous changeons ensuite le groupe propriétaire de ce dossier en dockerauquel votre utilisateur connecté doit également appartenir, et autorisez les membres de ce groupe à accéder en écriture au répertoire.

# mkdir -p /srv/headscale
# chown :docker /srv/headscale
# chmod g+w /srv/headscale

Créer une pile logicielle

Commençons par aller dans le répertoire que nous venons de créer et créons quelques sous-dossiers dont nous avons besoin :

$ cd /srv/headscale
$ mkdir -p headscale/config headscale/data caddy/config caddy/data

Créons maintenant un fichier appelé docker-compose.yml, qui décrit notre pile logicielle. Nous utilisons ici Caddy comme serveur Web, car il nécessite très peu de maintenance et n’a pas de dépendances majeures.

version: '3.5'

services:
  headscale:
    image: headscale/headscale:latest
    command: headscale serve
    restart: unless-stopped
    volumes:
      - ./headscale/config:/etc/headscale
      - ./headscale/data:/var/lib/headscale
  headscale-ui:
    image: ghcr.io/gurucomputing/headscale-ui:latest
    restart: unless-stopped
  caddy:
    image: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./caddy/config:/config
      - ./caddy/data:/data
      - ./caddy/Caddyfile:/etc/caddy/Caddyfile

Ceux qui y prêtent attention ont sûrement déjà remarqué que le dossier caddy/Caddyfile n’existe pas encore. Changeons cela maintenant en les créant avec le contenu suivant :

vpn.meine-domain.de {
    reverse_proxy /web* http://headscale-ui:80
    reverse_proxy * http://headscale:8080
}

Le domaine vpn.meine-domain.de doit bien sûr être remplacé par votre propre domaine, qui doit déjà pointer vers le serveur à ce stade.

Configurer un VPN

Avant de démarrer notre VPN, nous devons le configurer. Nous pouvons économiser beaucoup de travail en acceptant simplement la configuration par défaut :

$ curl -o headscale/config/config.yml https://github.com/juanfont/headscale/raw/main/config-example.yaml

Ici, nous n’avons qu’à ajuster quelques détails pour obtenir un VPN simple (remplacez la ligne avec le moins devant par la ligne avec le plus devant) :

- server_url: http://127.0.0.1:8080
+ server_url: https://vpn.meine-domain.de

- listen_addr: 127.0.0.1:8080
+ listen_addr: 0.0.0.0:8080

-   base_domain: example.com
+   base_domain: vpn.meine-domain.de

Et avec cela, nous serions prêts à partir. Démarrer la pile avec la commande

$ docker compose up -d

Accéder à l’interface web

Afin de pouvoir utiliser l’interface web, nous avons besoin d’une clé API. Nous pouvons facilement le créer en exécutant la commande suivante :

$ docker compose exec headscale headscale apikeys create

Nous pouvons entrer la clé qui nous est délivrée dans l’interface sous Paramètres> Clé API Headscale. Il est préférable de s’assurer que la clé est à nouveau valide avec « Tester les paramètres du serveur ». L’URL Headscale ne devrait pas avoir besoin d’être ajustée.

Voir aussi  MyBoerse.bz attire ses visiteurs dans un piège d'abonnement coûteux !

Si le navigateur affiche des messages d’erreur au début, c’est normal. Cela se produit pendant que le serveur génère une clé SSL et ne devrait prendre que quelques secondes.

Ajouter des appareils

Chaque appareil doit être attribué à un utilisateur, alors créez d’abord un utilisateur !

Le client open source Tailscale doit être installé sur chaque client. Vous pouvez découvrir comment cela fonctionne pour votre système d’exploitation sur le site Web de l’entreprise.

Pour ajouter un appareil, le serveur de connexion doit être commuté sur le serveur configuré avant de commencer. Vous trouverez la procédure à suivre dans la documentation de ces systèmes d’exploitation :

  • les fenêtres
  • Android
  • iOS
  • macOS (visitez https://vpn.meine-domain.de/apple)
  • Linux/BSD (en utilisant le --login-server paramètres)

L’appareil vous dirigera ensuite vers une URL basée sur le modèle

https://vpn.meine-domain.de/register/nodekey:[hexadezimal]

La dernière partie (nodekey:…) est celui qui vous concerne. Copiez-le et collez-le sous Appareil > Nouvel appareil > Clé d’appareil et sélectionnez le propriétaire. L’appareil est maintenant enregistré.

Headscale pour les débutants : la configuration VPN simplifiée

Vous pouvez également enregistrer l’appareil en exécutant la commande suivante :

$ docker compose exec headscale headscale -u NUTZERNAME nodes register --key nodekey:…

Bien sûr, vous devez remplacer username et nodekey.

Le serveur sur lequel Headscale est exécuté doit également être enregistré manuellement en tant que client s’il doit faire partie du réseau !

Le « VPN » classique : déguisement IP

Nous avons maintenant un VPN, mais ce que la plupart des gens veulent, ce n’est pas un VPN, mais un proxy sous la forme d’un VPN. Pour obtenir cela, nous devons désigner l’un des clients comme « Nœud de sortie ». Nous faisons cela en utilisant le client Tailscale sous Linux --advertise-exit-node donner.

Voir aussi  Tutoriel : Supprimer les publicités avec Pihole et Raspberry Pie

Comme vous avez probablement déjà connecté l’appareil, vous pourrez l’activer ultérieurement en exécutant cette commande :

# tailscale set --advertise-exit-node

Nous devons maintenant faire savoir au système d’exploitation que nous voulons vraiment transférer le trafic.

# echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/99-vpn.conf
# echo 'net.ipv6.conf.all.forwarding = 1' >> /etc/sysctl.d/99-vpn.conf
# sysctl -p /etc/sysctl.d/99-vpn.conf

Il nous reste maintenant à libérer les routes proposées dans le serveur de contrôle. La meilleure façon de le faire est dans l’interface Web, où il vous suffit de cliquer sur le statut « En attente » à côté des « Routes de périphérique ». Les autres clients peuvent alors simplement le sélectionner et l’utiliser comme nœud de sortie.

Capture d'écran de l'interface Web de Headscale

dernier mot

Si vous avez tout fait correctement, vous êtes maintenant votre propre fournisseur VPN. Et à une fraction du coût. (jusqu’à 10€/mois pour un VPN professionnel contre 3,25€ pour un petit VPS)

Bien sûr, vous n’avez plus 170 emplacements de serveur, mais toutes les fonctionnalités supplémentaires. Mais leur explication ne ferait que dépasser le cadre. Pour cette raison : Amusez-vous avec votre VPN !