22.5. Configurer une connexion réseau manuellement

Les logiciels réseau ne devraient être configurés manuellement qu'en second recours. Nous recommandons d'utiliser YaST. Toutefois, connaître les mécanismes sous-jacents de la configuration réseau facilitera votre travail avec YaST.

Toutes les cartes réseau — qu'elles soient intégrées ou qu'il s'agisse d'un périphérique branché à chaud (PCMCIA, USB et certaines cartes PCI) — seront reconnues et installées par le biais de hotplug. Une carte réseau est vue par le système de deux manières. Elle est d'une part considérée comme un périphérique physique et d'autre part comme une interface. Le branchement ou la détection du périphérique entraîne un événement de branchement à chaud (hotplug event). Cet événement entraîne alors l'initialisation du périphérique par le biais du script /sbin/hwup. Lorsque une carte réseau est initialisée en tant que nouvelle interface réseau, le noyau déclenche un événement supplémentaire. Cela entraîne l'installation de l'interface par le biais de /sbin/ifup.

Le noyau associe les noms d'interfaces suivant l'ordre de leur enregistrement. L'ordre d'initialisation est déterminant pour l'attribution des noms. Si, en présence de plusieurs cartes réseau, l'une d'elles tombe en panne, la numérotation de toutes celles qui sont initialisées ensuite est décalée. Pour les cartes qui peuvent réellement être branchées à chaud, le plus important est l'ordre dans lequel les périphériques sont associés.

Pour obtenir une configuration flexible, la configuration des périphériques (matériel) et celle des interfaces sont séparées et l'association des configurations à leurs périphériques et interfaces respectifs ne dépend plus des noms des interfaces. La configuration des périphériques se trouve dans /etc/sysconfig/hardware/hwcfg-* tandis que la configuration des interfaces se trouve dans /etc/sysconfig/network/ifcfg-*. Les noms des fichiers de configuration sont choisis de manière à ce qu'ils décrivent leurs périphériques et interfaces respectifs. Comme l'association précédente entre les pilotes et les noms d'interface supposait que les noms d'interface soient statiques, cette association ne peut plus avoir lieu dans /etc/modprobe.conf. Avec le nouveau principe de fonctionnement, les déclarations d'alias dans ce fichier pourraient provoquer des effets secondaires indésirables.

Les noms des configurations — c'est à dire tout ce qui suit hwcfg- ou ifcfg — peuvent décrire les périphériques au moyen de l'emplacement dans lequel il est monté, d'un identifiant propre au périphérique ou du nom de l'interface. Par exemple, pour une carte PCI il pourrait s'agir de bus-pci-0000:02:01.0 (emplacement PCI) ou de vpid-0x8086-0x1014-0x0549 (identifiant du fabricant et du produit). Le nom de l'interface correspondante pourrait être également bus-pci-0000:02:01.0 ou encore wlan-id-00:05:4e:42:31:7a (adresse MAC).

Si on ne veut pas associer une configuration à une carte donnée mais plutôt à une carte d'un type donné (une seule carte de ce type étant branchée à la fois), on choisit un nom de configuration moins particulier. On utilise alors par exemple bus-pcmcia pour toutes les cartes PCMCIA. D'autre part, les noms peuvent aussi être limités par l'utilisation du type d'interface. Ainsi, wlan-bus-usb concernera toutes les cartes WLAN branchées à un port USB.

La configuration utilisée est toujours celle qui décrit le mieux l'interface ou le périphérique qui fournit l'interface. La meilleure configuration sera recherchée par /sbin/getcfg. getcfg fournit toutes les informations que l'on peut utiliser pour décrire un périphérique. Les détails concernant les noms de configuration se trouvent dans la page de manuel de getcfg.

Avec la méthode décrite, une interface réseau est configurée avec la configuration correcte, même lorsque le périphérique réseau n'est pas toujours initialisé dans le même ordre. Cependant, le nom de l'interface dépend encore de l'ordre d'initiialisation. Il y a deux manières d'assurer un accès fiable à l'interface d'une carte réseau donnée :

