[ << ]
[ < ]
[ 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 |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
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 |
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 |
dns_domain_Mon____r_zo="Mon \"\\ rézo"
|
[ << ]
[ < ]
[ Sommaire ]
[ > ]
[ >> ]
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|