Chapitre 5. Configuration du réseau

Table des matières

5.1. L’infrastructure de base du réseau
5.1.1. Nom de domaine
5.1.2. Résolution du nom d'hôte
5.1.3. Nom de l’interface réseau
5.1.4. Plage d'adresses réseau du réseau local (« LAN »)
5.1.5. La gestion du périphérique réseau
5.2. Configuration moderne de réseau pour l’ordinateur de bureau
5.2.1. Outils graphiques de configuration du réseau
5.3. Ancienne méthode de configuration et connexion réseau
5.4. Méthode de connexion réseau (ancienne)
5.4.1. La connexion DHCP avec Ethernet
5.4.2. Connexion Ethernet avec une adresse IP statique
5.4.3. La connexion PPP avec pppconfig
5.4.4. Autre connexion PPP avec wvdialconf
5.4.5. La connexion PPPoE avec pppoeconf
5.5. Configuration de base du réseau avec ifupdown (ancienne)
5.5.1. La syntaxe de commande simplifiée
5.5.2. Syntaxe de base de « /etc/network/interfaces »
5.5.3. L’interface réseau de rebouclage (« loopback »)
5.5.4. Interfaces réseau gérées par DHCP
5.5.5. Interface réseau avec une adresse IP fixe
5.5.6. Les bases de l’interface réseau sans fil
5.5.7. L’interface de réseau local sans fil avec WPA/WPA2
5.5.8. L’interface réseau local sans fil avec WEP
5.5.9. La connexion PPP
5.5.10. La connexion alternative PPP
5.5.11. La connexion PPPoE
5.5.12. État de configuration réseau de ifupdown
5.5.13. Configuration réseau de base
5.5.14. La paquet ifupdown-extra
5.6. Configuration réseau avancée avec ifupdown (ancienne)
5.6.1. La paquet ifplugd
5.6.2. Le paquet ifmetric
5.6.3. L’interface virtuelle
5.6.4. Syntaxe de commande avancée
5.6.5. L’entrée « mapping »
5.6.6. Configuration réseau commutable manuellement
5.6.7. Scripts avec le système ifupdown
5.6.8. Cartographie réseau avec guessnet
5.7. Configuration réseau de bas niveau
5.7.1. Commandes Iproute2
5.7.2. Opérations sûres de bas niveau sur le réseau
5.8. Optimisation du réseau
5.8.1. Rechercher le MTU optimum
5.8.2. Définir le MTU
5.8.3. Optimisation de TCP sur le réseau Internet
5.9. Infrastructure de netfilter
[Astuce] Astuce

Pour un guide d'ordre général concernant le réseau sous GNU/Linux, lire le Guide de l’administrateur réseau de Linux (« Linux Network Administrators Guide »).

[Astuce] Astuce

Bien que ce document utilise encore l'ancien ifconfig(8) avec IPv4 comme exemples de configuration réseau, Debian se dirige vers ip(8) avec IPv4 et IPv6 à partir de Wheezy. Les correctifs pour mettre à jour ce document sont les bienvenus.

5.1. L’infrastructure de base du réseau

Passons en revue l’infrastructure de base du réseau sur un système Debian moderne.

Tableau 5.1. Liste des outils de configuration du réseau

paquets popcon taille type description
ifupdown V:589, I:993 191 config::ifupdown outil standard pour activer ou désactiver le réseau (spécifique à Debian)
ifplugd V:4, I:10 352 , , gérer automatiquement le réseau filaire
ifupdown-extra V:0, I:2 119 , , script de test du réseau pour améliorer le paquet « ifupdown »
ifmetric V:0, I:1 100 , , définir la métriques de routage d'une interface réseau
guessnet V:0, I:1 532 , , script de cartographie réseau améliorant le paquet « ifupdown » par l’intermédiaire du fichier « /etc/network/interfaces »
ifscheme V:0, I:0 132 , , script de cartographie réseau pour améliorer le paquet « ifupdown »
ifupdown-scripts-zg2 V:0, I:0 147 , , scripts d'interface de Zugschlus fournissant une méthode manuelle à ifupdown
network-manager V:310, I:395 4015 config::NM NetworkManager (démon) : gère automatiquement le réseau
network-manager-gnome V:227, I:345 5746 , , NetworkManager (frontal de GNOME)
network-manager-kde V:7, I:29 36 , , NetworkManager (frontal de KDE)
wicd I:33 48 config::wicd gestionnaire de réseau filaire ou sans fil (métapaquet)
wicd-cli V:0, I:4 87 , , gestionnaire de réseau filaire ou sans fil (client en ligne de commandes)
wicd-curses V:2, I:7 195 , , gestionnaire de réseau filaire ou sans fil (client Curses)
wicd-daemon V:32, I:38 1654 , , gestionnaire de réseau filaire ou sans fil (démon)
wicd-gtk V:26, I:35 552 , , gestionnaire de réseau filaire ou sans fil (client GTK+)
iptables V:277, I:993 1378 config::Netfilter outils d'administration pour le filtrage des paquets et NAT (Netfilter)
iproute V:637, I:967 970 config::iproute2 iproute2, IPv6 et autres configurations avancées du réseau : ip(8), tc(8), etc
ifrename V:2, I:3 192 , , renommer une interface réseau en fonction de divers critères statiques : ifrename(8)
ethtool V:65, I:156 292 , , afficher ou modifier les paramètres d'un périphérique Ethernet
iputils-ping V:359, I:996 97 test::iproute2 tester l’accessibilité d'une machine distance par nom de machine ou adresse IP (iproute2)
iputils-arping V:4, I:32 36 , , tester l’accessibilité réseau d'une machine distante spécifiée par une adresse ARP
iputils-tracepath V:14, I:109 67 , , tracer le chemin du réseau vers une machine distante
net-tools V:698, I:997 916 config::net-tools boîte à outils réseau NET-3 (net-tools, configuration réseau IPv4) : ifconfig(8), etc.
inetutils-ping V:0, I:1 278 test::net-tools tester l’accessibilité réseau d'une machine distante par nom de machine ou adresse IP (ancien, GNU)
arping V:4, I:32 46 , , tester l’accessibilité réseau d'une machine distante spécifiée par une adresse ARP (ancien)
traceroute V:113, I:992 175 , , tracer le chemin réseau vers une machine distante (ancien, console)
isc-dhcp-client V:429, I:797 1768 config::low-level client DHCP
wpasupplicant V:345, I:460 1364 , , client prenant en charge WPA et WPA2 (IEEE 802.11i)
wpagui V:0, I:7 790 , , client graphique (Qt) pour wpa_supplicant
wireless-tools V:73, I:243 325 , , outils pour manipuler les « Extension Linux sans fil » (Linux Wireless Extensions)
ppp V:70, I:444 863 , , connexion PPP/PPPoE avec chat
pppoeconf V:2, I:27 340 config::helper assistant de configuration d'une connexion PPPoE
pppconfig V:1, I:12 990 , , assistant de configuration pour une connexion PPP avec chat
wvdial V:3, I:17 276 , , assistant de configuration pour une connexion PPP avec wvdial et ppp
mtr-tiny V:15, I:121 113 test::low-level tracer le chemin réseau vers une machine distante (curses)
mtr V:6, I:36 154 , , tracer le chemin réseau vers une machine distante (curses et GTK+)
gnome-nettool V:28, I:330 2644 , , outils pour des opérations d'informations habituelles sur le réseau (GNOME)
nmap V:61, I:337 14940 , , cartographie réseau / balayage de ports (Nmap, console)
zenmap V:2, I:14 2177 , , cartographie réseau / balayage de ports (GTK+)
tcpdump V:32, I:224 1028 , , analyseur de trafic réseau (Tcpdump, console)
wireshark V:13, I:88 2472 , , analyseur de trafic réseau (Wireshark, GTK+)
tshark V:4, I:35 338 , , analyseur de trafic réseau (console)
nagios3 V:4, I:16 29 , , système de surveillance et de gestion pour les machines, les services et les réseaux (Nagios)
tcptrace V:0, I:3 389 , , produit un résumé des connexions à partir d'une sortie de tcpdump
snort V:3, I:4 1752 , , système souple de détection d'intrusion par le réseau (Snort)
ntop V:6, I:14 1674 , , afficher l’utilisation du réseau dans le navigateur web
dnsutils V:115, I:921 374 , , clients réseau fournis par BIND : nslookup(8), nsupdate(8), dig(8)
dlint V:3, I:60 96 , , vérifier les zones d'information DNS en utilisant des requêtes du serveur de noms
dnstracer V:0, I:4 81 , , tracer une chaîne de serveurs DNS jusqu'à la source

5.1.1. Nom de domaine