ifup exige une interface existante, du fait qu'il n'initialise pas le matériel. L'initialisation du matériel est gérée par la commande hwup (exécutée par hotplug ou coldplug). Quand un périphérique est initialisé, hotplug exécute automatiquement ifup pour la nouvelle interface et cette dernière est mise en service si le mode de démarrage est onboot, hotplug ou auto et si le service network a été démarré. Auparavant, il était d'usage que la commande ifup <nom-de-l-interface> lance l'initialisation du matériel. La procédure est maintenant inversée. Un composant matériel est d'abord initialisé, puis toutes les autres actions suivent. Ainsi, il est possible de configurer un nombre variable de périphériques de manière optimale avec un ensemble de configurations existantes.

Tableau 22.5, « Scripts pour la configuration manuelle du réseau » résume les principaux scripts impliqués dans la configuration réseau. Dans la mesure du possible, une distinction a été faite entre interface et matériel.

Tableau 22.5. Scripts pour la configuration manuelle du réseau

Étape de configuration

Commande

Fonction

Matériel

hw{up,down,status}

Les scripts hw* sont appelés par le sous-système de branchement à chaud pour initialiser un périphérique, annuler son initialisation, ou demander l'état d'un périphérique. De plus amples informations sont disponibles dans man hwup.

Interface

getcfg

getcfg vous permet d'obtenir à partir du nom d'une configuration ou d'une description matérielle le nom de l'interface correspondante. De plus amples informations sont disponibles dans man getcfg.

Interface

if{up,down,status}

Les scripts if* démarrent les interfaces réseau existantes ou renvoient l'état de l'interface spécifiée. Vous trouverez plus d'informations dans la page de manuel de ifup.

Vous trouverez plus d'informations à propos des noms de périphériques persistants dans Chapitre 18, Le système Hotplug et Chapitre 19, Nœuds de périphériques dynamiques avec udev.

22.5.1. Fichiers de configuration

Cette section donne un aperçu des fichiers de configuration réseau et explique leur fonction ainsi que le format utilisé.

22.5.1.1. /etc/syconfig/hardware/hwcfg-*

Ces fichiers contiennent les configuration matérielles des cartes réseau et des autres périphériques. Ils contiennent les paramètres nécessaires, comme le module du noyau, le mode de démarrage et les associations de scripts. Pour les détails, reportez-vous à la page de manuel de hwup. Les configurations de hwcfg-static-* sont appliquées lorsque coldplug démarre, indépendamment du matériel existant.

22.5.1.2. /etc/sysconfig/network/ifcfg-*

Ces fichiers contiennent les configurations de l'interface réseau. Ils contiennent des informations telles que le mode de démarrage et l'adresse IP. Les paramètres possibles sont décrits dans la page de manuel de ifup. Il est également possible d'utiliser toutes les variables des fichiers dhcp, wireless et config dans les fichiers ifcfg-* si un réglage général ne doit être utilisé que pour une seule interface.

22.5.1.3. /etc/sysconfig/network/config, dhcp, wireless

Le fichier config contient les réglages généraux concernant le comportement de ifup, ifdown et ifstatus. dhcp contient des réglages concernant DHCP et wireless des réglages liés aux cartes réseau sans fil. Les variables de ces trois fichiers sont commentées et peuvent également être utilisées dans les fichiers ifcfg-* où elles sont prioritaires.

22.5.1.4. /etc/sysconfig/network/routes,ifroute-*

Le routage statique des paquets TCP/IP est fixé ici. Toutes les routes statiques exigées par les diverses tâches du système peuvent être indiquées dans le fichier /etc/sysconfig/network/routes : les routes vers un hôte, les routes vers un hôte via une passerelle et les routes vers un réseau. Pour chaque interface nécessitant un routage individuel, définissez un fichier de configuration supplémantaire : /etc/sysconfig/network/ifroute-*. Remplacez * par le nom de l'interface. Voici à quoi ressemblent les déclarations des fichiers de configuration du routage :

 DESTINATION
    PASSERELLE MASQUE       INTERFACE [ TYPE ] [ OPTIONS ] DESTINATION
    PASSERELLE LG_PREFIXE INTERFACE [ TYPE ] [ OPTIONS ] DESTINATION/LG_PREFIXE
    PASSERELLE -                 INTERFACE [ TYPE ] [ OPTIONS ] 

