Gentoo Logo

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


3. Les modules réseaux

Table des matières :

3.a. Les modules réseaux

Nous utilisons à présent des scripts réseaux modulaires, c'est-à-dire que nous pouvons facilement ajouter du support pour un nouveau type d'interface ou des nouveaux modules de configuration tout en gardant une compatibilité avec les anciens.

Par défaut, un module se charge si le paquet nécessaire à son utilisation est installé. Si vous spécifiez ici un module dont le paquet n'est pas installé, vous obtiendrez alors une erreur vous indiquant quel paquet doit être installé pour utiliser ce module. Typiquement, cette configuration n'est à faire que si vous avez installé plusieurs paquets qui fournissent le même service et si vous en préférez un en particulier.

Note : Tous les réglages mentionnés ci-dessous se trouvent dans etc/conf.d/net sauf mention contraire.

Exemple de code 1 : Choix des modules

# On préfère iproute2 plutôt que ifconfig.
modules=( "iproute2" )

# Vous pouvez également spécifier un module pour une interface particulière.
# Ici, on préfère utiliser udhcpc plutôt que dhcpcd pour eth0.
modules_eth0=( "udhcpc" )

# Vous pouvez enfin spécifier quels modules *ne pas* charger.
# Par exemple, vous pouvez utiliser WPA Supplicant ou
# linux-wlan-ng pour contrôler la configuration du sans fil mais vous voulez
# toujours configurer le réseau en fonction de l'ESSID.
modules=( "!iwconfig" )

3.b. Outils de configuration d'interfaces réseau

Nous fournissons deux outils de configuration d'interfaces réseau actuellement : ifconfig et iproute2. Vous avez besoin d'un de ces deux outils pour pouvoir procéder à la configuration du réseau.

ifconfig est l'outil par défaut de Gentoo et est inclu dans le profil « system ». proute2 est un paquet bien plus puissant et plus flexible, mais n'est pas inclu par défaut.

Exemple de code 2 : Installer iproute2

# emerge sys-apps/iproute2

# Pour préférer iproute2 à ifconfig si les deux sont installés :
modules=( "iproute2" )

Puisqu'ifconfig et iproute2 font à peu près la même chose, nous avons fait en sorte que la configuration de base fonctionne indifféremment avec les deux modules. Par exemple, les deux extraits de code ci-dessous fonctionnent quel que soit le module utilisé.

Exemple de code 3 : Exemple avec ifconfig ou iproute2

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# On peut aussi spécifier l'adresse de diffusion (broadcast) :
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP

Le DHCP est un moyen d'obtenir les informations nécessaires à la configuration du réseau (adresse IP, serveurs DNS, passerelle, etc.) depuis un serveur DHCP. Cela signifie que si un serveur DHCP est actif sur le réseau, vous n'avez qu'à indiquer à chaque client d'utiliser DHCP et ce dernier se débrouillera tout seul. Cependant, vous aurez peut-être quelque chose à configurer (réseau sans fil, liaison PPP ou autre) avant de pouvoir utiliser le DHCP.

Le DHCP peut être fourni par dhclient, dhcpcd, pump ou udhcpc. Chaque module DHCP a ses avantages et ses inconvénients. Voici un rapide résumé.

Module DHCP Paquet Avantages Inconvénients
dhclient net-misc/dhcp Produit par ISC, ceux-là même qui font le serveur DNS Bind.
Très configurable.
La configuration est trop complexe.
L'application est vraiment énorme.
Ne récupère pas les serveurs NTP en DHCP.
N'envoie pas le nom de la machine au serveur par défaut.
dhcpcd net-misc/dhcpcd C'est le client par défaut de Gentoo depuis longtemps.
Ne s'appuie pas sur d'autre outils.
Est maintenu par l'équipe Gentoo.
Parfois lent.
Reste lancé même si l'adresse IP est allouée « pour toujours ».
pump net-misc/pump Léger.
Ne repose pas sur d'autres outils.
N'est plus maintenu par ses développeurs.
Pas fiable, en particulier au travers des modems.
Ne sait pas récupérer les informations NIS depuis DHCP.
udhcpc net-misc/udhcp Léger, le plus petit client des environs.
Conçu pour les systèmes embarqués.
Peu testé, aucune distribution ne l'utilise par défaut.
Ne peut pas définir un délai d'attente supérieur à trois secondes.

Si vous avez plus d'un client DHCP installé, vous devez spécifier lequel utiliser, sinon nous utiliserons dhcpcd s'il est disponible.

