Comment configurer le réseau avec ifconfig ?
I. Configuration standard
Maintenant que l’on a vu la théorie, passons un peu à la pratique. Il s’agit ici de concrétiser la création ou la configuration du réseau. Chaque distribution propose une interface graphique différente. Par contre, la commande universelle de configuration d’un réseau, sur GNU/Linux, s’appelle ifconfig.
ASTUCE : il existe également une autre commande permettant également de lister toutes les interfaces, y compris celles qui sont inactives : ip addr.
C’est un peu le couteau suisse du paramétrage réseau. On peut l’utiliser à la fois pour initialiser une interface, modifier un masque réseau, positionner une adresse IP ou encore activer ou désactiver telle ou telle interface.
Exemple : activation de l’interface eth0 avec l’adresse 192.168.1.2
# ifconfig eth0 inet 192.168.1.2 netmask 255.255.255.0
Une fois l’interface générée, il est alors possible de l’activer (ou la désactiver) avec les options up (ou down):
# ifconfig eth0 up
Afin d’interroger une interface, il suffit simplement d’exécuter la commande ifconfig en précisant l’interface que l’on souhaite inspecter :
# ifconfig eth2
Par défaut, sur GNU/Linux, la commande ifconfig seule, sans option, fournit la liste et les propriétés des interfaces actives. Si l’on souhaite visualiser l’ensemble des interfaces, y compris celles qui ne sont pas actives, il faut utiliser l’option –a :
# ifconfig –a
ASTUCE : même si ce n’est pas le plus courant des usages, on peut ajouter une seconde adresse IP à une interface déjà configurée :
# ifconfig eth2:en1 172.18.2.39
En suppléments des options up et down, il existe carrément des commandes permettant d’activer ou désactiver les interfaces réseau : ifup et ifdown. Celles-ci utilisent la configuration mentionnée dans les fichiers se trouvant dans le répertoire /etc/sysconfig/network-scripts.
# ifup eth1
# ifdown eth2
Outre les fichiers de configuration mentionnés ci-dessus, il existe également un fichier network, se trouvant dans le répertoire /etc/sysconfig permettant de préciser les paramètres suivants :
- NETWORKING : activation ou non du réseau au démarrage du système
- HOSTNAME : nom de domaine qualifié (FQDN)
- GATEWAY : adresse IP de la passerelle permettant le routage
- GATEWAYDEV : interface réseau permettant d’accéder à la passerelle
- NISDOMAIN : appartenance (ou non) à un annuaire de noms NIS
- DNS1 : adresse IP du serveur DNS primaire
- DNS2 : adresse IP du serveur DNS secondaire
Les fichiers de configuration ifcfg*, du répertoire /etc/sysconfig/network-scripts contiennent le paramétrage des différentes interfaces réseau et peuvent être soit statique (adresse fixe), soit dynamique (utilisation d’un serveur DHCP) :
II. Configuration avancée : le teaming
En matière de réseau, on peut faire en sorte de redonder son réseau en doublant les interfaces utilisées. Cela s’appelle du teaming ou du bonding. Cela consiste à agréger plusieurs interfaces en une seule afin d’augmenter la bande passante et la résilience.
ATTENTION : ce mode de fonctionnement nécessite le chargement d’un module noyau particulier : le module bonding. De plus, il faut deux interfaces actives pour pouvoir réaliser la pseudo-interface bond0 schématisée sur la capture ci-dessus. Il faut donc déclarer trois fichiers ifcfg* :
- ifcfg-eth0
- ifcfg-eth1
- ifcfg-bond0
Il existe sept modes de bonding que l’on peut paramétrer au niveau du module noyau installé :
- mode 0 : équilibrage de charge (aussi appelée balance round robin)
- mode 1 : Sauvegarde active
- mode 2 : Balance XOR
- mode 3 : Broadcast
- mode 4 : 802.3ad
- mode 5 : balance “Traffic Load Balancing“ ou TLB
- mode 6 : balance “Adaptive Load Balancing“ ou ALB
Généralement, sur des configurations de production, on a tendance à privilégier les modes 5 ou 6 permettant de changer dynamiquement, à la fois d’interface réseau et d’adresse MAC. Une fois que l’on a configuré le module noyau en éditant le fichier /etc/modprobe.d/bond0.conf de la façon suivante :
alias bond0 bonding
options bond0 miimon mode=5
On peut alors désactiver les deux cartes réseau pour pouvoir paramétrer le bonding et les transformer en interfaces esclaves:
# ifconfig eth0 down
# ifconfig eth1 down
On peut ensuite créer l’interface bond0 avec son adresse Ethernet active (celle, généralement de l’interface eth0 associée) et configurer l’adresse IP à lui attribuer :
# ifconfig bond0 hw ether 00:17:56:BC:02:3A
# ifconfig bond0 192.168.2.3 netmask 255.255.255.0 gateway 192.168.2.1
Après cela, il faut transformer les deux interfaces eth0 et eth1 en esclave inféodées à l’interface bond0 :
# ifenslave bond0 eth0
# ifenslave bond0 eth1
ASTUCE : si l’on a besoin à un quelconque moment de libérer une interface ou d’en remplacer une, il suffit juste d’exécuter la commande suivante :
# ifenslave –d bond0 eth1 (par exemple)
Maintenant, il faut créer les fichiers de configuration, dans le répertoire /etc/sysconfig/network-scripts des différentes interfaces réseau, en commençant par ifcfg-bond0 :
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.2.3
NETMASK=255.255.255.0
BROADCAST=192.168.2.255
GATEWAY=192.168.2.1
USERCTL=no
Ensuite, on passe à la configuration de ifcfg-eth0 :
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
Et pour finir, on passe à celle de ifcfg-eth1, qui ressemble à s’y méprendre au fichier ifcfg-eth0:
DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
Pour pouvoir démarrer cette configuration, il faut alors redémarrer le service réseau du système, en exécutant l’instruction suivante :
# systemctl restart network
REMARQUE : une particularité des interfaces réseau sous GNU/Linux, c’est qu’il est possible d’attribuer un ou plusieurs alias à une carte réseau, à partir de son interface principale. Cela permet d’attribuer, en réalité plusieurs adresses IP à la même interface.
En effet, lorsqu’une interface dispose de plusieurs adresses IP, la première est considérée en tant qu’adresse principale de l’interface et les suivantes comme des alias. Ceux-ci utilisent alors le nom de l’interface réseau principale, suivi du numéro d’alias séparé du nom, par le caractère ‘:’.
Exemple : pour générer des alias de l’interface eth0
# ifconfig eth0:1 192.168.1.2 netmask 255.255.255.0 up
ATTENTION : le masque mentionné ici correspond au masque de sous-réseau. De plus, pour que cette pseudo-nouvelle interface fonctionne, il ne faut pas oublier de créer son fichier de configuration :
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
ONBOOT=yes
Il faut alors activer la nouvelle interface en exécutant la commande ci-dessous :
# ifup eth0:1
Nous allons maintenant passer au module suivant, il sera consacré à l'utilisation de différents outils de diagnostic réseau.