Généralités système Linux

Systemd : 0 Table des matières des articles

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



Comme vous le savez, systemd est plus qu'un système d'init et de gestion des services !

Voici quelques exemples de configuration possibles avec systemd !

Gestion du nom d'hôte avec hostnamectl



La commande hostnamectl permet de gérer le nom d'hôte de la machine.

Pour avoir des infos, on utilise :

Code BASH :
hostnamectl status


Exemple :

Code BASH :
# hostnamectl status
   Static hostname: localhost.localdomain
   Pretty hostname: Serveur test Linuxricks
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ff660743170946a1a9048725101a3442
           Boot ID: 7f2936334b7e4e938704a2659cb91adc
    Virtualization: oracle
  Operating System: Fedora 32 (Workstation Edition)
       CPE OS Name: cpe:/o:fedoraproject:fedora:32
            Kernel: Linux 5.5.0-0.rc6.git3.1.fc32.x86_64
      Architecture: x86-64


On peut définir 2 noms d'hôtes :
- Static (Nom d'hôte de /etc/hostname)
- Pretty (Nom d'usage, pouvant contenir des espaces, documenté dans /etc/machine-info)

Pour changer le nom d'hôte du système, on utilisera :

Code BASH :
hostnamectl set-hostname nomdhote


Et pour définir le nom d'usage (avec un exemple) :

Code BASH :
hostnamectl set-hostname --pretty "Serveur Fedora de développement"


Gestion de la date et heure avec timedatectl



La commande timedatectl permet de gérer la date et l'heure de la machine.

Pour avoir des infos, on utilise :

Code BASH :
timedatectl status


Exemple :
Code BASH :
# timedatectl status
               Local time: Wed 2020-02-05 14:41:43 CET
           Universal time: Wed 2020-02-05 13:41:43 UTC
                 RTC time: Wed 2020-02-05 13:41:38
                Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no


Pour régler l'heure manuellement, on fera :

Code BASH :
timedatectl set-time 'HH:mm:ss'


Exemple pour 12h34 et 56 secondes :

Code BASH :
timedatectl set-time '12:34:56'


Pour régler la date, on fera :

Code BASH :
timedatectl set-date 'AAAA-MM-JJ'


Exemple pour le 05 février 2020 :

Code BASH :
timedatectl set-date '2020-02-05'


Et pour régler la date ET l'heure :

Code BASH :
timedatectl set-time 'AAAA-MM-JJ HH:mm:ss'


Exemple pour le 05 février 2020 à 12h34 et 56 secondes :

Code BASH :
timedatectl set-time '2020-02-05 12:34:56'


Pour lister les fuseaux horaires :

Code BASH :
timedatectl list-timezones


Et définir le fuseau (Exemple Europe/Paris) :

Code BASH :
timedatectl set-timezone Europe/Paris



Le NTP avec systemd-timesyncd



Le service ntp de systemd s'appelle systemd-timesyncd.service

La configuration se fait dans /etc/systemd/timesyncd.conf

La commande permettant de gérer NTP s'appelle ... timedatectl !

Pour indiquer le serveur de temps, c'est dans la section [Time], et il faut définir la valeur NTP (On peut spécifier plusieurs valeurs, séparées par des espaces) :

Code BASH :
[Time]
NTP=fr.pool.ntp.org


D'autres options sont disponibles dans la configuration, mais par défaut, ça fonctionne.

Pour vérifier la configuration :

Code BASH :
timedatectl show-timesync --all


Code BASH :
# timedatectl show-timesync --all
LinkNTPServers=
SystemNTPServers=fr.pool.ntp.org
FallbackNTPServers=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org 2.fedora.pool.ntp.org 3.fedora.pool.ntp.org
ServerName=fr.pool.ntp.org
ServerAddress=(null)
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=0
Frequency=0


Pour activer le NTP, on exécutera :

Code BASH :
timedatectl set-ntp true


Pour désactiver le NTP, on exécutera :

Code BASH :
timedatectl set-ntp false


Pour vérifier que NTP est actif, on utilisera

Code BASH :
timedatectl status


Code BASH :
# timedatectl status
               Local time: Wed 2020-02-05 14:18:20 CET
           Universal time: Wed 2020-02-05 13:18:20 UTC
                 RTC time: Wed 2020-02-05 13:18:16
                Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no


Plus d'infos sur le NTP avec :

Code BASH :
timedatectl timesync-status


Code BASH :
# timedatectl timesync-status
       Server: 149.202.2.105 (fr.pool.ntp.org)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: 52468A42
    Precision: 1us (-24)
Root distance: 24.367ms (max: 5s)
       Offset: +283us
        Delay: 26.383ms
       Jitter: 0
 Packet count: 1
    Frequency: -98.024ppm


Le réseau avec systemd-networkd



Pour faire fonctionner le réseau avec systemd, nous aurons besoin de :
systemd-networkd.service => Le service réseau
systemd-resolved.service => Le service de résolution de nom

A noter que systemd-resolved peut être utilisé sans systemd-networkd.
Si on utilise systemd-networkd, il faut évidemment désactiver le service NetworkManager (ou autre gestionnaire réseau) !

Toutes les configuration réseau se trouvent dans /etc/systemd/network/.

Comme toute commande systemd, elle finit par ctl, et nous utiliserons networkctl.

Pour lister les interfaces, on peut donc utiliser :

Code BASH :
networkctl list


Lorsque aucune interface n'est paramétrée, on a une sortie de ce style :

Code BASH :
# networkctl list
IDX LINK   TYPE     OPERATIONAL SETUP
  1 lo     loopback carrier     unmanaged
  2 enp0s3 ether    routable    unmanaged


Sur la machine concernée, l'interface réseau s'appelle enp0s3.

Je vais créer le fichier /etc/systemd/network/enp0s3-ethernet.network

Exemple avec une configuration DHCP :

Code BASH :
[Match]
Name=enp0s3
[Network]
DHCP=ipv4


Exemple avec une configuration statique :

Code BASH :
[Match]
Name=enp0s3
[Network]
Address=192.168.21.240/24
Gateway=192.168.21.254
DNS=1.1.1.1  


Après chaque modification, on doit redémarrer le service :

Code BASH :
systemctl restart systemd-networkd


La commande networkctl list nous produit ceci une fois l'interface configurée :

Code BASH :
# networkctl list
IDX LINK   TYPE     OPERATIONAL SETUP
  1 lo     loopback carrier     unmanaged
  2 enp0s3 ether    routable    configuring



Voici quelques exemples de Valeurs possibles pour chacune des sections des fichiers .network :
Code :
[Match]
Name=Nom de l'interface
MACAddress=Adresse MAC de l'interface
[Link]
MACAddress=Changer l'adresse MAC
MTUBytes=Changer la valeur du MTU
[Network]
DHCP=ipv4 ou ipv6 (si non indiqué, vaut false)
Address=IP fixe (si DHCP non actif)
Gateway=IP du routeur (si DHCP non actif)
DNS=IP du DNS