Pour ne pas indiquer PASSERELLE, MASQUE, LG_PREFIXE ou INTERFACE, écrivez - à la place. Les déclarations TYPE et OPTIONS peuvent simplement être omises.

La destination de la route est dans la première colonne. Cette colonne peut contenir l'adresse IP d'un réseau, d'un hôte ou, dans le cas de serveurs de noms accessibles, le réseau ou le nom d'hôte pleinement qualifié.

La deuxième colonne contient la passerelle par défaut ou une passerelle par laquelle il est possible d'accéder à un hôte ou un réseau. La troisième colonne contient le masque réseau pour des réseaux ou des hôtes derrière une passerelle. Par exemple, le masque est 255.255.255.255 pour un hôte derrière une passerelle.

La dernière colonne n'est pertinente que pour les réseaux connectés à l'hôte local, comme la boucle locale, Ethernet, RNIS, PPP et le périphérique factice. Le nom du périphérique doit être saisi ici.

22.5.1.5. /etc/resolv.conf

Ce fichier indique à quel domaine l'hôte appartient (mot-clé search). Y figure également l'état de l'adresse du serveur de noms auquel accéder (mot-clé nameserver). Plusieurs noms de domaine peuvent être spécifiés. Lors de la résolution d'un nom qui n'est pas pleinement qualifié, une tentative est effectuée pour en générer un en accolant les différents éléments search. Utilisez plusieurs serveurs de noms en saisissant plusieurs lignes commençant chacune par nameserver. Faites précéder les commentaires par des caractères #. YaST enregistre le serveur de noms spécifié dans ce fichier. Exemple 22.5, « /etc/resolv.conf  » montre à quoi /etc/resolv.conf pourrait ressembler.

Exemple 22.5. /etc/resolv.conf

# Notre domaine search exemple.com
# Nous utilisons soleil (192.168.0.20) comme serveur de noms nameserver 192.168.0.20
    

Certains services, comme pppd (wvdial), ipppd (isdn), dhcp(dhcpcd et dhclient), pcmcia et hotplug, modifient le fichier /etc/resolv.conf au moyen du script modify_resolvconf. Si le fichier /etc/resolv.conf a été temporairement modifié par ce script, il contient un commentaire prédéfini qui fournit des informations sur le service qui l'a modifié, l'endroit où le fichier d'origine a été sauvegardé et comment on peut revenir sur le mécanisme de modification automatique. Si l'on modifie plusieurs fois /etc/resolv.conf, le fichier imbrique les modifications successives. Vous pouvez revenir sur celles-ci proprement si cette annulation a lieu dans un ordre différent de celui dans lequel les modifications ont été introduites. Les services susceptibles d'exiger cette flexibilité comprennent isdn, pcmcia et hotplug.

Lorsqu'on n'a pas mis fin à un service de façon normale et propre, il est possible de restaurer le fichier original à l'aide de modify_resolvconf. De plus, lors de l'amorçage du système, un contrôle est effectué pour vérifier s'il ne reste pas un resolv.conf non nettoyé, modifié, par exemple après une panne du système, auquel cas le resolv.conf original (non modifié) est restauré.

YaST utilise la commande modify_resolvconf check pour savoir si resolv.conf a été modifié et avertit ensuite l'utilisateur que ses modifications seront perdues après la restauration du fichier. En dehors de cela, YaST ne compte pas sur modify_resolvconf, ce qui signifie que l'impact du changement de resolv.conf par le biais de YaST équivaut à une modification manuelle. Dans les deux cas, les changements ont un effet permanent. Les modifications demandées par les services mentionnés ne sont que temporaires.

22.5.1.6. /etc/hosts

Dans ce fichier représenté dans Exemple 22.6, « /etc/hosts  »), les adresses IP sont affectées à des noms d'hôtes. Si aucun serveur de noms n'est mis en œuvre, il faut lister ici tous les hôtes avec lesquels une connexion IP doit être configurée. Pour chaque hôte, saisissez une ligne composée de l'adresse IP, du nom d'hôte pleinement qualifié et du nom d'hôte dans le fichier. L'adresse IP doit être placée au début de la ligne et les autres éléments séparés par des blancs et des tabulations. Les commentaires sont toujours précédés d'un caractère #.