La désignation du nom de domaine est délicate pour l’utilisateur d'une station de travail normale de type PC. La station de travail de type PC peut être mobile, se déplaçant sur le réseau, ou située derrière un pare-feu de type NAT, inaccessible depuis Internet. Dans de tels cas, il ne faudra pas que le nom de domaine soit un nom valide afin d'éviter les collisions de noms.

Si vous n'êtes pas certain du choix de nom de domaine, choisissez « localdomain ».

D'après l’analyse des courriels que je reçois, d'autres choix courants de domaines de premier niveau (TLD) non valables et sûrs semblent être « lan », « localnet », « home », « invalid » ou « local ». C'est cohérent avec les requêtes de TLD non valables signalées. Vous pouvez aussi choisir des domaines de deuxième ou troisième niveau non utilisés.

[Avertissement] Avertissement

Si le service DNS sur votre réseau local utilise « local » comme TLD pour votre LAN, il peut interférer avec mDNS.

[Astuce] Astuce

Lorsque vous utilisez un nom de domaine non valable, vous devez usurper le nom de domaine utilisé par certains programmes tels que le MTA afin qu’ils puissent fonctionner normalement. Consultez Section 6.3.3, « Configuration de l’adresse de courriel ».

5.1.2. Résolution du nom d'hôte

La résolution du nom d'hôte est actuellement prise en charge aussi par le mécanisme NSS (Name Service Switch). Le flux de cette résolution est le suivant :

  1. Le fichier « /etc/nsswitch.conf » avec une entrée comme « hosts: files dns » donne l’ordre de la résolution du nom d'hôte (cela remplace l’ancienne fonctionnalité de l’entrée « order » dans « /etc/host.conf »).

  2. La méthode files est d'abord appelée. Si le nom d'hôte est trouvé dans le fichier « /etc/hosts », elle retourne toutes les adresses valables qui y correspondent et quitte. (Le fichier « /etc/host.conf » contient « multi on »).

  3. La méthode dns est appelée. Si le nom d'hôte est trouvé par une requête au Système de noms de domaine Internet (DNS) (« Internet Domain Name System ») identifié par le fichier « /etc/resolv.conf », elle retourne toutes les adresses valables correspondantes et quitte.

Par exemple, « /etc/hosts » ressemble à ce qui suit :

127.0.0.1 localhost
127.0.1.1 <nom_hote>.<nom_domaine> <nom_hote>

# Les lignes suivantes servent pour les machines pouvant utiliser IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Chaque ligne commence par une adresse IP et est suivie du nom d'hôte associé.

L'adresse IP 127.0.1.1 en deuxième ligne de cet exemple pourrait ne pas être présente sur d'autres systèmes de type UNIX. L'installateur Debian ajoute cette entrée pour les systèmes sans adresse IP permanente en tant que contournement pour certains programmes (par exemple GNOME) comme expliqué dans le bogue nº 316099.

Le <nom_hote> correspond au nom d'hôte défini dans « /etc/hostname ».

Comme <nom_domaine> d'ordinateur portable, vous pouvez choisir un nom de domaine non valable et sûr comme « localdomain » (consultez Section 5.1.1, « Nom de domaine »).

Pour un système avec une adresse IP permanente, cette adresse IP devrait être utilisée à la place de 127.0.1.1.

Pour un système avec une adresse IP permanente et un nom de domaine complètement qualifié (FQDN) fourni par le système de noms de domaine (DNS), les <nom_hote> et <nom_domaine> canoniques devraient être utilisés ici.

« /etc/resolv.conf » est un fichier statique si le paquet resolvconf n'est pas installé. S'il est installé, c'est un lien symbolique. Dans tous les cas, il contient des informations qui initialisent les routines du résolveur. Si le DNS est trouvé à l’IP=« 192.168.11.1 », il contient ce qui suit :

nameserver 192.168.11.1

Le paquet resolvconf fait de ce « /etc/resolv.conf » un lien symbolique et gère son contenu automatiquement par le script hook.

La résolution du nom de machine par le DNS Multicast (en utilisant Zeroconf encore appelé Apple Bonjour / Apple Rendezvous), qui permet une résolution efficace des noms à l’aide de programmes courants UNIX/Linux dans le domaine mDNS ad-hoc « local », peut être fournie en installant le paquet libnss-mdns. Le fichier « /etc/nsswitch.conf » devra avoir une entrée semblable à « hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 » afin d'activer cette fonctionnalité.

La résolution du nom de machine par l'obsolète protocole NETBios over TCP/IP utilisé par les systèmes Windows plus anciens peut être fournie en installant le paquet winbind. Le fichier « /etc/nsswitch.conf » devra avoir une entrée semblable à « hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins » afin d'activer cette fonctionnalité (les systèmes Windows récents utilisent normalement la méthode dns pour la résolution de nom d'hôte).

5.1.3. Nom de l’interface réseau

Le nom de l’interface réseau, par exemple eth0, est assigné dans le noyau Linux à chaque matériel par le mécanisme udev de configuration de l’espace utilisateur (consultez Section 3.5.11, « Le système udev »), lorsqu'il est trouvé. On appelle l’interface réseau interface physique (« physical interface ») dans ifup(8) et interfaces(5).

De manière à ce que les interfaces réseau aient un nom homogène lors des rédémarrages en utilisant l’adresse MAC, etc., il existe un fichier d'enregistrement « /etc/udev/rules.d/70-persistent-net.rules ». Ce fichier est créé automatiquement par le programme « /lib/udev/write_net_rules », probablement lancé par le fichier de règle « persistent-net-generator.rules ». Vous pouvez le modifier pour changer la règle de nommage.

[Attention] Attention

En éditant le fichier de règles « /etc/udev/rules.d/70-persistent-net.rules », vous devrez conserver chaque règle sur une seule ligne et l’adresse MAC en minuscule. Par exemple, si vous trouvez « FireWire device » et « PCI device » dans ce fichier, vous voudrez probablement nommer eth0 le « PCI device » et le configurer comme interface réseau primaire.

5.1.4. Plage d'adresses réseau du réseau local (« LAN »)

Un rappel des plages d'adresses IPv4 32 bits de chacune des classes réservées à l’utilisation sur un réseau local (LAN) par la rfc1918. Ces adresses garantissent qu'aucun conflit ne sera créé avec aucune des adresses présentes sur Internet proprement dit.

Tableau 5.2. Liste des plages d'adresses de réseau

Classe adresses de réseau masque de réseau masque de réseau /bits nombre de sous-réseaux
A 10.x.x.x 255.0.0.0 /8 1
B 172.16.x.x — 172.31.x.x 255.255.0.0 /16 16
C 192.168.0.x — 192.168.255.x 255.255.255.0 /24 256

[Note] Note

Si une de ces adresses est assignée à une machine, cette machine ne doit alors pas accéder directement à Internet mais passer par une passerelle qui agit en tant que serveur mandataire (« proxy ») pour les services individuels ou sinon effectuer une traduction d'adresse réseau (NAT) (« Network Address Translation ». Un routeur à large bande effectue en général la NAT pour l’environnement du LAN de l’utilisateur grand public.

5.1.5. La gestion du périphérique réseau

La plupart des périphériques matériels sont pris en charge par le système Debian, il y a quelques périphériques de réseau qui exigent, pour les gérer, des microprogrammes non libres d'après les principes du logiciel libre selon Debian. Veuillez consulter Section 9.7.6, « Pilotes de matériel et microprogramme ».

5.2. Configuration moderne de réseau pour l’ordinateur de bureau

Les systèmes Debian squeeze peuvent gérer la connexion au réseau à l’aide de démons tels que NetworkManager (NM) (paquet network-manager et les paquets associés) ou Wicd (paquet wicd et les paquets associés).

  • Il sont fournis avec leur propre interface utilisateur graphique (GUI) et en ligne de commandes.

  • Ils ont leur propre démon en tant que sytème dorsal.

  • Ils permettent une connexion facile de votre système à Internet.

  • Ils permettent une gestion facile de la configuration du réseau filaire ou sans fil.

  • Ils nous permettent de configurer le réseau indépendamment de l’ancien paquet « ifupdown »

[Note] Note

Ne pas utiliser ces outils de configuration automatique du réseau sur un serveur. Ils ont été prévus principalement pour les utilisateurs de système de bureau tournant sur des ordinateurs portables.

Ce outils moderne de configuration du réseau doivent être configurés correctement afin d’éviter des conflits avec l’ancien paquet ifupdown et son fichier de configuration « /etc/network/interfaces ».

[Note] Note

Certaines fonctionnalités de ces outils de configuration automatique du réseau peuvent souffrir de régressions. Ils ne sont pas aussi robustes que l’ancien paquet ifupdown. Consultez le BTS de network-manager et le BTS de wicd pour en savoir plus sur les problèmes et les limitations actuels.

5.2.1. Outils graphiques de configuration du réseau

Les documentations officielles de NM et Wicd sous Debian sont fournies respectivement par « /usr/share/doc/network-manager/README.Debian » et « /usr/share/doc/wicd/README.Debian ».

Essentiellement, la configuration réseau pour l’ordinateur de bureau est faite de la manière suivante :

  1. Rendez l’utilisateur du bureau, par exemple toto, membre du groupe « netdev » à l’aide de la commande suivante (vous pouvez aussi le faire automatiquement à l’aide de D-bus sous les environnements de bureau modernes comme GNOME et KDE) :

    $ sudo adduser toto netdev
  2. Gardez la configuration de « /etc/network/interfaces » aussi simple que possible comme ce qui suit :

    auto lo
    iface lo inet loopback
  3. Redémarrez NM ou Wicd de la manière suivante :

    $ sudo /etc/init.d/network-manager restart
    $ sudo /etc/init.d/wicd restart
  4. Configurez votre réseau à l’aide d'une interface graphique.

[Note] Note

Afin d'éviter les conflits avec ifupdown, seules les interfaces qui ne sont pas listées dans « /etc/network/interfaces » ou qui ont été configurées avec « auto … » ou « allow-hotplug … » et « iface … inet dhcp » (avec aucune autre option) sont gérées par NM.

[Astuce] Astuce

Si vous désirez étendre les possibilités de configuration de NM, veuillez récupérer les modules d’extension appropriés et les paquets supplémentaires tels que network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, etc. Il en va de même pour ceux de Wicd.

[Attention] Attention

Ces outils de configuration automatique peuvent ne pas être compatibles avec des configurations ésotériques de l’ancien ifupdown dans « /etc/network/interfaces » telles que celles se trouvant en Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) » et Section 5.6, « Configuration réseau avancée avec ifupdown (ancienne) ». Consultez le BTS de network-manager et le BTS de wicd pour les problèmes et les limitations actuels.

