Ceci est une ancienne révision du document !
Nota :
Contributeurs, les 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
/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.
-
-
-
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
-
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
/etc/systemd/network/50-eth0.link
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.
-
-
-
-
-
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 [Link]
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”
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”
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”
Keeps the MAC address assigned by the kernel.
MACAddress : L'adresse MAC à utiliser, si aucun MACAddressPolicy est spécifiée.
NamePolicy :
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.
-
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
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
Internes
Externes
Discussions au forum relatives à ce tuto