Exemple 22.6. /etc/hosts

127.0.0.1 localhost
192.168.0.20 soleil.exemple.com soleil
192.168.0.1; 192.168.0.1; terre

22.5.1.7. /etc/networks

C'est ici que les noms de réseau sont convertis en adresses réseau. Leur format est similaire à celui du fichier hosts, si ce n'est que les noms de réseau précèdent les adresses. Consultez Exemple 22.7, « /etc/networks  »).

Exemple 22.7. /etc/networks

loopback     127.0.0.0
localnet     192.168.0.0

22.5.1.8. /etc/host.conf

La résolution de noms — la traduction de noms d'hôtes et de noms de réseaux via la bibliothèque resolver — est contrôlée par ce fichier. On ne l'utilise que pour les programmes liés à la libc4 ou la libc5. Pour les programmes glibc actuels, reportez-vous aux réglages contenus dans le fichier /etc/nsswitch.conf. Un paramètre doit toujours se trouver seul dans sa propre ligne. Les commentaires sont précédés d'un caractère #. Un exemple de /etc/host.conf est présenté dans Tableau 22.6, « Paramètres de /etc/host.conf ».

Tableau 22.6. Paramètres de /etc/host.conf

order hosts, bind

Il s'agit d'établir l'ordre de consultation des services de résolution d'un nom. Les arguments possibles sont (séparés l'un de l'autre par des espaces ou des virgules) :

hosts : chercher dans le fichier /etc/hosts

bind : accéder à un serveur de noms

nis  utiliser NIS

multi on/off

Détermine si un ordinateur donné peut avoir plusieurs adresses IP dans /etc/hosts.

nospoof on spoofalert on/off

Ces paramètres agissent sur la prévention d'usurpation (spoofing) du serveur de noms, mais n'ont pas d'autre impact sur la configuration réseau.

trim nom-de-domaine

