Florent Peterschmitt

systemd, hostnamed, networkd et l’option 12 de DHCP

Bon je sais certains attendent avec plus ou moins d’impatience les prochains articles sur le Népal, mais pour l’instant j’ai un peu beaucoup de travail à abattre. Ce soir c’était installation d’un Hyper-V sous Windows 10 pour m’assurer que systemd-networkd, et plus précisément systemd-hostnamed peut changer le hostname d’une machine en le récupérant depuis l’option 12 d’une lease DHCP.

Pas que ça soit difficile, au contraire, mais c’est le genre d’épine que j’aime bien retirer avant de continuer le reste.

Tout cela a été fait sur CentOS 7 puisque c’est la cible du moment.

yum install -y systemd-networkd
mkdir /etc/systemd/network

Pour une interface réseau nommée eth0 :

Créer le fichier /etc/systemd/network/eth0.network :

[Match]
Name=eth0

[Network]
DHCP=yes

[DHCP]
UseHostname=yes

Activer le bousin :

systemctl enable systemd-networkd
systemctl enable systemd-hostnamed

Ensuite, sur CentOS 7 (systemd-219) et peut-être d’autres distributions, il faudra rajouter une règle PolicyKit :

https://bugs.freedesktop.org/show_bug.cgi?id=81626

Créer le fichier /etc/polkit-1/rules.d/00-systemd-hostnamed.rules :

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.hostname1.set-hostname" &&
        subject.user == "systemd-network") {
            return polkit.Result.YES;
    }
});

La documentation de hostnamed fait mention de l’action PolicyKit.

Et voilou.

Comments