La possibilité de créer et de gérer des machines virtuelles (VM) directement depuis l’interface d’administration Freebox OS est l’une des fonctionnalités avancées les plus intéressantes pour les utilisateurs de Freebox Delta et Ultra. Cette option permet de transformer votre Freebox en véritable mini-serveur capable d’héberger un système d’exploitation distinct pour des usages variés.
Ici, ce sera pour la création d’un serveur de noms (serveur DNS) via l’outil DnsMasq.
L’objectif de cette article est de trouver une alternative à Pihole via DnsMasq, et éventuellement voir si on peut configurer DnsMasq afin qu’il joue aussi le rôle de bloqueur de publicité en filtrant les noms de domaine indésirables.
Vous retrouverez dans cette partie l’ensemble de la configuration de FreeboxOS pour l’installation d’une machine virtuelle.
Pour profiter pleinement de cette fonctionnalité, il est nécessaire d’installer un disque NVME sur votre Freebox Ultra.
Sur l’interface d’administration (FreeboxOS), en bas à droite, vous trouverez l’icône VMs :
Cette icône permet d’accèder à l’interface de gestions des VMs de votre Freebox :
Vous constaterez que j’ai déjà une VM sous Debian et celle-ci fait tourner Pihole. En effet, pour le moment, c’est cette VM qui a le rôle de serveur de noms sur mon infra réseau local.
L’objectif de cette article est de trouver une alternative à Pihole via DnsMasq, et éventuellement voir si on peut configurer DnsMasq afin qu’il joue aussi le rôle de bloqueur de publicité en filtrant les noms de domaine indésirables.
Dans l’interface de gestion des VMs, il est possible de créer sa VM avec des systèmes d’exploitation pré-installé parmi une liste :
Mais on peut également créer sa VM grâce :
À une image ISO pour une installation classique en créant un disque virtuel (de la même façon que VirtualBox),
À une image de disque virtuel existante.
C’est cette troisième méthode que nous allons explorer car j’ai envie de monter mon serveur de noms sur un Rocky Linux 9, ce dernier n’étant pas disponible parmi la liste des distributions pré-installées.
Nous allons donc provisionner cette VM avec Cloud-init. Toutes ces étapes sont réalisées via FreeboxOS.
Télécharger l’image de disque virtuel RockyLinux via l’interface de téléchargement FreeboxOS :
Une fois téléchargé, copier le fichier Rocky-9-GenericCloud-Base.latest.aarch64.qcow2 dans le répertoire de votre choix sur votre Freebox. De mon côté, j’ai créé un répertoire /freebox/VMs/Dnsmasq.
Cloud-Init était au départ un projet propre à Ubuntu. Il permettait à l’époque de configurer certains paramètres par défaut comme la langue, le nom d’hôte, les clés SSH, les points de montage, etc. Il s’agit désormais d’un véritable standard de l’industrie du cloud.
Pour utiliser cloud-init, il faut au préalable créer un fichier de configuration cloud-config, dans la plupart des cas écrit en YAML. Ce fichier contient les directives qui seront exécutées lors du premier démarrage de l’instance. Il s’agit de créer un fichier de configuration (user-data) indiquant des paramètres à prendre en compte au premier démarrage.
Cette directive permet de définir une liste de clés SSH publiques qui sont autorisées à se connecter à la machine virtuelle.
Génération d’une clé SSH :
[allfab@dnsmasq ~]$ ssh-keygen -t ecdsa -b 521 -f /home/allfab/.ssh/cloudinit-rockylinux -C "allfab@cloudinit-rockylinux"Generating public/private ecdsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/allfab/.ssh/cloudinit-rockylinux
Your public key has been saved in /home/allfab/.ssh/cloudinit-rockylinux.pub
The key fingerprint is:
SHA256:dvnarbkYYx/ELaycJXPqZjKpU7UCiLZNI7QL3LJZOaA allfab@cloudinit-rockylinux
The key's randomart image is:
+---[ECDSA 521]---+
||| .. ||o.oo.. ||Eo==+ . .+ . ||o=*.. .S.=.B . || oo . .oo.@ . || . oO o || . +ooB + || .o =+ *o. |+----[SHA256]-----+
La clé SSH vient d’être générée. Notez bien la passphrase, ici Pa22word, qui va nous servir pour nous authentifer sur le serveur. On va retrouver la clé privé cloudinit-rockylinux ainsi que la clé publique cloudinit-rockylinux.pub. C’est le contenu de cette dernière que l’on insère dans notre fichier cloud-config.yaml.
Notez que c’est un exemple pour cet article. Vous êtes fortement invité à créer votre clé SSH et à changer sa passphrase pour une plus robuste.
On peut maintenant copier-coller cette configuration dans le champ cloud-ini user-data dans l’interface de pré-configuration !
Si vous avez fait une erreur de configuration dans le fichier et/ou si vous souhaitez changer des choses, il a fallu que je recommence l’opération de l’ajout de la VM à chaque fois en veillant à supprimer le fichier Rocky-9-GenericCloud-Base.latest.aarch64.qcow2 du répertoire /freebox/VMs/Dnsmasq.
Pensez bien à vous créer une copie de sauvegarde de votre fichier Rocky-9-GenericCloud-Base.latest.aarch64.qcow2 avant de lancer la VM. Auquel cas, il faudra re-télécharger le fichier pour repartir sur une machine saine. (Comprendre un fichier de disque virtuel Rocky-9-GenericCloud-Base.latest.aarch64.qcow2 non modifié par cloud-init.)
Il s’avère que la plateforme de virtualisation de FreeboxOS est assez capricieuse. Si jamais le fichier cloud-config.yaml que je propose ne fonctionne pas.
Typiquement, vous n’arrivez pas à vous connecter via le couple d’identifiants utilisateur/mot de passe
Utilisez ce fichier de configuration sommaire. Cette configuration à l’air de fonctionner du premier coup :
Je ne me suis pas trop attardé sur la configuration réseau de notre VM. C’est la Freebox et la plateforme de virtualisation qui se charge de lui attribuée une adresse IP.
On va la rendre statique en lui attribuant un bail DHCP afin que cette dernière ne change pas d’adresse IP au cours d’un rédémarrage intempestif ou autres opérations de maintenance.