Le nom de domaine indiqué est séparé du nom d'hôte après la résolution du nom d'hôte (si du moins le nom d'hôte comprend le nom de domaine). Cette option est utile si le fichier /etc/hosts ne contient que des noms provenant du domaine local, mais qui doivent quand même être être reconnus avec les noms de domaine accolés.

Exemple 22.8. /etc/host.conf

# Le démon named tourne
order hosts bind
# Permettre des adresses multiples
multi on

22.5.1.9. /etc/nsswitch.conf

La version 2.0 de la bibliothèque C de GNU a introduit le Name Service Switch (NSS). Reportez-vous à la page de manuel man 5 nsswitch.conf et au The GNU C Library Reference Manual pour les détails.

L'ordre des requêtes est défini dans le fichier /etc/nsswitch.conf. Un exemple de nsswitch.conf est présenté dans Exemple 22.9, « /etc/nsswitch.conf  ». Les commentaires sont introduits par des caractères #. Dans cet exemple, l'élément placé sous la base de données hosts signifie qu'une requête est envoyée à /etc/hosts (files) via DNS (reportez-vous à la section Chapitre 24, La résolution de noms).

Exemple 22.9. /etc/nsswitch.conf

passwd:     compat group:      compat hosts:      files dns
     networks:   files dns services:   db files protocols:  db files netgroup:
     files automount:  files nis
    

Les « bases de données » disponibles sur NSS sont répertoriées dans le tableau Tableau 22.7, « Bases de données disponibles dans /etc/nsswitch.conf ». De plus, automount, bootparams, netmasks et publickey sont attendus dans un futur proche. Les options de configuration pour les bases de données NSS sont répertoriées dans le tableau Tableau 22.8, « Possibilités de configuration des bases de données NSS ».

Tableau 22.7. Bases de données disponibles dans /etc/nsswitch.conf

aliases

Alias de courrier utilisés par sendmail ; reportez-vous à la page de manuel man 5 aliases.

ethers

Adresses Ethernet.

group

Pour les groupes d'utilisateurs, utilisés par getgrent. Consultez également la page de manuel de group.

hosts

Pour les noms d'hôtes et les adresses IP, utilisés par gethostbyname et les fonctions similaires.

netgroup

Il s'agit de la liste en vigueur sur le réseau des hôtes et des utilisateurs pour le contrôle des droits d'accès ; reportez-vous à man 5 netgroup.

networks

Noms et adresses des réseaux utilisés par getnetent.

passwd

Mots de passe utilisateur utilisés par getpwent ; reportez-vous à la page de manuel man 5 passwd.

protocols

Protocoles réseau utilisés par getprotoent ; reportez-vous à la page de manuel man 5 protocols.

rpc

Noms et adresses d'appels de procédure distants (Remote Procedure Call) utilisés par getrpcbyname et d'autres fonctions similaires.

services

Services réseau utilisés par getservent.

shadow

Mots de passe shadow des utilisateurs utilisés par getspnam ; reportez-vous à la page de manuel man 5 shadow.

Tableau 22.8. Possibilités de configuration des bases de données NSS

files

accès direct à des fichiers, par exemple à /etc/aliases.

db

accès à une base de données.

nis, nisplus

NIS, reportez-vous à Chapitre 25, Utiliser NIS

dns

peut seulement être utilisé comme extension de hosts et networks.

compat

peut seulement être utilisé comme extension de passwd, shadow et group.

22.5.1.10. /etc/nscd.conf

Ce fichier permet de configurer nscd (name service cache daemon). Reportez-vous à man 8 nscd et man 5 nscd.conf). Par défaut, les éléments système provenant de passwd et groups sont mis en cache par nscd. C'est important pour les performances des services de répertoires comme NIS et LDAP, car sinon il faut utiliser la connexion réseau pour chaque accès aux noms ou aux groupes. hosts n'est normalement pas mis en cache par défaut, parce que le mécanisme contenu dans nscd pour mettre en cache les hôtes rend le système incapable de se fier aux contrôles de recherches directes ou inverses. Au lieu de demander à nscd de mettre des noms en cache, configurez un serveur de cache DNS.

Si la mise en cache de passwd est activée, il faut environ 15 secondes jusqu'à ce qu'un utilisateur local récemment ajouté soit reconnu. Réduisez ce temps d'attente en redémarrant nscd avec la commande rcnscd restart.

22.5.1.11. /etc/HOSTNAME

C'est ici que se trouve le nom d'hôte sans nom de domaine accolé. Ce fichier est lu par plusieurs scripts pendant que la machine démarre. Il ne peut contenir qu'une ligne, dans laquelle le nom d'hôte est défini.

22.5.2. Scripts de démarrage

En dehors des fichiers de configuration décrits précédemment, il y a également différents scripts qui chargent les programmes réseau pendant que la machine amorce. Ceux-ci sont démarrés dès que le système passe à un des niveaux d'exécution multi-utilisateurs. Certains de ces scripts sont décrits dans le tableau Tableau 22.9, « Quelques scripts de démarrage des programmes réseau »).

Tableau 22.9. Quelques scripts de démarrage des programmes réseau

/etc/init.d/network

Ce script gère la configuration des interfaces réseau. Le matériel doit déjà avoir été initialisé par /etc/init.d/coldplug (par le biais de hotplug). Si le service network n'a pas été démarré, aucune interface réseau n'est mise en œuvre quand elle est ajoutée au moyen de hotplug.

/etc/init.d/xinetd

Démarre xinetd. xinetd peut servir à mettre à disposition des services de serveur sur le système. Par exemple, il peut démarrer vsftpd chaque fois qu'une connexion FTP est initiée.

/etc/init.d/portmap

Démarre portmapper, lequel est requis pour pouvoir utiliser un serveur RPC, comme par exemple un serveur NFS.

/etc/init.d/nfsserver

Démarre le serveur NFS.

/etc/init.d/sendmail

Contrôle le processus sendmail.

/etc/init.d/ypserv

Démarre le serveur NIS.

/etc/init.d/ypbind

Démarre le client NIS.


SUSE LINUX Guide de l'administrateur 9.2