5.3. Ancienne méthode de configuration et connexion réseau

Lorsque la méthode décrite dans Section 5.2, « Configuration moderne de réseau pour l’ordinateur de bureau » ne suffit pas à vos besoins, vous pouvez utiliser les anciennes connexion au réseau et méthode de configuration qui combinent de nombreux outils simples.

L’ancienne connexion au réseau est spécifique pour chacune des méthodes (consultez Section 5.4, « Méthode de connexion réseau (ancienne) »).

Il existe deux types de programmes de bas niveau pour la configuration du réseau sous un système Linux (consultez Section 5.7.1, « Commandes Iproute2 »).

  • Les programmes net-tools anciens (ifconfig(8), …) provienne du système de réseau NET-3 de Linux. La plupart d'entre-eux sont aujourd'hui obsolètes.

  • Les nouveau programmes Linux iproute2 (ip(8), …) représentent le système actuel de gestion du réseau sous Linux.

Bien que ces programmes de bas niveau soient puissants, ils sont lourds à utiliser. Des systèmes de haut niveau de configuration du système ont donc été créés.

Le paquet ifupdown est le standard de fait pour un tel système de configuration de haut niveau du réseau sur Debian. Il vous permet d'activer un réseau en utilisant simplement, par exemple, « ifup eth0 ». Son fichier de configuration est le fichier /etc/network/interfaces » est son contenu typique est le suivant :

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

La paquet resolvconf a été créé pour en complément au système ifupdown afin de prendre en charge une reconfiguration en douceur de la résolution d'adresse du réseau en automatisant la réécriture du fichier de configuration de la résolution « /etc/resolv.conf ». Maintenant, la plupart des paquets de Debian servant à la configuration du réseau sont modifiés pour utiliser le paquet resolvconf (consultez « /usr/share/doc/resolvconf/README.Debian »).

Des scripts d'assistant au paquet ifupdown comme ifplugd, guessnet, ifscheme, etc. ont été créés pour automatiser la configuration de l’environnement réseau comme dans le cas d'un PC mobile sur un réseau local câblé. Ils sont relativement difficiles à utiliser mais fonctionnent bien en conjonction avec une système ifupdown existant.

Elles sont expliquées en détails avec des exemples (consultez Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) » et Section 5.6, « Configuration réseau avancée avec ifupdown (ancienne) »).

5.4. Méthode de connexion réseau (ancienne)

[Attention] Attention

La méthode de test de connexion décrite dans cette section est destinée à des buts de test. Elle n'est pas destinée à être directement utilisée pour la connexion réseau de tous les jours. Vous êtes invité à l’utiliser par l’intermédiaire de NM, Wicd, ou du paquet ifupdown (consultez Section 5.2, « Configuration moderne de réseau pour l’ordinateur de bureau » et Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) »).

La connexion typique au réseau et le chemin de connexion pour un PC peuvent être résumés comme suit :

Tableau 5.3. Liste des méthodes de connexions réseau et des chemins de connexion

PC méthode de connexion chemin de connexion
Port série (ppp0) PPP modem ⇔ POTS ⇔ point d'accès réseau commuté ⇔ FAI
Port Ethernet (eth0) PPPoE/DHCP/Statique ⇔ BB-modem ⇔ BB service ⇔ BB access point ⇔ FAI
Port Ethernet (eth0) DHCP/Statique ⇔ LAN ⇔ routeur BB avec traduction d'adresse (NAT) (⇔ modem BB …)

Voici un résumé des scripts de configuration de chaque méthode de connexion :

Tableau 5.4. Liste des configurations de connexions réseau

méthode de connexion configuration paquets(s) de support
PPP pppconfig pour créer un chat déterministe pppconfig, ppp
PPP (alternative) wvdialconf pour créer un chat heuristique ppp, wvdial
PPPoE pppoeconf pour créer un chat déterministe pppoeconf, ppp
DHCP décrit dans « /etc/dhcp/dhclient.conf » isc-dhcp-client
IP statique (IPv4) décrit dans « /etc/network/interfaces » net-tools
IP statique (IPv6) décrit dans « /etc/network/interfaces » iproute

Les acronymes de connexion au réseau ont la signification suivante :

Tableau 5.5. Liste des acronymes de connexion au réseau

acronyme signification
POTS service téléphonique analogique classique (« plain old telephone service »)
BB large bande
BB-service par exemple, l’ADSL, la télévision pat câble ou les services sur fibre optique (FTTP)
BB-modem par exemple, le modem ADSL, le modem sur réseau câblé ou le terminal de réseau optique (ONT)
LAN réseau local (« local area network »)
WAN réseau étendu
DHCP protocole de configuration dynamique des machines (« dynamic host configuration protocol »)
PPP protocole point à point (« point to point protocol »)
PPPoE protocole point à point avec encapsulation Ethernet
FAI (« ISP ») fournisseur d'accès à Internet

[Note] Note

Les services de connexion au réseau étendu (WAN) par l’intermédiaire du câble du réseau de télévision sont en général servis par DHCP ou PPPoE. Ceux qui sont connectés en ADSL et FTTP sont en général servis par PPPoE. Vous devrez consulter votre FAI afin de connaître les exigences exactes de configuration de la connexion WAN.

[Note] Note

Lorsqu'un routeur large bande (« BB-router ») est utilisé pour créer un environnement de réseau local domestique, les PC sur le réseau local sont connectés au réseau étendu (WAN) par l’intermédiaire du routeur large bande par traduction d'adresse réseau (NAT). Dans ce cas, les interfaces réseau des PC sur le réseau local sont servies avec des adresses IP statiques ou par DHCP depuis le routeur large bande. Le routeur large bande, pour se connecter au réseau étendu, doit être configuré en suivant les instructions de votre FAI.

5.4.1. La connexion DHCP avec Ethernet

Le réseau moderne domestique ou pour une petite entreprise typique (réseau local, LAN) connecté au réseau étendu (« WAN ») (Internet) en utilisant un routeur à large bande grand public. Le réseau local derrière ce routeur est habituellement configuré par un serveur de protocole de configuration dynamique de l’hôte (DHCP) (« dynamic host configuration protocol ») tournant sur le routeur.

Installez simplement le paquet isc-dhcp-client pour Ethernet desservi par le protocole de configuration dynamique de l’hôte (DHCP).

Consultez dhclient.conf(5).

5.4.2. Connexion Ethernet avec une adresse IP statique

Il n'y a pas d'action spécifique nécessaire pour la configuration Ethernet avec une adresse IP statique.

5.4.3. La connexion PPP avec pppconfig

