« Headscale » : différence entre les versions

m fix typo
Grosse mise à jour de Headscale
 
(7 versions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Headscale]] est un logiciel libre imitant l'API de [[wikipedia:Tailscale|Tailscale]]. Il permet de lier via un "hub" commun de multiples appareils, formant un réseau local interne. Certains nœuds de ce réseau sont des sorties, qui peuvent être utiliser par tous les nœuds du réseau pour le trafic sortant (accès internet) ce qui permet de les considérer comme des '''VPN''', en plus de nœuds internes.
{{Infobox logiciel
| sous-titre = Service de VPN et de gestion de réseaux
| localisation = [[admin0|Serveur admin0]], [[admin1|Serveur admin1]], [[computing|Serveur computing]], [[storage|Serveur storage]], [[mail|Serveur mail]]
| site officiel = https://headscale.net/
| documentation = https://headscale.net/stable/ref/configuration/
| utilise = [[Nginx]], [[Certbot]], [[Keycloak]]
| image = Icon headscale.svg
| configuration = <code>/etc/headscale/config.yaml</code>
| accès = https://headscale.linarphy.net
| service = [[Systemd]]
}}
 
[[Headscale]] est un logiciel libre de gestion de nœuds [[Tailscale]]. Il imite l’API du [https://tailscale.com gestionnaire privé par défaut]. Il permet de lier via un "hub" commun de multiples nœuds, formant un réseau local interne. Certains nœuds de ce réseau sont des sorties qui peuvent transmettre le trafic sortant, ce qui permet de les considérer comme des '''VPN'''.


== Configuration actuelle ==
== Configuration actuelle ==
Sur l'architecture actuelle, il tourne sur le serveur computing et est accessible ici [https://headscale.linarphy.net ici]. En plus des appareils utilisant le '''VPN''', chaque serveur est un nœud (même les serveurs '''DNS'''). Les serveurs sont des nœuds de sortie, ce qui permet aux appareil de choisir le lieu de connexion pour les services web accédé par l'utilisateur de celui-ci.
Sur l'architecture actuelle, il tourne sur le [[Computing|serveur computing]]. La répartition des nœuds est disponible dans l’article concernant [[Tailscale]].


== Procédures ==
== Procédures ==


=== Ajout un nœud de sortie (exit node) ===
=== Ajout un nœud de sortie (exit node) ===
Créer le nœud avec la commande suivante: <code>tailscale up --login-server=<nowiki>https://headscale.linarphy.net</nowiki> --advertise-exit-node --accept-dns=false</code>  ou, s'il existe déjà, la commande <code>tailscale set --advertise-exit-node</code>.
Sur le [[computing|serveur computing]] (exécutant [[headscale]]), lancer la commande <code>headscale routes list</code> ce qui permet d'afficher un tableau trié par ''ID''. Cibler les deux ''ID'' correspondant au nœud de sortie ('''IPv4''' et '''IPv6''') et exécuter la commande <code>headscale routes enable -r {ID}</code> pour ces deux nombres.
 
Sur le serveur [[computing]] (exécutant [[headscale]]), lancer la commande <code>headscale routes list</code> ce qui permet d'afficher un tableau trié par ''ID''. Cibler les deux ''ID'' correspondant au nœud de sortie ('''IPv4''' et '''IPv6''') et exécuter la commande <code>headscale routes enable -r {ID}</code> pour ces deux nombres.
 
Sur le noeud lancer la commande:<syntaxhighlight lang="bash">
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
</syntaxhighlight>Si firewalld est installé, il est nécessaire d'effectuer les commandes suivantes:<syntaxhighlight lang="bash">
firewall-cmd --add-masquerade --zone=public --permanent
firewall-cmd --add-interface=tailscale0 --zone=trusted --permanent
firewall-cmd --reload
</syntaxhighlight>Dans ce cas, il est aussi possible d'avoir besoin d’exécuter la commande <code>firewall-cmd --add-service wireguard --permanent</code> puis <code>firewall-cmd --reload</code>.


Les informations concernant la configuration du nœud sont disponibles dans l’article [[Tailscale]].
== Installation ==
== Installation ==
Si non indiqué, l'utilisateur effectuant les commandes dans la suite des opérations et le '''root''' (ou superutilisateur).
Si non indiqué, l'utilisateur effectuant les commandes dans la suite des opérations et le '''root''' (ou superutilisateur).
Ligne 32 : Ligne 33 :


=== Téléchargement et installation ===
=== Téléchargement et installation ===
Le service s'installe sur les systèmes debian à l'aide de package '''.deb''' disponible [https://github.com/juanfont/headscale/releases/latest ici]. Si l'architecture du serveur n'est pas connu, utiliser le paquet pour l'architecture '''amd64'''. Une fois l'archive téléchargé avec curl: <code>curl -L {url} -o headscale.tar.gz</code>, puis l'avoir extrait avec <code>tar -xf headscale.tar.gz</code> et supprimer l'archive avec <code>rm headscale.tar.gz</code>, il suffit alors de l'installer avec aptitude: <code>apt install ./headscale.deb</code>.
Le service s'installe sur les systèmes debian à l'aide de package '''.deb''' disponible [https://github.com/juanfont/headscale/releases/latest ici]. Si l'architecture du serveur n'est pas cconnue utiliser le paquet pour l'architecture '''amd64'''. Une fois l'archive téléchargée avec curl: <code>curl -L {url} -o headscale.tar.gz</code>, puis l'avoir extrait avec <code>tar -xf headscale.tar.gz</code> et supprimer l'archive avec <code>rm headscale.tar.gz</code>, il suffit alors de l'installer avec aptitude : <code>apt install ./headscale.deb</code>.


=== Reverse proxy ===
=== Reverse proxy ===
Comme pour la plupart des services, Headscale sera disponible via un nom de domaine spécial.
Comme pour la plupart des services, Headscale sera disponible sur son nom de domaine propre.


Ajouter le nom de domaine sur la zone '''DNS''' de l'interface d'administration de [[FreeIPA]] (procédure [[FreeIPA#DNS|ici]]).
Ajouter le nom de domaine sur la zone '''DNS''' de l'interface d'administration de [[FreeIPA]] (procédure [[FreeIPA#DNS|ici]]).
Ligne 49 : Ligne 50 :
</syntaxhighlight>
</syntaxhighlight>


Puis créer un lien symbolique avec la commande <code>ln -s /etc/nginx/sites-available/headscale.linarphy.net /etc/nginx/sites-enabled/headscale.linarphy.net</code> et tester la configuration via <code>nginx -t</code>. Si la configuration est valide, il est nécessaire de recharger le service systemd avec <code>systemctl reload nginx</code> et mettre en place le chiffrement ssl avec <code>certbot --nginx --domain auth.linarphy.net --deploy-hook=/usr/share/keycloak/certs/hook.sh</code>.
Puis créer un lien symbolique avec la commande <code>ln -s /etc/nginx/sites-available/headscale.linarphy.net /etc/nginx/sites-enabled/headscale.linarphy.net</code> et tester la configuration via <code>nginx -t</code>. Si la configuration est valide, il est nécessaire de recharger le service systemd avec <code>systemctl reload nginx</code> et mettre en place le chiffrement ssl avec <code>certbot --nginx --domain headscale.linarphy.net</code>.


Vérifier ensuite sur un navigateur l'accès au service sur le protocole https.
Vérifier ensuite sur un navigateur l'accès au service sur le protocole https.
Ligne 385 : Ligne 386 :
   nameservers:
   nameservers:
     global:
     global:
      # Quad9 DNS
      - 9.9.9.9
      - 2620:fe::fe
      - 149.112.112.112
      - 2620:fe::9
       #- 1.1.1.1
       #- 1.1.1.1
       #- 1.0.0.1
       #- 1.0.0.1