Gentoo Logo

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


2. Configuration avancée

Table des matières :

2.a. Configuration avancée

La variable config_eth0 est le cœur de la configuration d'une interface. Sa valeur est une liste d'instructions de haut niveau pour configurer une interface (eth0 dans notre cas). Chaque commande de la liste d'instructions est exécutée séquentiellement. L'interface est considérée active si au moins une commande marche.

Voici une liste des instructions intégrées :

Commande Description
null Ne fait rien.
noop Si l'interface est active et possède une adresse, alors annule sa configuration en renvoyant un code de succès.
Une adresse IPv4 ou IPv6 Ajoute l'adresse à l'interface.
dhcp, adsl ou apipa
(ou bien une commande personnalisée venant d'une module tiers)
Exécute le module qui fournit la commande. Par exemple, dhcp exécutera un module qui fournit le DHCP, ce qui peut être dhcpd, udhcpc ou pump.

Si une commande échoue, vous pouvez spécifier une commande de secours. Celle-ci doit correspondre exactement à la structure de configuration.

Vous pouvez enchainer ces commandes ensemble. Voici quelques vrais exemples :

Exemple de code 1 : Exemples de configuration

# Ajout de trois adresses IPv4 :
config_eth0=(
    "192.168.0.2/24"
    "192.168.0.3/24"
    "192.168.0.4/24"
)

# Ajout d'une adresse IPv4 et deux adresses IPv6
config_eth0=(
    "192.168.0.2/24"
    "4321:0:1:2:3:4:567:89ab"
    "4321:0:1:2:3:4:567:89ac"
)

# On garde l'adresse déjà assignée par le noyau, sauf si l'interface
# tombe. Dans ce cas, on en assigne une autre grâce à DHCP. Si DHCP ne marche
# pas, alors on ajoute une adresse statique déterminée par APIPA.
config_eth0=(
    "noop"
    "dhcp"
)
fallback_eth0=(
    "null"
    "apipa"
)

Note : Lorsque vous utilisez le module ifconfig pour ajouter plusieurs adresses, un alias d'interface est alors créé pour chaque adresse supplémentaire. Donc, avec les deux exemples précédents, vous obtiendrez eth0, eth0:1 et eth0:2. Vous ne pouvez rien faire de particulier avec ces interfaces car le noyau et les applications considèreront eth0:1 et eth0:2 comme n'étant juste qu'eth0.

Important : L'ordre des commandes de secours est très important ! En effet, si nous n'avions pas spécifié la commande null, alors la commande apipa aurait été lancée si seule la commande noop avait échoué.

Note : APIPA et DHCP seront expliqués plus tard.

2.b. Dépendance du réseau

Les scripts de démarrage du répertoire /etc/init.d/ peuvent dépendre d'une interface réseau particulière ou simplement de net. Ce que signifie réellement net est configurable grâce à la variable RC_NET_STRICT_CHECKING dans le fichier /etc/conf.d/rc.

Valeur Description
none Le service net est toujours considéré comme actif.
no Cela signifie qu'au moins un service net.*, excepté net.lo, doit être actif. Cela peut être utile pour les utilisateurs de portables qui ont une interface wifi et une statique car une seule interface active à la fois suffit.
lo C'est la même chose que l'option no, mis à part que net.lo compte. C'est utile pour les gens qui se fichent d'avoir forcément une interface activée au démarrage du système.
yes Ici, toutes les interfaces réseaux doivent être actives pour que le service net soit considéré comme démarré.

Mais comment fait-on si net.br0 dépend de net.eth0 et de net.eth1 ? net.eth1 peut être une interface wifi ou bien une connexion ppp qui nécessite une configuration avant de pouvoir être ajouté au pont réseau. Nous ne pouvons régler ce problème dans /etc/init.d/net.br0 puisque c'est un lien symbolique vers net.lo.

La réponse est que vous pouvez fabriquer votre propre fonction depend() dans /etc/conf.d/net.

Exemple de code 2 : Les dépendances de net.br0 dans /etc/conf.d/net

# Vous pouvez utiliser n'importe quel type de dépendance (use, after,
# before) tels qu'on les trouve dans les scripts.
depend_br0() {
    need net.eth0 net.eth1
}

Pour une explication plus détaillée des dépendances, veuillez consulter la section « Écrire un script d'initialisation » du Manuel Gentoo.

2.c. Noms et valeurs des variables

Le nom des variables est dynamique. En principe, il suit le schéma variable_${interface|mac|essid|apmac}. Par exemple, la variable dhcpcd_eth0 contient la valeur des options dhcpcd pour eth0 et dhcpcd_essid contient la valeur des options dhcpcd pour quand une interface se connecte à l'ESSID « essid ».

Cependant, il n'y a pas de règle pure et simple stipulant que les noms d'interface doivent être de la forme ethX. En fait, de nombreuses interfaces sans fil ont des noms tels que wlanX, raX ou encore ethX. Aussi, les interfaces définies par l'utilisateur, telles que les ponts réseaux, peuvent avoir n'importe quel nom, « foo » par exemple. Pour rendre la vie encore plus intéressante, les bornes d'accès wifi peuvent avoir des noms qui contiennent des caractères non alphanumériques (c'est important car vous pouvez configurer les paramètres réseaux en fonction de l'ESSID)...

Le problème, dans tout ceci, c'est que Gentoo utilise des variables Bash pour gérer le réseau... et Bash ne peut rien utiliser d'autre que les alphanumériques anglais. Pour contourner cette limitation, nous transformons tout caractère qui n'est pas un alphanumérique anglais en un souligné _.

Un autre problème de Bash est le contenu des variables : certains caractères doivent être échappés. La parade est d'ajouter un antislash \ devant chacun de ces caractères. Les caractères qui doivent être échappés sont ", ' et \.

Dans cet exemple, nous utilisons un ESSID wifi car ils peuvent contenir un ensemble plus large de caractères. Disons que nous devons utiliser l'ESSID Mon "\ rézo :

Exemple de code 3 : Exemple de nom de variable

# Cela marche, mais le domaine est invalide.
dns_domain_Mon____r_zo="Mon \"\\ rézo"

# La ligne ci-dessus configure le domaine DNS à « Mon "\ rézo »
# lorsqu'une carte sans fil se connecte à un point d'accès
# dont l'ESSID est « Mon "\ rézo ».

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Dernière mise à jour le 2 juin 2007

Résumé : Nous apprendrons ici comment fonctionne la configuration du réseau. Vous devrez comprendre cette partie avant que nous attaquions les modules réseaux.

Sven Vermeulen
Auteur

Grant Goodyear
Auteur

Roy Marples
Auteur

Daniel Robbins
Auteur

Chris Houser
Auteur

Jerry Alexandratos
Auteur

Seemant Kulleen
Développeur Gentoo x86

Tavis Ormandy
Développeur Gentoo Alpha

Jason Huebel
Développeur Gentoo AMD64

Guy Martin
Développeur Gentoo HPPA

Pieter Van den Abeele
Développeur Gentoo PPC

Joe Kallar
Développeur Gentoo SPARC

John P. Davis
Correcteur

Pierre-Henri Jondot
Correcteur

Eric Stockbridge
Correcteur

Rajiv Manglani
Correcteur

Jungmin Seo
Correcteur

Stoyan Zhekov
Correcteur

Jared Hudson
Correcteur

Colin Morey
Correcteur

Jorge Paulo
Correcteur

Carl Anderson
Correcteur

Jon Portnoy
Correcteur

Zack Gilburd
Correcteur

Jack Morgan
Correcteur

Benny Chuang
Correcteur

Erwin
Correcteur

Joshua Kinard
Correcteur

Tobias Scherbaum
Correcteur

Joshua Saddler
Correcteur

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Lars Weiler
Contributeur

Xavier Neys
Correcteur, traducteur

Camille Huot
Traducteur

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

Donate to support our development efforts.

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

php|architect

php|architect

Copyright 2001-2007 Gentoo Foundation, Inc. Questions, Comments? Contact us.