Le script de configuration pppconfig configure la connexion PPP de manière interactive en sélectionnant simplement les éléments suivants :

  • numéro de téléphone ;

  • identifiant chez le fournisseur d'accès (FAI) ;

  • mot de passe chez le FAI ;

  • vitesse du port ;

  • port de communication avec le modem ;

  • méthode d'authentification.

Tableau 5.6. Liste des fichiers de configuration pour la connexion PPP avec pppconfig

fichier fonction
/etc/ppp/peers/<nom_fai> fichier de configuration spécifique à <nom_fai> créé par pppconfig pour pppd
/etc/chatscripts/<nom_fai> fichier de configuration spécifique à <nom_fai> créé par pppconfig pour chat
/etc/ppp/options paramètres généraux d'exécution de pppd
/etc/ppp/pap-secret données d'authentification pour PAP (risque de sécurité)
/etc/ppp/chap-secret données d'authentification pour CHAP (plus sécurisé)

[Attention] Attention

La valeur « <nom_fai> » du champ « provider » est supposée si les commandes pon et poff sont appelées sans paramètre.

Vous pouvez tester la configuration de la manière suivant en utilisant des outils de configuration du réseau de bas niveau :

$ sudo pon <nom_fai>
...
$ sudo poff <nom_fai>

Consultez « /usr/share/doc/ppp/README.Debian.gz ».

5.4.4. Autre connexion PPP avec wvdialconf

Une approche différente de l’utilisation de pppd(8) est de le lancer depuis wvdial(1) qui est fourni par le paquet wvdial. Plutôt que pppd faisant tourner chat (8) pour numéroter et négocier la connexion, wvdial effectue la numérotation et la négociation initiale puis démarre pppd pour effectuer le reste.

Le script de configuration wvdialconf configure la connexion PPP de manière interactive en sélectionnant simplement ce qui suit :

  • numéro de téléphone ;

  • identifiant chez le fournisseur d'accès (FAI) ;

  • mot de passe chez le FAI ;

wvdial réussit à réaliser la connexion dans la plupart des cas et conserve automatiquement la liste des données d'authentification.

Tableau 5.7. Liste des fichiers de configuration pour une connexion PPP avec wvdialconf

fichier fonction
/etc/ppp/peers/wvdial fichier de configuration spécifique à wvdialcréé par wvdialconf pour pppd
/etc/wvdial.conf fichier de configuration créé par wvdialconf
/etc/ppp/options paramètres généraux d'exécution de pppd
/etc/ppp/pap-secret données d'authentification pour PAP (risque de sécurité)
/etc/ppp/chap-secret données d'authentification pour CHAP (plus sécurisé)

Vous pouvez tester la configuration de la manière suivant en utilisant des outils de configuration du réseau de bas niveau :

$ sudo wvdial
...
$ sudo killall wvdial

Consultez wvdial(1) et wvdial.conf(5).

5.4.5. La connexion PPPoE avec pppoeconf

Lorsque votre FAI vous propose une connexion avec PPPoE et que vous décidez de connecter directement votre PC au WAN, le réseau de votre PC doit être configuré avec PPPoE. PPPoE signifie « PPP over Ethernet » (PPP encapsulé par Ethernet). Le script de configuration pppoeconf configure la connexion PPPoE de manière interactive.

Les fichiers de configuration sont les suivants :

Tableau 5.8. Liste des fichiers de configuration pour une connexion PPPoE avec pppoeconf

fichier fonction
/etc/ppp/peers/fournisseur-accès-adsl fichier de configuration spécifique à pppoe créé par pppoeconf pour pppd
/etc/ppp/options paramètres généraux d'exécution de pppd
/etc/ppp/pap-secret données d'authentification pour PAP (risque de sécurité)
/etc/ppp/chap-secret données d'authentification pour CHAP (plus sécurisé)

Vous pouvez tester la configuration de la manière suivant en utilisant des outils de configuration du réseau de bas niveau :

$ sudo /sbin/ifconfig eth0 up
$ sudo pon fournisseur-accès-adsl
...
$ sudo poff fournisseur-accès-adsl
$ sudo /sbin/ifconfig eth0 down

Consultez « /usr/share/doc/pppoeconf/README.Debian ».

5.5. Configuration de base du réseau avec ifupdown (ancienne)

La configuration traditionnelle du réseau TCP/IP sur un système Debian utilise le paquet ifupdown comme outil de haut niveau. Il y a deux cas typiques :

Ces méthodes traditionnelles de configuration sont assez utiles si vous désirez définir une configuration avancée (consultez Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) »).

Le paquet ifupdown fournit l’ossature standardisées pour la configuration du réseau de haut niveau sur un système Debian. Dans cette section, nous apprenons les bases de la configuration du réseau avec ifupdown avec une introduction simplifiée et de nombreux exemples typiques.

5.5.1. La syntaxe de commande simplifiée

Le paquet ifupdown contient 2 commandes : ifup(8) et ifdown(8). Elles offrent une configuration de réseau de haut niveau à l’aide du fichier de configuration « /etc/network/interfaces ».

Tableau 5.9. Liste des commandes de base de configuration du réseau avec ifupdown

commande action
ifup eth0 activer l’interface réseau eth0 avec la configuration eth0 si l’entrée « iface eth0 » existe
ifdown eth0 désactiver l’interface réseau eth0 avec la configurationeth0 si l’entrée « iface eth0 »

[Avertissement] Avertissement

Ne pas utiliser les outils de configuration de bas niveau tels que ifconfig(8) ni les commandes ip(8) pour configurer une interface se trouvant dans l’état actif (« up »).

[Note] Note

Il n'y a pas de commande ifupdown.

5.5.2. Syntaxe de base de « /etc/network/interfaces »

La syntaxe clé de « /etc/network/interfaces » telle qu'expliquée dans interfaces(5) peut être résumée comme suit :

Tableau 5.10. Liste des entrées de « /etc/network/interfaces »

entrée signification
« auto <nom_interface> » démarrer l’interface <nom_interface> lors du démarrage du système
« allow-auto <nom_interface> » , ,
« allow-hotplug <nom_interface> » démarrer l’interface <nom_interface> lorsque le noyau détecte un événement « à chaud » depuis cette interface
Les lignes qui commencent par « iface <nom_config> … » définissent la configuration de réseau <nom_config>
Les lignes qui commencent par « mapping <nom_interface_glob> » définissent une valeur de correspondance de <nom_config> pour l’interface correspondant à <nom_interface>
Une ligne commençant par le signe « # » est traitée comme commentaire et ignorée (les commentaire de fin de ligne ne sont pas pris en charge)
Une barre oblique inversée (« \ », « back slash » en anglais) en fin de ligne étend la configuration à la ligne suivante

Les lignes commençant par l’entrée iface ont la syntaxe suivante :

iface <nom_config> <famille_adresse> <nom_méthode>
 <option1> <valeur1>
 <option2> <valeur2>
 ...

Pour la configuration de base, l’entrée de mapping n'est pas utilisée si vous utilisez le nom de l’interface réseau comme nom de configuration du réseau (consultez Section 5.6.5, « L’entrée « mapping » »).

[Avertissement] Avertissement

Ne pas définir dans « /etc/network/interfaces » d'entrée « iface » en double pour une interface réseau

5.5.3. L’interface réseau de rebouclage (« loopback »)

L’entrée de configuration suivante du fichier « /etc/network/interfaces » active l’interface réseau « loopback » lo lors du démarrage du système (grâce à l’entrée auto) :

auto lo
iface lo inet loopback

Elle existe toujours dans le fichier « /etc/network/interfaces ».

5.5.4. Interfaces réseau gérées par DHCP

Après avoir préparé le système selon Section 5.4.1, « La connexion DHCP avec Ethernet », l’interface réseau gérée par le DHCP est configurée en créant l’entrée de configuration suivante dans le fichier « /etc/network/interfaces » :

allow-hotplug eth0
iface eth0 inet dhcp

Lorsque le noyau de Linux détecte l’interface physique eth0, l’entrée allow-hotplug permet à ifup d'activer l’interface et l’entrée iface demande à ifup d'utiliser DHCP pour configurer l’interface.

5.5.5. Interface réseau avec une adresse IP fixe

Une interface réseau avec une adresse IP fixe est configurée en créant de la manière suivante une entrée de configuration du fichier « /etc/network/interfaces » :

allow-hotplug eth0
iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain example.com
 dns-nameservers 192.168.11.1

Lorsque le noyau de Linux détecte l’interface physique eth0, l’entrée allow-hotplug permet à ifup d'activer l’interface utiliser l’IP statique pour la configurer.