Pour faire passer des options spécifiques au module dhcp, utilisez module_eth0="..." en changeant « module » par le nom du module DHCP à utiliser. Par exemple : dhcpcd_eth0.

Nous essayons de garder la configuration du DHCP relativement indépendante du module utilisé. Ainsi, voici la liste des commandes utilisables avec la variable dhcp_eth0. Par défaut, aucune n'est exécutée.

  • release : rend l'adresse IP afin qu'elle puisse être réutilisée.
  • nodns : n'écrase pas le fichier /etc/resolv.conf.
  • nontp : n'écrase pas le fichier /etc/ntp.conf.
  • nonis : n'écrase pas le fichier /etc/yp.conf.

Exemple de code 4 : Exemple de configuration DHCP dans /etc/conf.d/net

# Nécessaire seulement si plusieurs modules DHCP sont installés.
modules=( "dhcpcd" )

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # On attend une réponse en 10 secondes maxi.
dhcp_eth0="release nodns nontp nonis" # On ne fait que récupérer une adresse.

Note : dhcpcd, udhcpc et pump envoient le nom actuel de la machine au serveur DHCP par défaut donc vous n'avez plus besoin de le spécifier.

3.d. L'ADSL avec PPPoE/PPPoA

Installons tout d'abord le logiciel pour gérer l'ADSL.

Exemple de code 5 : Installer le paquet ppp

# emerge net-dialup/ppp

Note : Vous devez utiliser >=baselayout-1.12.x pour avoir le support de PPPoA.

Ensuite, créez le script net PPP et le script net de l'interface Ethernet que doit utiliser PPP :

Exemple de code 6 : Créer les script net PPP et Ethernet

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Mettez bien RC_NET_STRICT_CHECKING="yes" dans le fichier /etc/conf.d/rc.

Nous devons maintenant éditer le fichier /etc/conf.d/net.

Exemple de code 7 : Une configuration simple de PPPoE

config_eth0=( null ) (Remplacez éventuellement eth0 par le nom correct.)
config_ppp0=( "ppp" )
link_ppp0="eth0" (Ici aussi.)
plugins_ppp0=( "pppoe" )
username_ppp0='nom_utilisateur'
password_ppp0='mot_de_passe'
pppd_ppp0=(
       "noauth"
       "defaultroute"
       "usepeerdns"
       "holdoff 3"
       "child-timeout 60"
       "lcp-echo-interval 15"
       "lcp-echo-failure 3"
       noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)

depend_ppp0() {
    need net.eth0
}

Vous pouvez également placer votre mot de passe dans /etc/ppp/pap-secrets.

Exemple de code 8 : Exemple de fichier /etc/ppp/pap-secrets

# Le caractère « * » est important.
"nom_utilisateur" * "mot_de_passe"

Si vous utilisez PPPoE avec un modem USB, vous devez installer br2684ctl. Lisez le fichier /usr/portage/net-dialup/speedtouch-usb/files/README pour savoir comment le configurer correctement.

Important : Lisez attentivement la section sur l'ADSL et PPP dans le fichier /etc/conf.d/net.example. Elle contient des explications très détaillées sur les réglages à votre disposition pour configurer votre PPP.

