7.13. Configurer le script network

Cette section s'applique seulement si une carte réseau doit être configurée.

Si une carte réseau ne sera pas utilisée, il n'y a aucun besoin de créer des fichiers de configuration relatifs aux cartes réseau. Si c'est le cas, supprimez les liens symboliques network de tous les répertoires des niveaux d'exécution (/etc/rc.d/rc*.d).

7.13.1. Création de noms stable pour les interfaces réseau

Avec Udev et les pilotes réseau modulaires, la numérotation n'est pas constante au fur et à mesure des redémarrages par défaut, car les pilotes sont chargés en parallèle, et du coup, dans un ordre aléatoire. Par exemple, sur un ordinateur ayant deux cartes réseau fabriquées par Intel et Realtek, la carte réseau produite par Intel peut devenir eth0 et celle de Realtek devient eth1. Dans certains cas, après un redémarrage, les cartes sont renumérotées d'une autre façon. Pour éviter cela, Udev est fourni avec un script et des règles pour affecter des noms stables aux cartes réseau basés sur leur adresse MAC.

Pré-générez les règles pour vous assurer que les mêmes noms seront affectés aux mêmes périphériques à chaque démarrage, y compris le premier :

for NIC in /sys/class/net/* ; do
    INTERFACE=${NIC##*/} udevadm test --action=add $NIC
done

Maintenant, examinez le fichier /etc/udev/rules.d/70-persistent-net.rules, pour trouver quel nom a été donné à quel périphérique réseau :

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

Le fichier commence par un bloc de commentaire suivi de deux lignes pour chaque NIC. La première ligne de chaque NIC est une description commentée montrant ses IDs matériels (comme ses IDs de fabricant PCI et de périphérique, si c'est une carte PCI), puis avec ses pilotes entre parenthèses, si le pilote peut être trouvé. Ni l'ID du périphérique ni le pilote ne sont utilisés pour déterminer quel nom donner à une interface. Ces informations ne sont qu'en tant que référence. La deuxième ligne est la règle Udev correspondant à ce NIC et qui lui affecte au final un nom..

Toutes les règles Udev sont constituées de plusieurs mots, séparés par une virgule ou optionnellement un espace. Ces clés de règle ainsi qu'une explication de chacune d'entre elles sont les suivantes :

  • SUBSYSTEM=="net" - Ceci dit à Udev d'ignorer les périphériques qui ne sont pas des cartes réseau.

  • ACTION=="add" - Ceci dit à Udev d'ignorer cette règle pour un uevent qui n'est pas un ajout (les uevents "retrait" et "changement" se produisent aussi mais ils n'ont pas besoin de renommer les interfaces réseau).

  • DRIVERS=="?*" - Ceci existe afin qu'Udev ignore les VLAN ou les sous-interfaces bridge (car les sous-interfaces n'ont pas de pilotes). Ces sous-interfaces sont sautées car le nom qui pourrait leur être affecté entrerait en conflit avec leur périphériques parents.

  • ATTR{address} - La valeur de cette clé est l'adresse MAC du NIC.

  • ATTR{type}=="1" - Ceci assure que la règle ne correspond qu'à l'interface primaire dans le cas de certains pilotes sans fil, qui créent plusieurs interfaces virtuelles. Les interfaces secondaires sont sautées pour la même raison que le sont les VLAN et les sous-interfaces bridge : il y aurait en ce cas un conflit de noms.

  • KERNEL=="eth*" - Cette clé a été ajoutée au générateur de règles d'Udev pour gérer les machines ayant plusieurs interfaces réseau, toutes ayant la même adresse MAC (la PS3 en fait partie). Si les interfaces indépendantes ont des noms de base différents, cette clé permettra à Udev de leur parler en aparté. Ce n'est normalement pas nécessaire pour la plupart des utilisateurs de Linux From Scratch, mais ça ne fait pas de mal.

  • NAME - La valeur de cette clé est le nom qu'Udev affectera à l'interface.

La valeur de NAME est la partie importante. Assurez-vous de connaître quel nom a été affecté à chacune de vos cartes réseau avant de continuer, et aisurez-vous d'utiliser cette valeur NAME lorsque vous créerez les fichiers de configuration ci-dessous.

7.13.2. Créer des fichiers de configuration des interfaces réseau

Les interfaces activées et désactivées par le script network dépendent des fichiers et des répertoires compris dans la hiérarchie /etc/sysconfig/network-devices. Ce répertoire doit contenir un sous-répertoire pour chaque interface à configurer, comme ifconfig.xyz, où « xyz » est le nom de l'interface réseau. Dans ce répertoire se trouvent des fichiers définissant les attributs de cette interface, comme le(s) adresse(s) IP, masque de sous-réseau et ainsi de suite.

La commande suivante crée un fichier ipv4 d'exemple pour le périphérique eth0 :

cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF

Les valeurs de ces variables doivent être modifiées dans chaque fichier pour correspondre à la bonne configuration. Si la variable ONBOOT est configurée à « yes », le script network configurera la carte réseau (Network Interface Card, NIC) pendant le démarrage du système. S'il est configuré avec toute autre valeur que « yes », l'interface réseau sera ignorée par le script network et non montée.

La variable SERVICE définit la méthode utilisée pour obtenir une adresse IP. Les scripts de démarrage LFS ont un format d'affectation IP modulaire. Créer les fichier supplémentaires dans le répertoire /etc/sysconfig/network-devices/services autorise d'autres méthodes d'affectation. Ceci est habituellement utilisé pour le DHCP (Dynamic Host Configuration Protocol, NdT :protocole de configuration de l'hôte dynamique), qui est adressé dans le livre BLFS.

La variable GATEWAY devrait contenir l'adresse IP par défaut de la passerelle, si elle existe. Sinon, mettez entièrement en commentaire la variable.

La variable PREFIX a besoin de contenir le nombre de bits utilisé dans le sous-réseau. Chaque octet dans une adresse IP est sur huit bits. Si le masque réseau du sous-réseau est 255.255.255.0, alors il est en train d'utiliser les trois premiers octets (24 bits) pour spécifier le numéro réseau. Si le masque réseau est 255.255.255.240, il utiliserait les 128 premiers bits. Les préfixes plus longs que 24 bits sont habituellement utilisés par les fournisseurs d'accès à Internet ADSL et câble. Dans cet exemple (PREFIX=24), le masque réseau est 255.255.255.0. Ajustez la variable PREFIX en concordance avec votre sous-réseau spécifique.

7.13.3. Créer le fichier /etc/resolv.conf

Si le système a besoin d'être connecté à Internet, il aura besoin de la résolution de noms proposée par le DNS (Domain Name Service) pour résoudre les noms de domaines Internet, et vice-versa. Ceci se fait en plaçant les adresses IP du serveur DNS, disponibles auprès du FAI ou de l'administrateur système, dans /etc/resolv.conf. Créez le fichier en lançant ce qui suit :

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf

domain <Votre nom de domaine>
nameserver <Adresse IP du DNS primaire>
nameserver <Adresse IP du DNS secodaire>

# End /etc/resolv.conf
EOF

Remplacez <adresse IP du DNS> avec l'adresse IP du DNS le plus approprié pour la configuration. Il y aura souvent plus d'une entrée (les conseils recommandent des serveurs DNS disposant de capacité de prise en charge. Si vous avez seulement besoin ou si vous voulez uniquement le serveur DNS, supprimez la seconde ligne serveur de noms à partir du fichier. L'adresse IP pourrait aussi être un routeur sur le réseau local.