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.1 : Choix des modules

# On préfère iconfig plutôt qu'iproute2 .
modules="ifconfig"

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

# 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 ». iproute2 est un paquet bien plus puissant et plus flexible, mais n'est pas inclus par défaut.

Exemple de code 2.1 : installer iproute2

# emerge sys-apps/iproute2

# Pour préférer ifconfig à iproute2 si les deux sont installés 
# comme openrc prefère utiliser iproute2 :
modules="ifconfig"

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 2.2 : exemples 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 ou pump. 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.

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 3.1 : 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 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

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

Exemple de code 4.1 : installer le paquet ppp

# emerge net-dialup/ppp

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

Exemple de code 4.2 : 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

Assurez-vous de définir rc_depend_strict à "YES" dans /etc/rc.conf.

Maintenant, éditez le fichier /etc/conf.d/net.

Exemple de code 4.3 : une configuration de base 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='user'
password_ppp0='password'
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"

rc_need_ppp0="net.eth0"

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

Exemple de code 4.4 : 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 /usr/share/doc/openrc-0.8.3-r1/net.example.bz2. I Elle contient des explications très détaillées sur les réglages à votre disposition pour configurer votre PPP. Bien-entendu, remplacez 0.8.3-r1 par la version de OpenRC installée sur votre système.

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 requête arp 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 5.1 : 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.

Tout d'abord, annulez la configuration des interfaces participantes :

Exemple de code 6.1 : annulation de la configuration des interfaces dans /etc/conf.d/net

config_eth0="null"
config_eth1="null"
config_eth2="null"

Ensuite, définissez la liaison entre les interfaces:

Exemple de code 6.2 : Définir l'agrégation de liens

slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"

Retirez les services net.eth* des niveaux d'exécution, créez un net.bond0 ajoutez le au niveau d'exécution correct.

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, vous pourriez avoir un serveur qui se connecte à Internet via un modem ADSL et une carte réseau sans fil pour accéder à Internet à travers le modem ADSL. Vous pourriez créer un pont pour connecter les deux réseaux ensemble.

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

# Configuration du pont (voir « man brctl » 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"

# Dépend de eth0 et eth1  car elles peuvent demander une configuration supplémentaire.
rc_need_br0="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

Si vous en avez besoim, vous pouvez modifier l'adresse MAC de vos interfaces via les fichiers de configuration réseau aussi :

Exemple de code 8.1 : 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 9.1 : 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.Assurez-vous aussi que vous utilisez iproute2 comme module de configuration plutôt que ifconfig.

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.

Pour configurer les VLANs, spécifiez d'abord le numéro de VLAN dans /etc/conf.d/net comme ceci :

Exemple de code 10.1 : Spécifier les numéros de VLAN

vlans_eth0="1 2"

Enusuite configurez l'interface de chaque VLAN:

Exemple de code 10.2 : configuration de l'interface pour chaque VLAN

config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"

config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"

Les configuration spécifiques aux VLAN sont assurées par vconfig comme ceci :

Exemple de code 10.3 : configurer les VLANs

vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"

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


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


Imprimer

Voir tout

Dernière mise à jour le 15 août 2013

Une version originale plus récente datée du 12 avril 2014 existe.

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

Nicolas Litchinko
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

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