L’objectif de ce groupe de travail était de monter en compétences sur l’utilisation/l’intégration des différents composants de systemd à savoir : systemd-networkd, systemd-resolved, journarld, systemd-nspawn…
En effet, actuellement sur EOLE 2.6, systemd gère uniquement les services, il se contente d’assurer le passage de System V à systemd.
Qu’est ce que systemd ?
systemd est un système d’initialisation et un daemon qui a été spécifiquement conçu pour le noyau Linux comme alternative à System V.
Il a pour but d’offrir un meilleur cadre pour la gestion des dépendances entre services, de permettre le chargement en parallèle des services au démarrage, et de réduire les appels aux scripts shell. Le projet a été lancé par Lennart Poettering en 2010 et publié sous licence GNU LGPL version 2.12. Le nom de ce programme vient de « system daemon » : le daemon du système.
Source Wikipédia : https://fr.wikipedia.org/wiki/Systemd
Le site officiel du projet : https://wiki.freedesktop.org/www/Software/systemd/
Remplacer networking par systemd-networkd et systemd-resolved sur Eolebase
Le travail s’est basé principalement sur la page https://wiki.archlinux.org/index.php/systemd-networkd
Désactiver le service networking
Dans le fichier /usr/share/eole/creole/dicos/00_common.xml commenter les lignes suivantes :
<service method='network'>networking</service>
<file name='/etc/network/interfaces'/>
<file name='/etc/resolv.conf'/>
Vider le fichier /etc/network/interfaces pour ne pas affoler les applications qui teste sont existence :
> /etc/network/interface
Supprimer le fichier /etc/resolv.conf :
rm -f /etc/resolv.conf
Faire un lien symbolique pour que le fichier resolv.conf soit celui de systemd :
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Dans /usr/lib/python2.7/dist-packages/creole/reconfigure.py dans la fonction services commenter la ligne :
manage_services(action, u'networking', display='console', containers_ctx=[ctx])
Intégrer et configurer les services systemd-networkd et systemd-resolved
Dans le fichier /usr/share/eole/creole/dicos/00_common.xml ajouter les lignes suivantes dans <files> :
<service>systemd-networkd</service> <service>systemd-resolved</service> <file name='/etc/systemd/network/25-wired.network'/>
Créer un nouveau template dans /usr/share/eole/creole/distrib/ nommé 25-wired.network et contenant :
[Match] Name=ens* [Network] Address=%%adresse_ip_eth0/%%calc_classe(%%adresse_netmask_eth0) Gateway=%%adresse_ip_gw %if not %%is_empty(%%adresse_ip_dns) %for %%variable_iter in %%adresse_ip_dns DNS=%%variable_iter %end for %end if Domains=%%nom_domaine_local
Reconfigurer le serveur à l’aide de la commande reconfigure.
Résultat
L’interface réseau est bien gérée par systemd-networkd.
root@eolebase:~# networkctl status ● State: routable Address: 192.168.0.24 on ens4 Gateway: 192.168.0.1 on ens4 DNS: 192.168.230.2 Search Domains: ac-test.fr root@eolebase:~#
root@eolebase:~# diagnose *** Test du module eolebase version 2.6.2 (eolebase 0000000A) *** *** Paquets installés Noyau linux : Linux 4.4.0-103-generic *** Cartes réseau ens4: Speed: Unknown! Duplex: Unknown! (255) Link detected: yes *** Interfaces eolebase: 192.168.0.24 => Ok *** Services distants . Passerelle 192.168.0.1 => Ok . DNS 192.168.230.2 => Ok . Statut NTP => Synchronisé . Accès distant => Ok […]
Transformer le service networkd d’Eolebase en passerelle
Ajout et configuration d’une seconde carte sur un réseau dédié
Attacher une nouvelle interface réseau sur la machine virtuelle.
Ajouter le fichier de configuration associé à cette carte en activant les options IPForward et IPMasquerade directement dans le fichier /etc/systemd/network/26-wired.network, la modification n’est pas pérenne en cas d’un reconfigure :
[Match] Name=ens5 [Network] Address=10.1.1.1/24 IPForward=True IPMasquerade=True
Ajout d’une machine utilisant la passerelle
Déploiement et instanciation d’une machine virtuelle Eolebase sur le réseau dédié :
root@client:~# CreoleSet adresse_ip_eth0 10.1.1.2
root@client:~# CreoleSet adresse_ip_gw 10.1.1.1
Le client passe bien par la passerelle :
root@client:~# diagnose *** Test du module eolebase version 2.6.2 (eolebase 0000000A) *** *** Cartes réseau ens3: Speed: Unknown! Duplex: Unknown! (255) Link detected: yes *** Interfaces client: 10.1.1.2 => Ok *** Services distants . Passerelle 10.1.1.1 => Ok . DNS 192.168.230.2 => Ok . Statut NTP => Désynchronisé . Serveur Proxy => Ok . Accès distant => Ok […]
Pour aller plus loin…
Pour aller plus loin voici ce qui pourrait être fait :
- Supporter plusieurs plusieurs cartes réseau ;
- Gérer le nommage et le renommage des cartes ;
- Contournement du fichier resolv.conf pour le module Seth ;
- Supprimer le code lié aux service Creole de type “network” ;
- Faire le tour des scripts qui essaient de lire le fichier /etc/network/interfaces.