3.e. APIPA (Adressage automatique d'adresse IP privée)

APIPA essaye de trouver une adresse libre dans l'intervalle 169.254.0.0-169.254.255.255 en faisant un arping sur une adresse au hasard sur l'interface. S'il n'y a pas de réponse, alors l'adresse est assignée à cette interface.

Cette méthode est utile pour les réseaux où il n'y a pas de serveur DHCP, où les machines ne sont pas connectées directement à Internet et où tous les autres ordinateurs utilisent APIPA.

Pour obtenir le support APIPA, installez net-misc/iputils ou net-analyzer/arping.

Exemple de code 9 : Configuration APIPA dans /etc/conf.d/net

# Essaye d'abord DHCP puis APIPA, si cela ne marche pas.
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# Utilise juste APIPA.
config_eth0=( "apipa" )

3.f. Agrégation de liens (Bonding)

Pour pouvoir faire de l'agrégation de liens (bonding, trunking), installez net-misc/ifenslave.

L'agrégation de liens est utilisée pour augmenter la bande passante réseau. Si vous avez deux cartes réseaux branchées sur le même réseau, vous pouvez les fusionner afin que vos applications ne voient qu'une seule interface qui utilise en réalité les deux cartes.

Exemple de code 10 : Configurer une agrégation de liens dans /etc/conf.d/net

# Pour fusionner des interfaces ensemble :
slaves_bond0="eth0 eth1 eth2"

# Vous pourriez vouloir ne pas assigner d'adresse à cette interface :
config_bond0=( "null" )

# On dépend de la configuration des interfaces utilisées :
depend_bond0() {
    need net.eth0 net.eth1 net.eth2
}

3.g. Pont réseau (« bridge » 802.1d)

Pour activer le support des ponts réseaux, installez net-misc/bridge-utils.

Le pontage de réseaux est utilisé pour connecter plusieurs réseaux ensemble. Par exemple, un serveur qui se connecte à Internet via un modem ADSL peut utiliser un pont réseau pour permettre aux machines connectées sur sa carte réseau sans fil d'accéder à Internet.

Exemple de code 11 : Configuration d'un pont réseau dans /etc/conf.d/net

# Configuration du pont (voir « man btctl » pour plus de détails) :
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# Ajout de ports au pont br0 :
bridge_br0="eth0 eth1"

# Les ports doient être explicitement non configurés pour ne pas
# lancer DHCP :
config_eth0=( "null" )
config_eth1=( "null" )

# On assigne enfin une adresse au pont. Nous aurions pu utiliser DHCP ici :
config_br0=( "192.168.0.1/24" )

# On dépend de la configuration des interfaces utilisées :
depend_br0() {
    need net.eth0 net.eth1
}

Important : Pour la configuration de certains ponts, vous pourriez avoir besoin de consulter la documentation sur les noms des variables.

3.h. Adresse MAC

Vous n'avez pas besoin d'installer quoi que ce soit pour changer l'adresse MAC de votre interface si vous utilisez sys-apps/baselayout-1.11.14 ou une version plus récente. En revanche, si vous utilisez une version de baselayout plus ancienne ou si vous voulez assigner une adresse aléatoire, vous devez installer net-analyzer/macchanger.

Exemple de code 12 : Exemples de modification d'adresse MAC

# Pour assigner une adresse MAC à une interface :
mac_eth0="00:11:22:33:44:55"

# Pour tirer au hasard les trois derniers octets :
mac_eth0="random-ending"

# Pour obtenir une adresse aléatoire en gardant le type physique de
# votre interface (par exemple : fibre, cuivre, sans fil...) :
mac_eth0="random-samekind"

# Pour obtenir une adresse aléatoire sans garder le type physique de
# votre interface (par exemple : fibre, cuivre, sans fil...) :
mac_eth0="random-anykind"

# Pour une adresse totalement aléatoire (ATTENTION : certaines adresses
# générées de cette façon n'agissent pas comme l'on pourrait s'y attendre) :
mac_eth0="random-full"

3.i. Les tunnels

Vous n'avez pas à installer quoi que ce soit pour créer des tunnels car l'outil de configuration d'interfaces réseaux peut s'en charger.

Exemple de code 13 : Configuration de tunnels dans /etc/conf.d/net

# Pour un tunnel GRE :
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# Pour un tunnel IPIP :
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Pour configurer l'interface du tunnel :
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )

3.j. VLAN (802.1q)

Pour activer le support des VLAN, installez net-misc/vconfig.

Un réseau virtuel (ou VLAN) est un groupe d'équipements réseaux qui agissent comme s'ils se trouvaient sur un seul segment réseau, même si ce n'est pas le cas. Les membres d'un VLAN peuvent uniquement voir les autres membres du même VLAN, même s'ils sont physiquement sur le même réseau.

Exemple de code 14 : Configuration de VLAN dans /etc/conf.d/net

# Spécifiez les numéros des VLAN auxquels l'interface appartient.
# Veuillez vous assurez que les identifiants des VLAN ne sont pas
# complétés par des zéros.
vlans_eth0="1 2"

# On configure ensuite le VLAN (voir « man vconfig » pour plus de détails) :
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# Enfin, on configure les interfaces comme d'habitude :
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Important : Pour la configuration de certains VLAN, vous pourriez avoir besoin de consulter la documentation sur les noms des variables.


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


Imprimer

Dernière mise à jour le 2 juin 2007

Résumé : Gentoo fournit une configuration réseau très flexible. Vous apprendrez ici comment choisir votre client DHCP, mettre en place l'aggrégation de liens, les ponts réseaux, les VLAN et autres.

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.