Ici, je suppose ce qui suit :

  • plage d'adresses IP du réseau local : 192.168.11.0 - 192.168.11.255

  • adresse IP de la passerelle : 192.168.11.1

  • adresse IP du PC : 192.168.11.100

  • paquet resolvconf : installé

  • nom de domaine : « example.com »

  • adresse IP address du serveur DNS : 192.168.11.1

Si le paquet resolvconf n'est pas installé, vous devrez faire vous-même la configuration associée au DNS en éditant le fichier « /etc/resolv.conf » comme suit :

nameserver 192.168.11.1
domain example.com
[Attention] Attention

Les adresses IP utilisées dans l’exemple ci-dessus ne sont pas destinées à être recopiées littéralement. Vous devrez adapter les adresses IP à la configuration réelle de votre réseau.

5.5.6. Les bases de l’interface réseau sans fil

Le réseau local sans fil (« wireless LAN ou WLAN ») permet une connexion sans fil à haute vitesse par une communication en spectre étalé « spread-spectrum » sur des bandes radio ne nécessitant pas de licence en utilisant un ensemble de normes appelées IEEE 802.11.

Les interfaces WLAN se comportent sensiblement de la même manière que les interfaces Ethernet normales mais elles demandent un identifiant de réseau et des données de clé de chiffrement lors de leur initialisation. Leurs outils réseau de haut niveau sont exactement les mêmes que pour les interfaces Ethernet mais les noms des interfaces sont un peu différents, comme eth1, wlan0, ath0, wifi0, … selon les pilotes du noyau utilisés.

[Astuce] Astuce

Le périphérique wmaster0 est le périphérique-maître qui est un périphérique interne utilisé uniquement par SoftMAC avec la nouvelle API mac80211 de Linux.

Voici quelques mot-clés à se souvenir pour le WLAN :

Tableau 5.11. Liste d'acronymes pour le WLAN

acronyme en entier signification
NWID ID du réseau ID du réseau sur 16 bits utilisées par les réseaux WaveLAN pre-802.11 (complètement dépassé)
(E)SSID Service Set Identifier (étendu) nom de réseau des Points d'accès sans fil (AP) interconnectés pour former un réseau local sans fil 802.11, identifiant de domaine
WEP, (WEP2) Wired Equivalent Privacy (confidentialité équivalente à un réseau câblé) première génération de norme de chiffrement sans fil sur 64 bits (128 bits) avec une clé sur 40 bits (dépassé)
WPA Wi-Fi Protected Access (Accès Wi-Fi protégé) seconde génération de norme de chiffrement sans fil (la plus grande partie de 802.11i), compatible avec WEP
WPA2 Wi-Fi Protected Access 2 (Accès protégé Wi-FI 2) troisième génération de norme de chiffrement sans fil (802.11i complète), non compatible avec WEP

Le choix du protocole est normalement restreint par le routeur sans fil déployé.

5.5.7. L’interface de réseau local sans fil avec WPA/WPA2

Vous devrez installer le paquet wpasupplicant afin de prendre en compte le WLAN avec les nouveaux protocoles WPA/WPA2.

Dans le cas d'IP fournies par DHCP sur une connexion WLAN, l’entrée du fichier « /etc/network/interfaces » doit être similaire à la suivante :

allow-hotplug ath0
iface ath0 inet dhcp
 wpa-ssid zonemaison
 # la clé psk hexadécimale est encodée depuis une phrase de passe en texte clair
 wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Consultez « /usr/share/doc/wpasupplicant/README.modes.gz ».

5.5.8. L’interface réseau local sans fil avec WEP

Vous devrez installer le paquet wireless-tools pour prendre en charge le WLAN avec l’ancien protocole WEP. (Votre routeur grand public peut encore utiliser cette infrastructure non sûre mais c'est mieux que rien).

[Attention] Attention

Remarquez que le trafic réseau sur votre WLAN avec WEP peut être espionné par d'autres.

Dans le cas d'IP fournies par DHCP sur une connexion WLAN, l’entrée du fichier « /etc/network/interfaces » doit être similaire à la suivante :

allow-hotplug eth0
iface eth0 inet dhcp
 wireless-essid Maison
 wireless-key1 0123-4567-89ab-cdef
 wireless-key2 12345678
 wireless-key3 s:mot_de_passe
 wireless-defaultkey 2
 wireless-keymode open

Consultez « /usr/share/doc/wireless-tools/README.Debian ».

5.5.9. La connexion PPP

Vous devrez d'abord configurer la connexion PPP comme décrit précédemment (consultez Section 5.4.3, « La connexion PPP avec pppconfig »). Ensuite, ajoutez dans le fichier « /etc/network/interfaces » une entrée pour le périphérique PPP primaire ppp0 comme suit :

iface ppp0 inet ppp
 provider <nom_fai>

5.5.10. La connexion alternative PPP

Vous devrez d'abord configurer la connexion PPP alternative avec wvdial comme décrit précédemment (consultez Section 5.4.4, « Autre connexion PPP avec wvdialconf »). Ajoutez ensuite dans le fichier « /etc/network/interfaces » une entrée pour le périphérique primaire PPP ppp0 comme suit :

iface ppp0 inet wvdial

5.5.11. La connexion PPPoE

Pour le PC directement connecté au WAN et utilisant PPPoE, vous devez configurer votre système pour une connexion PPPoE comme cela a été décrit précédemment (consultez Section 5.4.5, « La connexion PPPoE avec pppoeconf »). Ajoutez ensuite dans le fichier « /etc/network/interfaces » une entrée pour le premier périphérique PPPoE eth0 comme suit :

allow-hotplug eth0
iface eth0 inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down
# Ce qui suit est utilisé uniquement de manière interne
iface dsl inet ppp
 provider fournisseur-internet

5.5.12. État de configuration réseau de ifupdown

Le fichier « /etc/network/run/ifstate » enregistre l’état désiré de la connexion réseau pour toutes les interfaces réseau actuellement actives et gérées par le paquet ifupdown. Malheureusement, même si le système ifupdown échoue dans l’activation de l’interface comme désiré, le fichier « /etc/network/run/ifstate » l’affichera comme active.

Si la sortie de la commande ifconfig(8) d'une interface n'a pas de ligne telle que la suivante, elle ne peut pas être utilisée en tant qu'élément d'un réseau IPV4.

  inet addr:192.168.11.2  Bcast:192.168.11.255  Mask:255.255.255.0
[Note] Note

Pour un périphérique Ethernet connecté en PPPoE, la sortie de la commande ifconfig(8) ne produit pas de ligne semblable à celle de l’exemple ci-dessus.

5.5.13. Configuration réseau de base

Lorsque vous tentez de reconfigurer une interface, par exemple eth0, vous devez d'abord la désactiver par la commande « sudo ifdown eth0 ». Cela supprime l’entrée eth0 du fichier « /etc/network/run/ifstate » (quelques messages d'erreur peuvent être émis si eth0 n'est pas active ou a mal été configurée auparavant. Jusqu'à présent, il semble qu'il soit sûr de le faire n'importe quand sur une simple station de travail n'ayant qu'un seul utilisateur).

Vous pouvez maintenant réécrire le contenu du fichier « /etc/network/interfaces » selon vos besoins pour reconfigurer l’interface réseau eth0.

Ensuite, vous pourrez réactiver eth0 avec la commande  sudo ifup eth0 ».

[Astuce] Astuce

Vous pouvez (ré)initialiser l’interface réseau simplement par « sudo ifdown eth0;sudo ifup eth0 ».

5.5.14. La paquet ifupdown-extra

Le paquet ifupdown-extra fournit des tests de connexion au réseau facile à utiliser avec le paquet ifupdown.

  • La commande network-test(1) peut être utilisée depuis l’interpréteur de commandes.

  • Les scripts automatiques sont lancés pour chaque exécution de la commande ifup.

La commande network-test vous libère de l’exécution d'ennuyeuses commandes de bas niveau pour analyser les problèmes du réseau.

