logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


Configurer un réseau filaire via systemd-networkd

  • Objet : Configurer un réseau filaire en utilisant systemd-networkd (/etc/systemd/network/*)
  • Niveau requis :
  • Commentaires : Écrire la configuration de connexion de votre réseau.
  • Suivi :

    - FIXME Pour choisir, voir les autres Tags possibles dans l'Atelier.

    • Création par Severian 08/11/2015
    • Testé par <…> le <…>
  • Commentaires sur le forum : Lien vers le forum concernant ce tuto 1) FIXME

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

Avec GNU/Linux Debian Jessie et l'arrivée de Systemd, il existe une nouvelle façon de configurer l'interface réseau sans passer par des “démons” (NetworkManager ou Wicd) et sans utiliser la modification du fichier /etc/network/interfaces.

Normalement un nouvel outil est dédié à la configuration de SystemD-NetworkD, malheureusement il n'est pas encore implémenté sur jessie : networkctl (il est disponible sur la sid par contre)

Configuration

Afin d'éviter tout conflit, les outils graphiques ou la configuration par le fichier /etc/network/interfaces doivent être désactivés
systemctl disable network
systemctl disable NetworkManager

Les fichiers de configuration /etc/systemd/network/

Les fichiers de configuration sont situés dans :

  • le répertoire de réseau du système /usr/lib/systemd/network,
  • le répertoire volatile réseau d'exécution /run/systemd/network et
  • le répertoire de réseau de l'administration locale /etc/systemd/network.
  • Les fichiers dans /etc ont la plus haute priorité,
  • les fichiers dans /run ont préséance sur ceux avec le même nom se trouvant dans /usr/lib.

Cela peut être utilisé pour remplacer un fichier de configuration du système par un fichier local, si nécessaire.

Il existe trois types de fichiers de configuration :

  • les fichiers .network . Ils vont appliquer une configuration réseau à l'interface correspondante
  • les fichiers .netdev. Ils vont créer un dispositif de réseau virtuel pour l'environnement donné
  • les fichiers .link. quand un dispositif de réseau apparaît, udev va chercher le premier fichier .link correspondant

Ils suivent tous les mêmes règles :

  • Si toutes les conditions dans la section [Match] sont identiques, le profil sera activé
  • Si une section [Match] est vide, le profil sera applicable dans tous les cas (peut être comparé à * joker)
  • Chaque entrée est une clé avec la syntaxe NOM=VALEUR
  • Tous les fichiers de configuration sont collectivement triés et traités par ordre alphanumérique, quels que soient les répertoires dans lesquels ils se trouvent.
  • les fichiers avec des noms identiques se remplacent les uns les autres.
Création des fichiers de configurations
nano /etc/systemd/network/*nom-du-fichier*

voir TP : nano par l'exemple

  • /etc/systemd/network/50-eth0.network
  • /etc/systemd/network/50-eth0.link

/etc/systemd/network/50-eth0.network

nano /etc/systemd/network/50-eth0.network
50-eth0.network
[Match]
Name=eth0
 
[Network]
DHCP=no
Address=xxx.xxx.xxx.xxx/24
Gateway=xxx.xxx.xxx.xxx
Section [Match]

La section [Match] détermine si un fichier de configuration donné peut être appliqué à une interface donnée.

Le premier fichier (dans l'ordre lexical) qui correspond à une interface donnée est appliqué. Tous les fichiers suivants seront ignorés, même s'ils correspondent également à l'interface.

  • MACAddress → adresse Mac de la carte (correspond à ATTR{address} dans 70-persistent-net.rules)
  • Path : correspond à ID_PATH des proprietes UDEV
  • Driver : correspond à DRIVER des proprietes UDEV, ou driver de la commande ethtool
  • Type : DEVTYPE des proprietes UDEV (Type n'est pas utilisé car les cartes réseaux font partie du sous-system = net(dans le monde magique d'UDEV) et n'a pas de propriété devtype)

exemple :

 udevadm info /sys/net/class/net/eth0
  • Name : INTERFACE des proprietes UDEV ou NAME de 70-persistent-net.rules
  • Host : correspond à hostname ou à l'ID de la machine (voir ConditionHost)
  • Virtualization : teste si la session est exécutée sur machine virtuelle ou non (Virtualization=no / Virtualization=yes)
  • KernelCommandLine : teste si une commande spécifique est passée au noyau.
  • Architecture : teste sous quelle architecture (x86, x86-64, ppc, ppc-le, ppc64, ppc64-le, ia64, parisc, parisc64, s390, s390x, sparc, sparc64, mips, mips-le, mips64, mips64-le, alpha, arm, arm-be, arm64, arm64-be, sh, sh64, m86k, tilegx, cris) se trouve le pc.
Section [Network]

La section [Network] précise la configuration de l'interface.

  • Description : Description de l'interface, utilisé uniquement à des fins de présentation.
  • DHCP : DHCPv4 et / ou DHCPv6 support client. Accepte yes no ipv4 ou ipv6.
  • Address : une adresse fixe IPv4 or IPv6 et son préfixe séparé par “/”. Spécifiez cette clé plus d'une fois pour configurer plusieurs adresses.
  • Gateway : l'adresse de la passerelle, cette option peut être spécifiée plus d'une fois.
  • DNS : l'adresse du serveur DNS, cette option peut être spécifiée plus d'une fois.
  • Domains : Les domaines utilisés pour la résolution DNS.
  • NTP : L'adresse du serveur NTP. Cette option peut être spécifiée plus d'une fois.
  • IPForward : En voila une très intéressante puisqu'elle vous permet de partager une connexion internet, Accepte yes no ipv4 ipv6 kernel (kernel veut dire, lire la conf actuelle du noyau)
Concernant le partage de connexion internet, il faut aussi ajouter les règles IPTABLES suivantes
dans le cas ou ma machine Gateway a pour eth0(WAN) et eth1(LAN)
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Pour faire tout ça automatiquement il faut créer un fichier /etc/iptables/rules.v4 avec la bonne conf

apt-get install iptables-persistent
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
Section [DHCP]
Dans le cas d'un ordinateur avec plusieurs carte réseaux sur le même réseau (la même box par exemple), ne pas oublier de définir 2 champs “[DHCP]RouteMetric=*” de valeur différentes. cela permettra de switcher de l'une à l'autre sans bidouiller les tables de routage exemple :
[Match]
Name=eth0
[Network]
DHCP=ipv4
[DHCP]
RouteMetric=10
Un certain nombre d'options de configuration dépassant mon niveau de connaissances, je préfère ne pas en parler.
Vous pourrez trouver de plus amples informations sur :
DNS via le client DHCP

Concernant le systemd-resolved il est utilisé uniquement dans le cas ou on spécifie des entrées DNS dans les fichiers de conf(.network).
Or si l'on veut obtenir les DNS via le client DHCP de systemd-networkd on tape :

nano /etc/systemd/network/eth0.network

Et on rédige par exemple :

Exemple d'extrait de eth0.network
[Match]
Name=eth0
[Network]
DNS=192.168.1.1
Address=192.168.1.40/24
Gateway=192.168.1.1

nano /etc/systemd/network/50-eth0.link
50-eth0.link
[Match]
MACAddress=xx:xx:xx:xx:xx:xx
Path=pci-xxxx:xx:xx.x
Virtualization=no
 
[Link]
Name=eth0
MTUBytes=1464
MACAddressPolicy=persistent
WakeOnLan=off
Section [Match]

La section [Match] détermine si un fichier de configuration donné peut être appliqué à une interface donnée.
Le premier fichier (dans l'ordre lexical) qui correspond à une interface donnée est appliqué. Tous les fichiers suivants seront ignorés, même s'ils correspondent également à l'interface.

  • MACAddress → adresse Mac de la carte (correspond à ATTR{address} dans 70-persistent-net.rules)
  • Path : correspond à ID_PATH des proprietes UDEV
  • Driver : correspond à DRIVER des proprietes UDEV, ou driver de la commande ethtool
  • Type : DEVTYPE des proprietes UDEV FIXME → pas trouvé d'info sur DEVTYPE
  • OriginalName : INTERFACE des proprietes UDEV ou NAME de 70-persistent-net.rules
  • Host : correspond à hostname ou à l'ID de la machine (voir ConditionHost)
  • Virtualization : teste si la session est exécutée sur machine virtuelle ou non (Virtualization=no / Virtualization=yes)
  • KernelCommandLine : teste si une commande spécifique est passée au noyau.
  • Architecture : teste sous quelle architecture (x86, x86-64, ppc, ppc-le, ppc64, ppc64-le, ia64, parisc, parisc64, s390, s390x, sparc, sparc64, mips, mips-le, mips64, mips64-le, alpha, arm, arm-be, arm64, arm64-be, sh, sh64, m86k, tilegx, cris) se trouve le pc.

La section [Link] précise la configuration de l'interface.

  • Description : Description de l'interface, utilisée uniquement à des fins de présentation
  • MACAddressPolicy : La politique de réglage de l'adresse MAC. Les politiques disponibles sont :
    • “persistent” FIXME If the hardware has a persistent MAC address, as most hardware should, and if it is used by the kernel, nothing is done. Otherwise, a new MAC address is generated which is guaranteed to be the same on every boot for the given machine and the given device, but which is otherwise random. This feature depends on ID_NET_NAME_* properties existing for the link, on hardware where these properties are not set the generation of a persistent MAC address will fail.
    • “random” FIXME If the kernel is using a random MAC address, nothing is done. Otherwise, a new address is randomly generated each time the device appears, typically at boot. Either way the random address will have the “unicast” and “locally administered” bits set.
    • “none” FIXME Keeps the MAC address assigned by the kernel.
  • MACAddress : L'adresse MAC à utiliser, si aucun MACAddressPolicy est spécifiée.
  • NamePolicy : FIXME An ordered, space-separated list of policies by which the interface name should be set. “NamePolicy” may be disabled by specifying “net.ifnames=0” on the kernel command line. Each of the policies may fail, and the first successful one is used. The name is not set directly, but is exported to udev as the property “ID_NET_NAME”, which is, by default, used by a udev rule to set “NAME”. If the name has already been set by userspace, no renaming is performed. The available policies are :
    • “kernel” If the kernel claims that the name it has set for a device is predictable, then no renaming is performed.
    • “database” The name is set based on entries in the udev's Hardware Database with the key “ID_NET_NAME_FROM_DATABASE”.
    • “onboard” The name is set based on information given by the firmware for on-board devices, as exported by the udev property “ID_NET_NAME_ONBOARD”.
    • “slot” The name is set based on information given by the firmware for hot-plug devices, as exported by the udev property “ID_NET_NAME_SLOT”.
    • “path” The name is set based on the device's physical location, as exported by the udev property “ID_NET_NAME_PATH”.
    • “mac” The name is set based on the device's persistent MAC address, as exported by the udev property “ID_NET_NAME_MAC”.
  • Name : Le nom à utiliser pour l'interface si toutes les politiques spécifiées dans NamePolicy échouent, ou si NamePolicy est manquant ou désactivé.
  • MTUBytes : indication de la MTU (par défaut 1500).
  • BitsPerSecond : le débit défini pour l'interface, la valeur est arrondie aux Mbps les plus proches vers le bas. Les suffixes habituels K, M, G, sont pris en charge et sont compris à la base 1000.
  • Duplex : le mode duplex défini pour l'interface. Les valeurs acceptées sont half et full.
  • WakeOnLan : politique du WOL Wake-on-LAN (wikipedia)
    • “phy” réveil sur une activité physique.
    • “magic” réveil sur la réception d'un paquet magique.
    • “off” pas de réveil.

plus de détails → systemd.link — Network device configuration


Résolution DNS - resolv.conf

Maintenant que la configuration du réseau est faite, il faut s'occuper de la résolution DNS.
Rien de plus simple, il suffit d'activer le service :

systemctl enable systemd-resolved.service

effacer l'ancien fichier resolv.conf :

rm /etc/resolv.conf

le remplacer par un lien symbolique :

ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

et lancer le service :

systemctl start systemd-resolved.service

Si vous désirez configurer resolv.conf, il suffit d'éditer le fichier /etc/systemd/resolved.conf :

nano /etc/systemd/resolved.conf
resolved.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# See resolved.conf(5) for details
 
[Resolve]
DNS=4.2.2.4 4.2.2.2 209.244.0.4 209.244.0.3

et de redémarrer le service :

systemctl restart systemd-resolved.service
Différentes possibilités de DNS
  • 4.2.2.4 | vnsc-pri-dsl.genuity.net | Level 3 Communications
  • 4.2.2.2 | vnsc-bak.sys.gtei.net | Level 3 Communications
  • 209.244.0.4 Verizon Level 3
  • 209.244.0.3 Verizon Level 3
  • 208.67.220.220 | resolver2.opendns.com | OpenDNS, LLC
  • 208.67.222.222 | resolver1.opendns.com | OpenDNS, LLC
  • 8.8.8.8 google IPv4
  • 8.8.4.4 google IPv4
  • 2001:4860:4860::8888 google IPv6
  • 2001:4860:4860::8844 google IPv6

Activation du service systemd-networkd

Il ne reste plus qu'à activer le service :

systemctl enable systemd-networkd

et le démarrer :

systemctl start systemd-networkd

Pour vérifier son statut (ça permet aussi de vérifier si les fichiers de configuration n'ont pas d'erreurs)

systemctl status systemd-networkd

En cas de modification des fichiers de configuration :

systemctl restart systemd-networkd

Pour arrêter le service :

systemctl stop systemd-networkd

Pour désactiver le service :

systemctl disable systemd-networkd

Commandes terminal utilisées

systemctl

systemctl enable systemd-networkd
systemctl restart systemd-networkd
systemctl status systemd-networkd
systemctl stop systemd-networkd
systemctl disable systemd-networkd
systemctl enable systemd-resolved.service
systemctl start systemd-resolved.service
systemctl status systemd-resolved.service
systemctl stop systemd-resolved.service

ethtool

S'il n'est pas installé :

apt-get install ethtool
ethtool -i ethX

ethX correspond au nom de l'interface ethernet (eth0, eth1…)

Propriétés UDEV

udevadm info -q all -p /sys/class/net/eth*

persistent-net.rule du répertoire /etc/udev/rules.d/

cat /etc/udev/rules.d/70-persistent-net.rules

ConditionHost

hostname :

uname -n

ID de la machine :

 cat /etc/machine-id

Liens utiles

Discussions au forum relatives à ce tuto

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/reseau/systemd/network.1453824997.txt.gz · Dernière modification: 26/01/2016 17:16 par milou

Pied de page des forums

Propulsé par FluxBB