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

Composants de systemd – image de Claudelepoisson sous licence CC by-sa 3.0

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.