Les scripts automatiques sont installés dans « /etc/network/*/ » et effectuent ce qui suit :

  • vérifier la connexion du câble réseau

  • vérifier l’utilisation d'une adresse IP dupliquée

  • définir les routes statiques du système basées sur la définition de « /etc/network/routes »

  • vérifier si la passerelle réseau peut être atteinte

  • enregistrer les résultats dans le fichier « /var/log/syslog »

L’enregistrement dans syslog est assez utile pour l’administration des problèmes de réseau sur un système distant.

[Astuce] Astuce

Le comportement automatique du paquet ifupdown-extra est configurable par « /etc/default/network-test » Certaines de ces vérifications automatiques ralentissent un peu le démarrage du système car elle prennent un certain temps à l’écoute des réponses ARP.

5.6. Configuration réseau avancée avec ifupdown (ancienne)

Les fonctionnalités du paquet ifupdown peuvent être améliorées au-delà de ce qui est décrit dans Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) » avec des connaissances avancées.

Les fonctionnalités décrites ici sont entièrement facultatives. Étant paresseux et minimaliste, je me suis rarement ennuyé à les utiliser.

[Attention] Attention

Si vous n'êtes pas arrivé à établir une connexion réseau à l’aide des informations de Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) », vous ne ferez qu'empirer la situation en utilisant les informations qui suivent :

5.6.1. La paquet ifplugd

Le paquet ifplugd est l’ancien outil de configuration automatique du réseau, il ne peut gérer que les connexions Ethernet. Il permet de régler le problème des connexions et déconnexions des câbles Ethernet avec les PC mobiles, etc. Si vous avez installé NetworkManager ou Wicd (consultez Section 5.2, « Configuration moderne de réseau pour l’ordinateur de bureau »), vous n'avez pas besoin de ce paquet.

Ce paquet fait tourner un démon qui remplace les fonctionnalités auto ou allow-hotplug (consultez Tableau 5.10, « Liste des entrées de « /etc/network/interfaces » ») et qui active les interfaces lors de leur connexion au réseau.

Voici comment utiliser le paquet ifplugd pour le port Ethernet interne, par exemple, eth0.

  1. Supprimez l’entrée « auto eth0 » ou « allow-hotplug eth0 » de « /etc/network/interfaces »

  2. Conservez les entrées « iface eth0 inet … » et « mapping … » de « /etc/network/interfaces »

  3. Installez le paquet ifplugd.

  4. Lancez « sudo dpkg-reconfigure ifplugd »

  5. Mettez eth0 comme interface « statique devant être surveillée par ifplugd ».

Le réseau fonctionne maintenant comme vous le désirez.

  • Lors de la mise sous tension ou lors de la découverte du matériel, l’interface est activée d'elle-même.

  • L’interface est activée lors de la découverte du câble Ethernet.

  • L’interface est désactivée quelque temps après que le câble Ethernet ait été débranché.

  • L’interface est activée dans le nouvel environnement de réseau lors de la connexion d'un autre câble Ethernet.

[Astuce] Astuce

Les paramètres de la commande ifplugd(8) peuvent définir son comportement tel que le délai de reconfiguration des interfaces.

5.6.2. Le paquet ifmetric

Le paquet ifmeric nous permet de manipuler a posteriori la métrique de routes même avec DHCP.

Ce qui suit permettra de rendre l’interface eth0 prioritaire sur l’interface wlan0 :

  1. installer le paquet ifmetric :

  2. ajouter l’option avec « metric 0 » juste en-dessous de la ligne « iface eth0 inet dhcp » :

  3. ajouter une ligne d'option avec « metric 1 » juste en-dessous de la ligne « iface wlan0 inet dhcp ».

« metric 0 » indique la route de plus haute priorité et c'est celle par défaut. La plus grande valeur de « metric » indique une route de moindre priorité. L’adresse IP de l’interface active ayant la valeur de « metric » la plus basse devient celle d'origine. Consultez ifmetric(8).

5.6.3. L’interface virtuelle

Une seule interface Ethernet physique peut être configurée en tant que de multiples interfaces virtuelles avec différentes adresses IP. Habituellement, le but est de connecter une interface à plusieurs sous-réseaux ayant des IP différentes. Par exemple, l’hébergement web virtuel basé sur l’IP avec une seule interface réseau est une application de ce type.

Supposons, par exemple, ce qui suit :

  • une seule interface Ethernet de votre machine est raccordée à un « hub Ethernet » (pas au routeur à large bande) :

  • le concentrateur Ethernet est connecté à la fois à Internet et au réseau local :

  • le réseau local utilise le sous-réseau 192.168.0.x/24 :

  • votre machine utilise une adresse IP fournie par DHCP avec l’interface physique eth0 pour Internet :

  • votre machine utilise 192.168.0.1 avec l’interface virtuelle eth0:0 pour le réseau local.

Les entrées suivantes de « /etc/network/interfaces » permettent de configurer votre réseau :

iface eth0 inet dhcp
 metric 0
iface eth0:0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 metric 1
[Attention] Attention

Bien que cet exemple de configuration avec traduction d'adresse réseau (NAT) en utilisant netfilter/iptables (consultez Section 5.9, « Infrastructure de netfilter ») puisse fournir un routeur économique pour le réseau local avec une seule interface, il n'y a pas, avec votre configuration, de possibilité réelle de pare-feu. Vous devriez utiliser deux interfaces physiques avec NAT afin de sécuriser le réseau local de ce qui provient d'Internet.

5.6.4. Syntaxe de commande avancée

Le paquet ifupdown fournit une configuration avancée du réseau en utilisant le nom configuration réseau et le nom interface réseau. J'utilise une terminologie un peu différente de celle utilisée dans ifup(8) et interfaces(5).

Tableau 5.12. Terminologie des périphériques réseau

terminologie de la page de manuel ma terminologie exemple dans le texte suivant : description
nom de l’interface physique nom de l’interface réseau lo, eth0, <nom_interface> nom donné dans le noyau Linux (utilisant le mécanisme udev)
nom de l’interface logique nom de la configuration réseau config1, config2, <nom_config> noms suivants iface dans le fichier « /etc/network/interfaces »

Les commandes élémentaires de configuration du réseau se trouvant dans Section 5.5.1, « La syntaxe de commande simplifiée » exigent que le nom de la configuration réseau de l’entrée iface corresponde au nom de l’interface réseau dans le fichier « /etc/network/interfaces ».

Les commandes avancées de configuration du réseau permettent de séparer de la manière suivante le nom de la configuration réseau et le nom de l’interface réseau dans le fichier « /etc/network/interfaces » :

Tableau 5.13. Liste des commandes avancées de configuration du réseau par ifupdown

commande action
ifup eth0=config1 activer une interface réseau eth0 avec la configuration config1
ifdown eth0=config1 désactiver une interface réseau eth0 avec la configuration config1
ifup eth0 activer une interface réseau eth0 avec la configuration sélectionnée par l’entrée mapping
ifdown eth0 désactiver une interface réseau eth0 avec la configuration sélectionnée par l’entrée mapping

5.6.5. L’entrée « mapping »

Nous avons sauté l’explication de l’entrée mapping du fichier « /etc/network/interfaces » dans la Section 5.5.2, « Syntaxe de base de « /etc/network/interfaces » » pour éviter des complications. Cette entrée possède la syntaxe suivante :

mapping <motif_nom_interface>
 script <nom_script>
 map <script_entrée1>
 map <script_entrée2>
 map ...

Cela fournit une fonctionnalité avancée au fichier « /etc/network/interfaces » en automatisant le choix de la configuration avec le script de « mapping » indiqué par <nom_script>.

Suivons l’exécution de ce qui suit :

$ sudo ifup eth0

Lorsque « <motif_nom_interface> » correspond à « eth0 », cette exécution lance l’exécution de la commande suivante afin de configurer automatiquement eth0 :

$ sudo ifup eth0=$(echo -e '<script_entrée1> \n <script_entrée2> \n ...' | <nom_script> eth0)

Ici, les lignes d'entrée du script contenant « map » sont facultatives et peuvent être répétées.

[Note] Note

Le motif générique (glob) pour l’entrée mapping fonctionne comme les motifs génériques des noms de fichiers de l’interpréteur de commandes (consultez Section 1.5.6, « Motifs génériques (« glob ») de l’interpréteur de commandes »).

5.6.6. Configuration réseau commutable manuellement

Voici comment commuter manuellement entre plusieurs configurations de réseau sans réécrire le fichier « /etc/network/interfaces » comme dans Section 5.5.13, « Configuration réseau de base ».

Créez un unique fichier « /etc/network/interfaces » tel que le suivant pour toutes les configurations des réseaux auxquels vous désirez accéder :

auto lo
iface lo inet loopback

iface config1 inet dhcp

iface config2 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 dns-domain example.com
 dns-nameservers 192.168.11.1

iface pppoe inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down

# Ce qui suit n'est utilisé que de manière interne
iface dsl inet ppp
 provider fai_adsl

iface pots inet ppp
 provider fai

Vous remarquez que le nom de configuration de réseau qui est l’élément suivant iface n'utilise pas l’élément pour le nom d'interface réseau. Notez aussi qu'il n'y a pas d'entrée auto ni d'entrée allow-hotplugpour démarrer automatiquement l’interface réseau eth0 sur événement.

Vous êtes maintenant prêt à commuter la configuration de votre réseau.

Déplaçons votre PC vers un réseau local desservi par DHCP. Vous activez l’interface réseau (l’interface physique) eth0 en lui assignant le nom de configuration réseau (le nom de l’interface logique) config1 de la manière suivante :

$ sudo ifup eth0=config1
Password:
...

L’interface eth0 est active, configurée par DHCP et connectée au réseau local.

$ sudo ifdown eth0=config1
...

L’interface eth0 est inactive et déconnectée du réseau local.

Déplaçons votre PC vers un réseau local avec une adresse IP fixe. Vous activez l’interface réseau eth0 en lui assignant le nom de configuration réseau config2 de la manière suivante :

$ sudo ifup eth0=config2
...

L’interface eth0 est active, configurée avec une IP statique et connectée au réseau local. Les paramètres supplémentaires donnés sous la forme dns-* configurent le contenu de « /etc/resolv.conf ». Ce fichier « /etc/resolv.conf » est mieux géré si le paquet resolvconf est installé.

$ sudo ifdown eth0=config2
...

L’interface eth0 est de nouveau inactive et déconnectée du réseau local.

Déplaçons votre PC sur le port d'un modem large bande connecté au service par PPPoE. Vous activez l’interface réseaueth0 en lui assignant le nom de configuration réseau pppoe de la manière suivante :

$ sudo ifup eth0=pppoe
...

L’interface eth0 est active, configurée avec une connexion PPPoE, directement vers le FAI.

$ sudo ifdown eth0=pppoe
...

L’interface eth0 est de nouveau désactivée et déconnectée.

Déplaçons votre PC à un emplacement sans réseau local et sans modem large bande mais avec un POTS et un modem (modem sur le réseau commuté). Vous activez l’interface réseau ppp0 en lui assignant le nom de configuration réseau pots de la manière suivante :

$ sudo ifup ppp0=pots
...

L’interface ppp0 est active et connectée à Internet par PPP.

$ sudo ifdown ppp0=pots
...

L’interface ppp0 est inactive est déconnectée d'Internet.

Vous devriez vérifier l’état actuel de la configuration du réseau du système ifupdown dans le fichier « /etc/network/run/ifstate ».

[Avertissement] Avertissement

Il se peut que vous ayez besoin d'ajuster le nombre à la fin de eth*, ppp*, etc. si vous avez plusieurs interfaces réseau.

5.6.7. Scripts avec le système ifupdown

Le système ifupdown lance automatiquement les scripts qui sont installés dans « /etc/network/*/ » en exportant les variables d'environnement vers les scripts.

Tableau 5.14. Liste des variables d'environnement passées par le système ifupdown

variable d'environnement valeur passée
« $IFACE » nom physique (nom d'interface) de l’interface en cours de traitement
« $LOGICAL » nom logique (nom de configuration) de l’interface en cours de traitement
« $ADDRFAM » <famille_d_adresses> de l’interface
« $METHOD » <nom_méthode> de l’interface. (par exemple « static »)
« $MODE » «  » si lancé depuis ifup, « stop » si lancé depuis ifdown
« $PHASE » comme pour « $MODE » mais avec une plus faible granularité permettant de distinguer les phases pre-up, post-up, pre-down et post-down
« $VERBOSITY » indique si « --verbose » a été utilisé. Positionnée à 1 dans ce cas, à 0 sinon
« $PATH » chemin de recherche de la commande : « /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin »
« $IF_<OPTION> » valeur de l’option correspondante de l’entrée iface

Ici, chaque variable d'environnement, « $IF_<OPTION>  », est créée à partir du nom de l’option correspondante comme <option1> et <option2> en les préfixant avec « $IF_ », et en convertissant la casse en majuscules, en remplaçant les tirets (« - ») par des tirets soulignés (« _ ») et en supprimant les caractères non alphanumériques.

[Astuce] Astuce

Consultez Section 5.5.2, « Syntaxe de base de « /etc/network/interfaces » » pour <famille_adresse>, <nom_méthode>, <option1> et <option2>.

Le paquet ifupdown-extra (consultez Section 5.5.14, « La paquet ifupdown-extra ») utilise ces variables d'environnement pour étendre les fonctionnalités du paquet ifupdown. Le paquet ifmetric (consultez Section 5.6.2, « Le paquet ifmetric ») installe le script « /etc/network/if-up.d/ifmetric » qui définit la métrique par l’intermédiaire de la variable « $IF_METRIC ». Le paquet guessnet (consultez Section 5.6.8, « Cartographie réseau avec guessnet »), qui fournit une ossature simple et puissante pour la sélection automatique de la configuration du réseau par le mécanisme de cartographie de réseau (« mapping »), les utilise aussi.

[Note] Note

Pour des exemples plus spécifiques de scripts personnalisés de configuration du réseau en utilisant les variables d'environnement, vous pouvez consulter les scripts d'exemples se trouvant dans « /usr/share/doc/ifupdown/examples/* » et les scripts utilisés dans les paquets ifscheme et ifupdown-scripts-zg2. Ces scripts supplémentaires ont des fonctionnalités qui se chevauchent un peu avec les paquets de base ifupdown-extra et guessnet. Si vous installez ces scripts supplémentaires, vous devrez les personnaliser afin d'éviter des interférences.

5.6.8. Cartographie réseau avec guessnet

Plutôt que de choisir manuellement la configuration comme il est décrit dans la Section 5.6.6, « Configuration réseau commutable manuellement », vous pouvez utiliser le mécanisme de cartographie réseau décrit dans la Section 5.6.5, « L’entrée « mapping » » pour sélectionner automatiquement la configuration du réseau à l’aide de scripts personnalisés.

La commande guessnet-ifupdown(8) fournie par le paquet guessnet est conçue pour être utilisée comme script de cartographie réseau et fournit une infrastructure puissante pour améliorer le système ifupdown.

  • Vous listez la condition de test comme valeur des options de guessnet pour chacune des configurations de réseau de l’entrée iface.

  • La cartographie du réseau choisit la première entrée iface donnant un résultat qui ne soit pas en erreur comme configuration du réseau.

Cette double utilisation du fichier « /etc/network/interfaces » par le script de mapping, guessnet-ifupdown et l’infrastructure d'origine de configuration du réseau, ifupdown, n'a pas d'impact négatif car les options de guessnet n'exportent que des variables d'environnement supplémentaires vers les scripts lancés par le système ifupdown. Consultez guessnet-ifupdown(8) pour davantage d'informations.

[Note] Note

Lorsqu'il est nécessaire d'avoir plusieurs lignes d'options de guessnet dans « /etc/network/interfaces », utilisez les lignes d'options commençant par guessnet1, guessnet2 et ainsi de suite, car le paquet ifupdown n'autorise pas que les chaînes de caractères de début des lignes d'options soient dupliquées.

5.7. Configuration réseau de bas niveau

5.7.1. Commandes Iproute2

Les commandes Iproute2 offrent des possibilités complètes de configuration de bas niveau du réseau. Voici une table de conversion des commandes obsolètes net-tools obsolètes vers les nouvelles commandes iproute2, etc.

Tableau 5.15. Table de conversion depuis les commandes obsolètes net-tools vers les nouvelles commandes iproute2

net-tools obsolètes nouveau iproute2, etc. manipulation
ifconfig(8) ip addr adresse de protocole (IP ou IPv6) d'un périphérique
route(8) ip route entrée de la table de routage
arp(8) ip neigh entrée de cache ARP ou NDISC
ipmaddr ip maddr adresse multicast
iptunnel ip tunnel tunnel sur IP
nameif(8) ifrename(8) nommer les interfaces réseau en se basant sur l’adresse MAC
mii-tool(8) ethtool(8) paramétrage du périphérique Ethernet

Consultez ip(8) et Howto de la suite utilitaire IPROUTE2.

5.7.2. Opérations sûres de bas niveau sur le réseau

Vous pouvez utiliser de manière sûre les commandes de réseau de bas niveau de la manière suivante car elles ne modifient pas la configuration du réseau :

Tableau 5.16. Liste des commande de réseau de bas niveau

commande description
ifconfig afficher l’état et l’adresse du lien des interfaces actives
ip addr show afficher l’état et l’adresse du lien des interfaces actives
route -n afficher toutes les tables de routage sous forme d'adresses numériques
ip route show afficher toutes les tables de routage sous forme d'adresses numériques
arp afficher le contenu actuel des tables de cache d'ARP
ip neigh afficher le contenu actuel des tables de cache d'ARP
plog afficher le journal du démon ppp
ping yahoo.com vérifier la connexion internet vers « yahoo.com »
whois yahoo.com vérifier qui a enregistré « yahoo.com » dans la base de données des domaines
traceroute yahoo.com tracer la connexion Internet vers « yahoo.com »
tracepath yahoo.com tracer la connexion Internet vers « yahoo.com »
mtr yahoo.com tracer la connexion Internet vers « yahoo.com » (de manière répétitive)
dig [@dns-serveur.com] example.com [{a|mx|any}] vérifier les enregistrements DNS de « example.com » par « dns-serveur.com » pour un enregistrement « a », « mx » ou « any »
iptables -L -n vérifier le filtre de paquets
netstat -a rechercher tous les ports ouverts
netstat -l --inet rechercher les ports à l’écoute
netstat -ln --tcp rechercher les ports TCP à l’écoute (numérique)
dlint example.com vérifier les information de zone DNS de « example.com »

[Astuce] Astuce

Certains de ces outils de configuration du réseau se trouvent dans « /sbin/ ». Il vous faudra peut-être utiliser le chemin complet vers la commande comme « /sbin/ifconfig » ou ajouter « /sbin » à la liste « $PATH » dans votre fichier « ~/.bashrc »

5.8. Optimisation du réseau

L’optimisation générique du réseau est en dehors des buts de cette documentation. Je ne parle que des sujets pertinents pour une connexion de l’utilisateur grand public.

Tableau 5.17. Liste des outils d'optimisation du réseau.

paquets popcon taille description
iftop V:13, I:93 109 afficher l’utilisation de la bande passante d'une interface réseau
iperf V:5, I:49 126 outil de mesure de la bande passante du protocole
apt-spy V:1, I:10 105 écrire un fichier « /etc/apt/sources.list » en fonction de tests de bande passante
ifstat V:2, I:13 88 InterFace STATistics Monitoring (surveillance des statistiques de l’interface)
bmon V:2, I:9 188 surveillance portable de la bande passante et estimation du débit
ethstatus V:0, I:6 84 script qui mesure rapidement le débit d"une interface réseau
bing V:0, I:4 96 testeur de bande passante empirique et stochastique
bwm-ng V:2, I:13 114 moniteur de bande passante simple en mode console
ethstats V:0, I:2 52 moniteur de statistiques Ethernet en mode console
ipfm V:0, I:1 156 outil d'analyse de bande passante

5.8.1. Rechercher le MTU optimum

La valeur du Maximum Transmission Unit (MTU) (Unité de transmission maximum) peut être déterminée expérimentalement par ping(8) avec l’option « -M do » qui envoie des paquets ICMP dont la taille commence par 1500 (avec un décalage de 28 octets pour l’en-tête IP+ICMP) et recherche la taille la plus grande sans fragmentation d'IP.

Essayez, par exemple, ce qui suit :

$ ping -c 1 -s $((1500-28)) -M do www.debian.org
PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.
From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454)

--- www.debian.org ping statistics ---
0 packets transmitted, 0 received, +1 errors

Essayez 1454 à la place de 1500

Vous voyez que ping(8) a réussi avec 1454.

Ce processus est la découverte du chemin MTU (PMTU) (RFC1191) et la commande tracepath(8) peut l’automatiser.

[Astuce] Astuce

L’exemple ci-dessus avec une valeur de PMTU de 1454 correspond à mon fournisseur FTTP précédent qui utilisait Asynchronous Transfer Mode (ATM) comme réseau fédérateur (« backbone ») et servait ses clients avec PPPoE. La valeur réelle de PMTU dépend de votre environnement, par exemple, 1500 avec mon nouveau fournisseur FTTP.

Tableau 5.18. Lignes directrices pour une valeur optimum de MTU

environnement de réseau MTU justification
Lien commuté (IP : PPP) 576 standard
Lien Ethernet (IP : DHCP ou fixe) 1500 standard et par défaut
lien Ethernet (IP : PPPoE) 1492 (=1500-8) 2 octets pour l’en-tête PPP et 6 octets pour l’en-tête PPPoE
lien Ethernet (épine dorsale de réseau du FAI : ATM, IP : DHCP ou fixe) 1462 (=48*31-18-8) spéculations de l’auteur : 18 pour l’en-tête Ethernet, 8 pour le « trailer » SAR
lien Ethernet (réseau fédérateur du FAI  : ATM, IP : PPPoE) 1454 (=48*31-8-18-8) consultez une justification dans « Configuration optimum du MTU pour les connexions ADSL PPPoE  »

En plus de ces lignes directrices, vous devriez savoir ce qui suit :

  • Toute utilisation d'une méthode de tunneling (VPN, etc.) peut réduire davantage le MTU optimal en raison de la surcharge qu'elles engendrent.

  • La valeur de MTU ne doit pas excéder la valeur expérimentale déterminée de PMTU .

  • La valeur de MTU la plus élevée est généralement meilleure lors que les autres limitations sont remplies.

5.8.2. Définir le MTU

Voici des exemples de définition de la valeur de MTU à partir de ses valeurs par défaut 1500 à 1454.

Pour le DHCP (consultez Section 5.5.4, « Interfaces réseau gérées par DHCP »), vous pouvez remplacer les lignes d'entrée iface pertinentes du fichier « /etc/network/interfaces » avec ce qui suit :

iface eth0 inet dhcp
 pre-up /sbin/ifconfig $IFACE mtu 1454

Pour une IP statique (consultez Section 5.5.5, « Interface réseau avec une adresse IP fixe »), vous pouvez remplacer les lignes d'entrées iface pertinentes du fichier « /etc/network/interfaces » avec ce qui suit :

iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 gateway 192.168.11.1
 mtu 1454
 dns-domain example.com
 dns-nameservers 192.168.11.1

Pour une connexion PPPoE directe (consultez Section 5.4.5, « La connexion PPPoE avec pppoeconf »), vous pouvez remplacer la ligne « mtu » pertinente du fichier « /etc/ppp/peers/dsl-provider » par ce qui suit :

mtu 1454

La tille maximum de segment (MSS : « maximum segment size ») est utilisée comme mesure de remplacement de la taille des paquets. La relation entre MSS et MTU est la suivante :

  • MSS = MTU - 40 pour IPv4

  • MSS = MTU - 60 pour IPv6

[Note] Note

Les optimisations basées sur iptables(8) (consultez Section 5.9, « Infrastructure de netfilter ») peuvent limiter la taille des paquets au MSS ce qui est utile pour le routeur. Consultez "TCPMSS" dans iptables(8).

5.8.3. Optimisation de TCP sur le réseau Internet

Le débit de TCP peut être maximisé en ajustant les paramètres de taille de tampon TCP comme cela est décrit dans « Guide de réglage de TCP » (« TCP Tuning Guide ») et « réglage de TCP » (« TCP tuning ») pour les réseaux WAN modernes de haut débit et de faible latence. À ce jour, les paramètres par défaut de Debian fonctionnent bien même lorsque mon réseau local est connecté par l’intermédiaire d'un service rapide sur fibre optique (FTTP) à 1Gb/s.

5.9. Infrastructure de netfilter

Netfilter fournit l’infrastructure pour un pare-feu dynamique (« stateful firewall ») et la traduction d'adresses réseau (NAT) (« network address translation ») avec des modules du noyau de Linux (consultez Section 3.5.12, « Initialisation des modules du noyau »).

Tableau 5.19. Liste d'outils de pare-feu

paquets popcon taille description
iptables V:277, I:993 1378 outils d'administration pour netfilter
iptstate V:1, I:6 135 surveillance continue de l’état de netfilter (semblable à top(1))
shorewall-init I:1 112 initialisation de Shoreline Firewall
shorewall V:11, I:26 1692 Shoreline Firewall, générateur de fichier de configuration pour netfilter
shorewall-lite V:0, I:0 120 Shoreline Firewall, générateur de fichier de configuration pour netfilter (version légère)
shorewall6 V:1, I:3 697 Shoreline Firewall, générateur de fichier de configuration pour netfilter (version IPv6)
shorewall6-lite V:0, I:0 118 Shoreline Firewall, générateur de fichier de configuration pour netfilter (version légère, IPv6)

L’outil netfilter principal de l’espace utilisateur est iptables(8). Vous pouvez configurer vous-même netfilter de manière interactive depuis l’interpréteur de commandes, enregistrer son état avec iptables-save(8) et le restaurer par l’intermédiaire d'un script d'init avec iptables-restore(8) lors du redémarrage du système.

Des scripts d'assistant tels que shorewall facilitent ce processus.

Consultez les documentations se trouvant sur http://www.netfilter.org/documentation/ (ou dans « /usr/share/doc/iptables/html/ »).

[Astuce] Astuce

Bien qu'elles aient été écrites pour Linux 2.4, la commande iptables(8) et la fonction netfilter du noyau s'appliquent toutes deux à la version actuelle de LInux 2.6.