[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ suivant ]


Guide de référence pour Debian
Chapitre 10 - Configuration réseau


Ce chapitre présente l'administration réseau avec Debian. Pour une introduction générale au réseau sous GNU/Linux, lisez le Net-HOWTO.

Afin qu'une machine Debian accède à l'Internet, ses interfaces réseau doivent être supportées par le noyau et configurées.

Tout d'abord, il faut que le noyau supporte les périphériques réseau, comme les cartes Ethernet, les cartes Wi-Fi et les modems. Pour obtenir ce support, vous devrez peut-être recompiler le noyau ou ajouter des modules comme décrit dans Le noyau Linux et Debian, Chapitre 7.

La configuration des périphériques réseau est expliquée ci-dessous. L'information contenue dans ce chapitre a été mise à jour pour Sarge. La plus grande partie s'applique aussi pour les versions antérieures.


10.1 Bases des réseaux IP

Une machine Debian peut avoir plusieurs interfaces ayant chacune une adresse Internet Protocol (IP) différente. Les interfaces peuvent être de plusieurs types, dont :

Il existe un grand nombre d'autres périphériques réseau disponibles, comme SLIP, PLIP (IP sur ligne série et parallèle), périphériques shaper pour contrôler le trafic sur certaines interfaces, Frame Relay, AX.25, X.25, ARCnet et LocalTalk.

Chaque interface réseau connectée directement à l'Internet (ou à un réseau IP) est identifiée par une adresse IP unique sur 32 bits. [44] L'adresse IP est divisée en deux parties : l'une identifie le réseau et l'autre la machine. Si vous prenez une adresse IP, mettez à 1 les bits de l'adresse réseau et à 0 les bits de l'adresse de la machine, vous obtenez le masque de réseau.

Traditionnellement, les réseaux IP ont été groupés en classes dont les adresses de réseau font 8, 16 ou 24 bits de longueur. [45]

               adresse IP                     masque réseau   taille 
     Class A   1.0.0.0     - 126.255.255.255  255.0.0.0     =  /8
     Class B   128.0.0.0   - 191.255.255.255  255.255.0.0   = /16
     Class C   192.0.0.0   - 223.255.255.255  255.255.255.0 = /24

Les adresses IP n'étant pas dans ces plages sont utilisées dans des buts précis.

Il y a dans chaque classe des plages d'adresses réservées pour l'utilisation dans des réseaux locaux. Il est garanti que ces adresses ne peuvent pas entrer en conflit avec les adreses utilisées sur l'Internet (et par conséquent, si une de ces adresses est assignée à une machine alors cette machine ne peut pas accéder à l'Internet directement et doit y accéder par une passerelle qui agit comme proxy pour des services spécifiques ou fait de la translation d'adresse réseau – NAT). Ces plages d'adresses sont données dans la table suivante avec le nombre de plages dans chaque classe.

               addresse réseau              taille  nombre
     Class A   10.x.x.x                     /8      1
     Class B   172.16.x.x -  172.31.x.x     /16     16
     Class C   192.168.0.x - 192.168.255.x  /24     256

La première adresse dans un réseau IP est l'adresse du réseau lui-même. La dernière adresse est l'adresse de diffusion du réseau. [46] Toutes les autres adresses peuvent être allouées à des machines sur le réseau. Parmi celles-ci, la première ou la dernière adresse est généralement allouée à la passerelle Internet du réseau.

La table de routage contient l'information sur la façon d'envoyer les paquets IP vers leur destination. Voici un exemple de table de routage prise sur une machine Debian d'un réseau local avec une adresse IP 192.168.50.x/24. La machine 192.168.50.1 (aussi sur le réseau local) est un routeur pour le réseau d'entreprise 172.20.x.x/16 et la machine 192.168.50.254 (aussi sur le réseau local) est un routeur vers l'Internet.

     # route
     Kernel IP routing table
     Destination   Gateway        Genmask       Flags Metric Ref Use Iface
     127.0.0.0     *              255.0.0.0     U     0      0     2 lo
     192.168.50.0  *              255.255.255.0 U     0      0   137 eth0
     172.20.0.0    192.168.50.1   255.255.0.0   UG    1      0     7 eth0
     default       192.168.50.254 0.0.0.0       UG    1      0    36 eth0

Les adresses IP de la table peuvent aussi apparaître comme noms obtenus en cherchant les adresses dans le fichier /etc/networks ou en utilisant le résolveur de la bibliothèque C.

En plus du routage, le noyau peut effectuer de la translation d'adresse, de la modulation de trafic et du filtrage.

Voir Net-HOWTO et other networking HOWTOs pour plus d'information.


10.2 Configuration réseau bas niveau

Les outils de configuration réseau bas niveau traditionnels des systèmes GNU/Linux sont les programmes ifconfig et route qui viennent dans le paquet net-tools. Ces outils ont officiellement été rendus obsolètes par ip qui est dans le paquet iproute. Le programme ip fonctionne avec Linux 2.2 et supérieurs et a plus de possibilités que les anciens outils. Cependant, les anciens outils fonctionnent toujours et sont plus familiers à de nombreux utilisateurs.


10.2.1 Configuration réseau bas niveau – ifconfig et route

Voici une illustration de comment changer l'adresse IP de l'interface eth0 de 192.168.0.3 en 192.168.0.111 et faire de eth0 la route vers le réseau 10.0.0.0 via 192.168.0.1. On commence par exécuter ifconfig et route sans arguments pour afficher l'état courant de toutes les interfaces réseau et du routage.

     # ifconfig
     eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
          inet addr:192.168.0.3  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:13479541 (12.8 MiB)  TX bytes:20262643 (19.3 MiB)
          Interrupt:9
     
     lo   Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:22685256 (21.6 MiB)  TX bytes:22685256 (21.6 MiB)
     # route
     Kernel IP routing table
     Destination  Gateway      Genmask          Flags Metric Ref Use Iface
     192.168.0.0  *            255.255.0.0      U     0      0     0 eth0
     default      192.168.0.1  255.255.255.255  UG    0      0     0 eth0

D'abord, on désactive l'interface.

     # ifconfig eth0 inet down
     # ifconfig
     lo   Link encap:Local Loopback
       ... (plus d'entrée eth0)
     # route
       ... (plus d'entrée dans la table de routage)

Ensuite, on l'active avec la nouvelle adresse IP et le nouveau routage.

     # ifconfig eth0 inet up 192.168.0.111 \
                netmask 255.255.0.0 broadcast 192.168.255.255
     # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0

Le résultat :

     # ifconfig
     eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
          inet addr:192.168.0.111  Bcast:192.168.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...
     
     lo   Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          ...
     # route
     Kernel IP routing table
     Destination  Gateway      Genmask      Flags Metric Ref Use Iface
     192.168.0.0  *            255.255.0.0  U     0      0     0 eth0
     10.0.0.0     192.168.0.1  255.0.0.0    UG    0      0     0 eth0

Pour plus d'information voir ifconfig(8) et route(8).


10.2.2 Configuration réseau bas niveau – ip

Les commandes ip équivalentes à ifconfig et route, décrits ci-dessus, sont :

Le programme ip affiche la syntaxe de ses commandes lorsqu'il est exécuté avec l'argument help. Par exemple, ip link help affiche :

     Usage: ip link set DEVICE { up | down | arp { on | off } |
                          dynamic { on | off } |
                          multicast { on | off } | txqueuelen PACKETS |
                          name NEWNAME |
                          address LLADDR | broadcast LLADDR |
                          mtu MTU }
            ip link show [ DEVICE ]

Voir aussi ip(8).


10.2.3 Configurer une interface Wi-Fi

Pour les interfaces Wi-Fi, le programme iwconfig qui vient dans le paquet wireless-tools est utilisé en plus de ifconfig ou ip.

Voir iwconfig(8).


10.2.4 Configurer une interface PPP

Si vous accédez à l'Internet par un modem RTC alors la connexion est négociée en utilisant le protocole Point-to-Point Protocol (PPP). Ces connexions sont accédées par les interfaces ppp0, ppp1, etc.

Une interface PPP est gérée par le démon pppd qui vient dans le paquet ppp. Ainsi, pour l'utilisateur, configurer une interface PPP signifie configurer pppd.


10.2.4.1 Configurer pppd à la main

Pour qu'un lien réseau soit établi, un port de communication (habituellement un port série) doit être ouvert, des commandes doivent être envoyées au périphérique de communication (habituellement un modem), un numéro de téléphone doit être appelé, le démon PPP distant doit identifier l'utilisateur, une interface PPP doit être créée et les tables de routage doivent être modifiées pour que le trafic soit envoyé sur ce lien. pppd peut faire tout cela et possède donc une longue liste d'options. Ces options sont décrites dans pppd(8).

Sur un système Debian, les options globales sont définies dans /etc/ppp/options. Les options spécifiques à l'utilisateur sont définies dans ~/.ppprc. Les options qui dépendent du port de communication utilisé sont définies dans /etc/ppp/options.portname. Par exemple, supposons que vous avez deux modems—un modem intégré Lucent LT accédé par /dev/LT-modem et un modem externe accédé par /dev/ttyS0. Créez les deux fichiers d'options suivants.

     # cat > /etc/ppp/options.LT-modem <<EOF
     115200
     init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem"
     EOF
     # cat > /etc/ppp/options.ttyS0 <<EOF
     115200
     init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0"
     EOF

Ils réfèrent aux script chat suivants. D'abord /etc/chatscripts/setup-LT-modem.

     ABORT ERROR
     '' ATZ
     OK 'ATW2X2 S7=70 S11=55'
     OK AT

Ensuite, /etc/chatscripts/setup-ttyS0.

     ABORT ERROR
     '' ATZ
     OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0'
     OK AT

Le contenu de ces fichiers doit dépendre de votre matériel, bien sûr.

Les options peuvent aussi être données à pppd comme arguments.

Dans Debian pppd est habituellement démarré par la commande pon. Lorsque pon est utilisé, son premier argument définit un fichier d'options dans /etc/ppp/peers/, qui est aussi lu par pppd. [47] C'est ici que vous définissez des options spécifiques à un hôte distant particulier—par exemple, un Fournisseur d'Accès à Internet (FAI).

Supposons par exemple que vous vous déplacez entre Amsterdam et La Haye. Dans chaque ville vous avez accçs à deux FAI—Planet et KPN. D'abord, créez un fichier d'options de base pour chaque FAI.

     # cat > /etc/ppp/peers/KPN <<EOF
     remotename KPN
     noauth
     user kpn
     noipdefault
     ipparam KPN
     EOF
     # cat > /etc/ppp/peers/Planet <<EOF
     remotename Planet
     auth
     user user3579@planet.nl
     noipdefault
     mru 1000
     mtu 1000
     ipparam Planet
     EOF

Ces fichiers définissent les options qui diffèrent entre les deux FAI. Les options communes peuvent être placées dans /etc/ppp/options ou dans l'un des fichiers spécifiques à une interface si besoin.

Maintenant créez les fichiers d'options pour chaque FAI dans chaque ville. Dans notre exemple la seule différence entre se connecter à un FAI dans une ville et se connecter à l'autre est le script chat qui est requis. (Le script chat est différent parce que le numéro de téléphone local est différent.)

     # cat > /etc/ppp/peers/KPN-Amsterdam <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam"
     file /etc/ppp/peers/KPN
     EOF
     # cat > /etc/ppp/peers/KPN-DenHaag <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag"
     file /etc/ppp/peers/KPN
     EOF
     # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam"
     file /etc/ppp/peers/Planet
     EOF
     # cat > /etc/ppp/peers/Planet-DenHaag <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag"
     file /etc/ppp/peers/Planet
     EOF

Les directives file incluent chacune un des fichiers d'options défini ci-dessus. La directive connect spécifie la commande que pppd utilise pour effectuer la connexion. Normalement, on utilise le programme chat pour cela, en adaptant le script chat à chaque FAI. Voici les scripts chat pour La Haye ; les scripts chat pour Amsterdam peuvent être similaires excepté les numéros de téléphone ou ils peuvent être différents si le FAI offre un service à travers une autre compagnie.

     # cat > /etc/chatscripts/KPN-DenHaag <<EOF
     ABORT BUSY
     ABORT 'NO CARRIER'
     ABORT VOICE
     ABORT 'NO DIALTONE'
     ABORT 'NO DIAL TONE'
     ABORT 'NO ANSWER'
     ABORT ERROR
     OK-AT-OK ATDT 0676012321
     CONNECT \d\c
     EOF
     # cat > /etc/chatscripts/Planet-DenHaag <<EOF
     ABORT BUSY
     ABORT 'NO CARRIER'
     ABORT VOICE
     ABORT 'NO DIALTONE'
     ABORT 'NO DIAL TONE'
     ABORT 'NO ANSWER'
     ABORT ERROR
     OK-AT-OK ATDT 0676002505
     CONNECT \d\c
     EOF

Pour se connecter à ces ISP, vous devez avoir un nom de client et un mot de passe que pppd peut fournir à l'hôte distant à la demande. Cette information est définie soit dans /etc/ppp/pap-secrets (si le protocole PAP est utilisé) soit dans /etc/ppp/chap-secrets (si le protocole CHAP est utilisé). Bien que CHAP soit plus sûr, PAP est toujours beaucoup plus utilisé. Parce que ces fichiers contiennent des informations secrètes, seul root doit avoir la permission de les lire et écrire. Le format de ces fichiers est expliqué dans pppd(8). Un « secret » (troisième champ) est cherché dans le fichier par recherche du nom de client (premier champ) et/ou du nom du serveur (deuxième champ). Lorsque vous vous connectez à un FAI, vous ne connaissez généralement pas le nom du serveur, donc il faut fournir un nom de client à la place ; cela est fait sur la ligne user de peers/KPN et peers/Planet ci-dessus.

     # client name       server name  secret
     kpn                 *            kpn
     user3579@planet.nl  *            myfavoritepet

10.2.4.2 Configurer pppd avec pppconfig

Un moyen rapide de configurer pppd est d'utiliser le programme pppconfig qui vient dans le paquet du même nom. pppconfig configure les fichiers comme ceux ci-dessus en posant des questions à l'utilisateur.

Si vous choisissez d'utiliser resolvconf alors assurez-vous de sélectionner « None » à l'écran « Configure Nameservers ».


10.2.4.3 Configurer une interface PPP avec wvdial

Une approche différente pour utiliser pppd est de l'exécuter avec wvdial qui vient dans le paquet du même nom. Au lieu de faire exécuter chat à pppd pour numéroter et négocier une connexion, wvdial effectue la numérotation et la négociation initiale et ensuite démarre pppd pour faire le reste. Avec seulement un numéro de téléphone, un nom d'utilisateur et un mot de passe, wvdial réussit à effectuer la connexion dans la plupart des cas.


10.3 Nommer l'ordinateur


10.3.1 Nom de machine

Un système Debian a parfois besoin de s'identifier par un nom. Pour cela, un nom de machine est maintenu par le noyau.

Le script d'initialisation /etc/init.d/hostname.sh défini le nom de machine au démarrage (en utilisant la commande hostname) au nom donné dans /etc/hostname. Ce fichier doit contenir seulement le nom de machine, pas un nom de domaine complet.

Pour afficher le nom de machine actuel, exécutez hostname sans argument.


10.3.2 Nom de courriel

Le nom de courriel d'une machine est le nom que les programmes de courrier électronique utilisent pour l'identifier. Le fichier /etc/mailname contient ce nom suivi d'un retour à la ligne. Le nom de courriel est habituellement l'un des noms de domaine complets de la machine. Voir mailname(5).

Ce que les destinataires de courriers électroniques voient dans le champ From: des courriels envoyés depuis votre machine Debian dépend de la façon dont les agents pour utilisateur de courriel (Mail User Agent, MUA) et agents de transport de courriel (Mail Transport Agent, MTA) sont configurés. Supposons qu'un utilisateur local foo envoie un courriel depuis une machine dont le nom de courriel est myhost.dom. Le champ From: du courriel sortant sera :

Même lorsque le MUA a un champ From: configuré, le MTA peut ajouter un champ Sender:foo@herman.dom pour indiquer son origine réelle.

Bien sûr, lorsque le MTA réécrit l'adresse comme décrit dans Configurer Exim pour récupérer les adresses non existantes, Section 9.6.1.3 et Configurer Exim pour réécrire les adresses sélectionnées sur les courriels sortants, Section 9.6.1.4, l'adresse e-mail vue par le destinataire peut être changée en n'importe quoi.


10.4 Domain Name Service (DNS)

Les machines sont identifiées par un nom de domaine comme par une adresse IP. DNS est un système client-serveur dans lequel des résolveurs de noms consultent des serveurs de noms afin d'associer les noms de domaine avec les adresses IP et d'autres propriétés des machines. La bibliothèque GNU C resolver(3) peut aussi chercher des adresses IP dans des fichiers ou consulter Network Information Services (NIS).

Pour voir quel nom de domaine est associé avec la machine locale, utilisez la commande hostname --fqdn. Cela affiche le premier nom de domaine complet que le résolveur trouve pour la machine locale. [48]


10.4.1 Le résolveur

Trouver quelle adresse IP est associée avec un domaine particulier est le travail du résolveur. Le résolveur le plus communément utilisé est l'ensemble de fonctions qui ont ce nom (resolver(3)) dans la bibliothèque GNU C. Un autre est le résolveur FireDNS qui vient dans le paquet libfiredns.

La façon dont le résolveur de la bibliothèque C résout les noms est définie par la ligne hosts du fichier de configuration /etc/nsswitch.conf. Cette ligne liste les services qui doivent être utilisés pour résoudre un nom : par exemple, dns, files, nis, nisplus. [49] Voir nsswitch.conf(5). Si le service files, le comportement est aussi défini par le fichier de configuration /etc/hosts. Voir hosts(5).

Tous les fichiers ci-dessus sont statiques et peuvent être édités avec votre éditeur favori.

Si le service dns est utilisé, le comportement du résolveur est aussi défini par le fichier de configuration /etc/resolv.conf. Voir resolv.conf(5). Une des fonctions importantes de /etc/resolv.conf est de lister les adresses IP des serveurs de noms qui seront contactés pour résoudre le nom. Cette liste dépend souvent de l'environnement réseau, qui peut changer de temps en temps pendant que votre machine tourne. Des programmes comme pppd et dhclient sont capables de manipuler resolv.conf pour y ajouter ou enlever des lignes, mais ces possibilités ne marchent pas toujours correctement et peuvent créer des conflits mutuels. Le paquet resolvconf résout le problème en fournissant un cadre standard pour mettre à jour ce fichier. Voir Gérer l'information sur les serveurs de noms – resolvconf, Section 10.4.2.


10.4.2 Gérer l'information sur les serveurs de noms – resolvconf

Le paquet resolvconf fournit un cadre pour la gestion dynamique des informations sur les serveurs de noms disponibles. Il résout le vieux problème du maintien de listes dynamiques de serveurs de noms pour le résolveur et le cache DNS. resolvconf se place comme intermédiaire entre les programmes qui contrôlent les interfaces réseau et fournissent l'information sur les serveurs de noms, et les applications qui ont besoin de l'information sur les serveurs de noms.

resolvconf est conçu pour fonctionner sans aucune configuration manuelle préalable. Cependant, le paquet est relativement nouveau et peut nécessiter des interventions manuelles pour qu'il fonctionne correctement. C'est certainement vrai si vous avez personnalisé des paquets pour qu'ils mettent à jour /etc/resolv.conf : il faudra désactiver ces modifications.

Voir /usr/share/doc/resolvconf/README.gz pour plus de détails.


10.4.3 Garder en mémoire les noms résolus – dnsmasq

Sauf si votre serveur de nom est le serveur officiel d'un domaine, il vaut mieux utiliser un serveur de noms cache local comme dnsmasq. Il fonctionne bien avec resolvconf.


10.4.4 Fournir le Domain Name Service – bind

Si vous devez fournir un service de noms officiel pour un domaine alors il vous faut un serveur de noms complet comme named qui vient dans l'un des paquets bind9 ou bind. bind9 est recommandé pour une nouvelle installation.

Pour installer bind9, installez ces paquets de base : bind9 ; dnsutils. Vous voudrez peut-être aussi installer ces utilitaires : bind9-host ; dns-browse ; dnscvsutil ; nslint. Vous voudrez peut-être aussi installer ce paquet de documentation : bind9-doc. Vous voudrez peut-être aussi installer ces paquets de développement : libbind-dev ; libnet-dns-perl. Si vous configurez des interfaces par DHCP alors vous trouverez peut-être ce paquet utile : dhcp-dns.

Installez bind9 ou dpkg-reconfigure pour faire la configuration de base. La configuration consiste à éditer named.conf. Dans Debian, ce fichier se trouve dans /etc/bind/ et est principalement utilisé pour définir les zones DNS de base ; il inclut deux autres fichiers : named.conf.local, pour définir les zones locales, et named.conf.options, pour définir les options. (Ce dernier est traité par resolvconf pour produire /var/run/bind/named.options qui est le même que l'original sauf que l'entrée forwarders est une liste des serveurs de noms non locaux disponibles. Pour utiliser cela, changez la ligne include de named.conf pour qu'elle inclue /var/run/bind/named.options. Voir Gérer l'information sur les serveurs de noms – resolvconf, Section 10.4.2.)

Des fichiers de base de données cités dans named.conf* sans un chemin complet seront stockés dans /var/cache/bind/. C'est le bon endroit pour stocker les fichiers générés par named : par exemple, les fichiers de données pour les zones dont le démon est secondaire. Les fichiers de données statiques de /etc/bind/ sont et doivent être cités dans named.conf par leur chemin complet. Voir /usr/share/doc/bind9/README.Debian.gz pour plus de détails.


10.5 Configurer les interfaces réseau par DHCP

La configuration bas niveau des interfaces réseau peut être automatisée par le moyen de Dynamic Host Configuration Protocol (DHCP). Votre pare-feu ou votre routeur ou votre FAI haut-débit fournit peut-être l'adresse IP et d'autres paramètres de cette façon.

Pour que cela fonctionne, vous devez installer un des paquets suivants :

pump est simple et courament utilisé. dhcp3-client est complexe mais plus configurable. [50]


10.6 Configuration réseau haut niveau avec Debian

Afin de permettre la configuration réseau plus facile Debian fournit un outil de configuration haut niveau standard qui comprend les commandes ifup et ifdown et le fichier /etc/network/interfaces. [51] Si vous choisissez d'utiliser ifupdown pour configurer votre réseau alors vous ne devriez pas utiliser les commandes bas niveau aussi. [52] Ifupdown est écrit avec l'hypothèse qu'il sera seul utilisé pour configurer et déconfigurer les interfaces réseau.

Pour mettre à jour la configuration des interfaces, faites ceci :

     # ifdown eth0
     # editor /etc/network/interfaces  # modifiez à votre convenance
     # ifup eth0

Pour plus d'information voir interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz et ifup(8).


10.6.1 Configurer une interface avec une adresse IP fixe

Supposons que vous voulez configurer une interface Ethernet de façon à avoir l'adresse IP fixe 192.168.0.123. Cette adresse commence par 192.168.0 donc elle doit être sur un réseau local. Supposons aussi que 192.168.0.1 est l'adresse de la passerelle du réseau local vers l'Internet. Éditez /etc/network/interfaces et ajoutez une partie comme suit :

     iface eth0 inet static
             address 192.168.0.123
             netmask 255.255.255.0
             gateway 192.168.0.1

Si vous avez le paquet resolvconf installé alors vous pouvez ajouter ces lignes pour spécifier l'information DNS. Par exemple :

     iface eth0 inet static
             address 192.168.0.123
             netmask 255.255.255.0
             gateway 192.168.0.1
             dns-search nicedomain.org
             dns-nameservers 195.238.2.21 195.238.2.22

Après que l'interface ait été activée, les arguments des options dns-search et dns-nameservers sont disponibles à resolvconf pour inclusion dans resolv.conf. L'argument nicedomain.org de l'option dns-search correspond à l'argument d'une option search de resolv.conf(5). Les arguments 195.238.2.21 et 195.238.2.22 de l'option dns-nameservers correspondent aux arguments des options nameserver de resolv.conf(5). D'autres options sont dns-domain et dns-sortlist. Voir Gérer l'information sur les serveurs de noms – resolvconf, Section 10.4.2.


10.6.2 Configurer une interface par DHCP

Pour configurer une interface par DHCP, éditez le fichier /etc/network/interfaces afin d'y inclure :

     iface eth0 inet dhcp

Afin que cela fonctionne vous devez avoir installé l'un des clients DHCP mentionnés dans Configurer les interfaces réseau par DHCP, Section 10.5.


10.6.3 Configurer une interface Wi-Fi

Le paquet wireless-tools inclut un script /etc/network/if-pre-up.d/wireless-tools qui permet de configurer du matériel Wi-Fi (802.11a/b/g) avant qu'une interface soit activée. La configuration se fait à l'aide du programme iwconfig ; voir iwconfig(8). Pour chaque paramètre de la commande iwconfig vous pouvez inclure une option dans /etc/network/interfaces avec le nom du paramètre préfixé par « wireless- ». Par exemple, pour configurer l'ESSID de eth0 en myessid et la clé de chiffrage à 123456789e avant d'activer eth0 par DHCP, éditez /etc/network/interfaces comme suit :

     iface eth0 inet dhcp
             wireless-essid myessid
             wireless-key 123456789e

10.6.4 Configurer une interface PPP

Les programmes ifup et ifdown utilisent pon et poff pour activer ou désactiver des interfaces PPP ; lisez-donc d'abord Configurer une interface PPP, Section 10.2.4.

Supposons que vous avez fait la configuration pour utiliser le fournisseur myisp. Éditez /etc/network/interfaces pour y inclure :

     iface ppp0 inet ppp
     provider myisp

Avec ces lignes, ifup ppp0 exécute

     pon myisp

Malheureusement, il n'est pour le moment pas possible de fournir d'autres options à pppd dans une section ppp de /etc/network/interfaces. [53]

Il n'est pour le moment pas possible d'utiliser ifupdown pour effectuer la configuration post-connexion des interfaces PPP. Comme pon se termine avant que pppd ait terminé de créer la connexion, ifup exécute les scripts up avant que l'interface soit activée. Jusqu'à ce que ce bogue [54] soit corrigé il est nécessaire de faire la configuration post-connexion dans /etc/ppp/ip-up ou /etc/ppp/ip-up.d/.


10.6.5 Configurer une interface PPPoE

Beaucoup de Fournisseurs d'Accès Internet (FAIs) utilisent PPP pour négocier les connexions bien que leurs clients soient connectés par des réseaux Ethernet et/ou ATM. Cela se fait à l'aide de PPP sur Ethernet (PPPoE) qui est une technique d'encapsulation des flux PPP dans des trames Ethernet. Supposons que votre FAI soit myisp. D'abord, configurez PPP et PPPoE pour le fournisseur myisp. Le moyen le plus facile de le faire est d'installer le paquet pppoeconf et de lancer pppoeconf depuis une console. Ensuite éditez /etc/network/interfaces pour y inclure :

     iface eth0 inet ppp
             provider myisp

Il y a quelques fois des problèmes d'Unité Maximum de Transmission (Maximum Transmit Unit – MTU) avec PPPoE sur des lignes DSL (Digital Subscriber Lines). Voir DSL-HOWTO pour plus de détails.

Notez que si votre modem haut-débit contient un routeur alors celui-ci prend en charge la connexion PPPoE lui-même et apparaît sur le LAN comme une simple passerelle Ethernet vers l'Internet.


10.6.6 Configurer plusieurs interfaces Ethernet pour une passerelle

Supposons que eth0 soit connectée à l'Internet avec une adresse IP obtenue par DHCP et eth1 soit connectée au LAN avec l'adresse IP fixe 192.168.1.1. Éditez /etc/network/interfaces pour y inclure :

     iface eth0 inet dhcp
     
     iface eth1 inet static
             address 192.168.1.1
             netmask 255.255.255.0

Si vous activez NAT sur cette machine comme décrit dans Configurer une passerelle, Section 10.12 alors vous pourrez partager la connexion Internet avec toute les machines du LAN.


10.6.7 Configurer des interfaces virtuelles

Avec des interfaces virtuelles, vous pouvez configurer une seule carte Ethernet pour qu'elle soit connectée à plusieurs sous-réseaux IP. Par exemple, supposons que votre machine est sur le réseau local 192.168.0.x/24. Vous voulez vous connecter à l'Internet en utilisant une adresse IP publique obtenue par DHCP en utilisant cette même carte Ethernet. Éditez /etc/network/interfaces pour y inclure :

     iface eth0 inet static
             address 192.168.0.1
             netmask 255.255.255.0
             network 192.168.0.0
             broadcast 192.168.0.255
     
     iface eth0:0 inet dhcp

L'interface eth0:0 est virtuelle. Lorsqu'elle est activée, son parent eth0 l'est aussi.


10.7 Reconfiguration du réseau

Dans ce qui suit, il est important de comprendre la différence entre une interface physique et une interface logique. [55] Une interface physique est ce que l'on a appelé précédemment « l'interface », qui s'appelle eth0, ppp1, etc. Une interface logique est un ensemble de valeurs qui peuvent être assignées aux paramètres variables d'une interface physique. Si vous trouvez cela confus, remplacez l'expression « configuré comme interface logique X » par « configuré avec le profil d'interface X » en lisant.

Les définitions iface de /etc/network/interfaces sont en fait des définitions d'interfaces logiques, pas physiques. [56] Si vous ne voulez jamais reconfigurer vos interfaces alors vous pouvez ignorer cela puisque l'interface physique X sera par défaut configurée comme interface logique X.

Cependant, supposons que votre ordinateur est un portable que vous transportez entre la maison et le travail. Lorsque vous connectez votre ordinateur au réseau de l'entreprise ou votre réseau personnel, vous devez configurer eth0 en conséquence.

Définissez d'abord deux interfaces logiques home et work (au lieu de eth0 comme on l'a fait auparavant) qui décrit comment l'interface doit être configurée pour le réseau personnel et le réseau de l'entreprise, respectivement.

     iface home inet static
             address 192.168.0.123
             netmask 255.255.255.0
             gateway 192.168.0.1
     
     iface work inet static
             address 81.201.3.123
             netmask 255.255.0.0
             gateway 81.201.1.1

Ensuite l'interface physique eth0 peut être activée pour le réseau personnel avec la configuration appropriée en le spécifiant sur la ligne de commande :

     # ifup eth0=home

Pour reconfigurer eth0 pour le réseau de l'entreprise, exécutez les commandes :

     # ifdown eth0
     # ifup eth0=work

Notez qu'avec le fichier interfaces ci-dessus il n'est plus possible d'activer eth0 par ifup eth0 tout seul. La raison est que ifup utilise le nom de l'interface physique comme défaut pour le nom de l'interface logique et dans notre exemple aucune interface logique eth0 n'est définie.


10.8 Reconfiguration magique du réseau

Les noms d'interfaces logiques peuvent être transformés en autres noms d'interfaces logiques lorsque ifup est exécuté. La façon dont les noms sont transformés dépend des circonstances. Ainsi, ifup peut être configuré pour activer une interface physique avec la bonne interface logique parmi un ensemble d'alternatives prédéterminées.

La transformation de noms d'interfaces logiques apparaît dans les cas suivants :

La syntaxe de la section mapping est :

     mapping glob-pattern
             script script-name
             [map script input]

Le script appelé dans la section mapping est exécuté avec le nom de l'interface physique comme argument et avec le contenu de toutes les lignes map suivantes de la section. Le script affiche les résultats de la transformation sur la sortie standard avant de s'arrêter.

Par exemple, la section mapping suivante fera que ifup activera l'interface eth0 comme interface logique home.

     mapping eth0
             script /usr/local/sbin/echo-home

where /usr/local/sbin/echo-home is:

     #!/bin/sh
     echo home

Parce que la transformation est faite par un script, il est possible de sélectionner l'interface logique par un test. Commençons par un exemple. Supposons que vous avez différentes cartes réseau pour le travail et pour la maison. Le répertoire /usr/share/doc/ifupdown/examples/ contient un script de transformation qui peut être utilisé pour sélectionner une interface logique en se basant sur l'adresse MAC (Media Access Controller). Installez d'abord le script dans un répertoire approprié.

     # install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh \
        /usr/local/sbin/

Ensuite ajoutez une section comme celle qui suit à /etc/network/interfaces :

     mapping eth0
             script /usr/local/sbin/get-mac-address.sh
             map 02:23:45:3C:45:3C home
             map 00:A3:03:63:26:93 work

Des programmes plus sophistiqués de transformation sont décrits ci-dessous dans guessnet, Section 10.8.1, et laptop-net, Section 10.8.2.


10.8.1 guessnet

Installez guessnet et ajoutez une section comme suit à /etc/network/interfaces :

     mapping eth0
             script guessnet-ifupdown
             map home
             map work

Maintenant lorsque vous exécutez ifup eth0, guessnet vérifiera s'il faut activer home ou work. Pour faire cela, il utilise l'information des définitions d'interfaces logiques.


10.8.2 laptop-net

Le paquet laptop-net a une approche différente de la reconfiguration du réseau automagique. Laptop-net n'utilise pas les interfaces logiques de ifupdown mais ses propres schémas de configuration et profils système. Laptop-net utilise néanmoins ifupdown pour configurer les interfaces physiques. Pour plus d'informations, consultez sa documentation laptop-net-doc.


10.9 Activer la reconfiguration du réseau

Nous avons vu comment les interfaces peuvent être reconfigurées. La reconfiguration doit être effectuée au moment approprié.

Traditionnellement, le réseau était configuré pendant la séquence de démarrage par le fichier /etc/rcS.d/S40networking et était rarement reconfiguré. Les services qui dépendaient du réseau étaient démarrés plus tard dans la séquence de démarrage. À l'arrêt ou au redémarrage, les scripts de démarrage étaient exécutés dans l'ordre inverse.

Actuellement, cependant, il y a une tendance dans GNU et Linux à supporter du matériel et des environnements qui changent dynamiquement. D'abord, le support pour l'insertion de cartes PCMCIA à chaud a été ajouté ; plus récemment, le mécanisme hotplug a été ajouté afin que beaucoup plus de périphériques puissent être ajoutés pendant que l'ordinateur tourne. Cela inclut du matériel réseau. Notez que les services qui dépendent sur du matériel qui est installé à chaud doivent seulement être démarrés après que le matériel ait été ajouté et doivent être arrêtés lorsque le matériel est enlevé. Cela signifie que ces services doievnt être enlevés du contrôle du démarrage System V et mis sous contrôle du paquet ifupdown à la place.

Par exemple, supposons que le service foo contrôlé par le script de démarrage /etc/init.d/foo dépend de l'interface réseau eth0 reconfigurée dynamiquement.


10.9.1 Activer la configuration réseau au démarrage

Au démarrage le script /etc/rcS.d/S40networking exécute la commande ifup -a. Cela active toutes les interfaces physiques listées dans les sections auto de /etc/network/interfaces.

Aujourd'hui, il est souvent mieux de gérer la configuration réseau par des méthodes dynamiques. Une fois que les mécanismes pour supporter du matériel qui change dynamiquement sont en place, il devient plus simple de traiter le matériel fixe comme s'il était dynamique aussi. Le démarrage peut être traité comme un simple événement hotplug. (Voir Activer la configuration réseau – hotplug, Section 10.9.2.)

Cependant, dans presque tous les cas, on veut au moins l'interface lo au démarrage. Ainsi, assurez-vous que /etc/network/interfaces inclut les lignes suivantes.

     auto lo
     
     iface lo inet loopback

Vous pouvez ajouter d'autres interfaces physiques dans des sections auto si vous voulez qu'elles soient activées au démarrage aussi. N'ajoutez jamais d'interface PCMCIA dans des sections auto. cardmgr est démarré après /etc/rcS.d/S40networking dans la séquence de démarrage.


10.9.2 Activer la configuration réseau – hotplug

Pour le support de hotplug installez le paquet hotplug.

Le matériel réseau peut être installé à chaud soit au démarrage soit après qu'une carte (par exemple PCMCIA) a été insérée dans la machine, ou après qu'un utilitaire comme discover est exécuté et charge les modules nécessaires.

Lorsque le noyau détecte un nouveau matériel il initialise le pilote pour ce matériel et exécute ensuite le programme hotplug pour le configurer. Ensuite si le matériel est enlevé alors le noyau exécute hotplug de nouveau avec des paramètres différents. Dans Debian, lorsque hotplug est appelé il exécute les scripts de /etc/hotplug/ et /etc/hotplug.d/. Voir hotplug(8) pour plus de détails.

Le matériel réseau qui vient d'être inséré est configuré par le script /etc/hotplug/net.agent. [57] Supposons que votre carte réseau PCMCIA ait été insérée, ce qui rend l'interface eth0 disponible pour utilisation. /etc/hotplug/net.agent exécute les actions suivantes :

     ifup eth0=hotplug

À moins d'avoir ajouté une interface logique appelée hotplug à /etc/network/interfaces, cette commande ne fera rien. Pour que cette commande configure eth0, ajoutez la section suivante dans /etc/network/interfaces :

     mapping hotplug
             script echo

Comme expliqué dans Reconfiguration du réseau, Section 10.7 cela va transformer la commande ci-dessus pour être équivalente à :

     ifup eth0=eth0

(N'incluez pas de section de ce type si vous utilisez des instances de ifplugd démarrées par hotplug pour contrôler l'interface, comme décrit dans Activer la configuration réseau – ifplugd, Section 10.9.3.)

Si vous voulez que seulement eth0 soit activée par hotplug, et pas d'autres interfaces, alors utilisez grep au lieu de echo :

     mapping hotplug
             script grep
             map eth0

Voir Reconfiguration magique du réseau, Section 10.8 et /usr/share/doc/hotplug/README.Debian pour plus d'astuces.


10.9.3 Activer la configuration réseau – ifplugd

ifplugd active ou désactive une interface selon que le matériel sous-jacent est ou n'est pas connecté à un réseau. Le programme peut détecter un câble connecté à une interface Ethernet ou un point d'accès Wi-Fi. Lorsque ifplugd voit que l'état d'un lien a changé il lance un script qui par défaut exécute ifup ou ifdown pour l'interface.

ifplugd fonctionne bien avec hotplug. Lorsqu'une carte est insérée, ce qui rend une interface disponible, /etc/hotplug.d/net/ifplugd.hotplug exécute une instance de ifplugd pour cette interface. Lorsque ifplugd détecte que la carte est connectée à un réseau, il exécute ifup pour cette interface.


10.9.4 Activer la configuration réseau – waproamd

Afin de s'associer à un point d'accès, une carte Wi-Fi peut devoir être programmée avec une clé de chiffrement WEP. Si vous utilisez ifplugd pour contrôler ifup comme décrit dans Activer la configuration réseau – ifplugd, Section 10.9.3 alors vous ne pouvez évidemment pas configurer la clé de chiffrement avec ifup parce que ifup n'est appelé qu'après que la carte ait été associée au point d'accès. Une solution possible est de programmer toutes les clés requises dans la mémoire non volatile de la carte Wi-Fi. Si vous vous déplacez sur de nombreux réseaux, votre carte Wi-Fi peut ne pas pouvoir stocker assez de clés.

Une autre solution est d'utiliser waproamd qui configure la clé de chiffrement WEP selon les points d'accès disponibles révélés par une recherche.

waproamd fonctionne bien avec hotplug. Lorsqu'une carte est insérée, ce qui rend une interface disponible, /etc/hotplug.d/net/waproamd.hotplug exécute une instance de waproamd pour cette interface. waproamd fonctionne bien avec ifplugd.

Voir le README du paquet waproamd pour plus d'information.


10.9.5 Configuration réseau et PCMCIA

La configuration des cartes réseau PCMCIA peut se faire de différentes façons.

L'approche recommandée pour les cartes 16 bits prend avantage du fait que le sous-système hotplug de Linux 2.4 supporte PCMCIA. Suivez simplement les instructions de Activer la configuration réseau – hotplug, Section 10.9.2. [58] Afin que le paquet pcmcia-cs n'interfère pas avec le paquet hotplug, vous devez le modifier en ajoutant la ligne :

     exit 0

au début de /etc/pcmcia/network pour le désactiver.

Notez qu'il n'y a rien de mauvais à exécuter cardmgr. On en veut simplement pas qu'il appelle les programmes de configuration réseau.

Afin que cardmgr fonctionne correctement vous devrez peut-être éditer /etc/pcmcia/config.opts afin de configurer les ressources assignées aux cartes PCMCIA 16 bits. Voir PCMCIA, Section 7.2.1 et le Linux PCMCIA HOWTO pour plus d'information.


10.10 Configuration des services réseau

La configuration des services réseau sur une machine de bureau ou un serveur personnel inclut :


10.11 Résolution des problèmes réseau

Si vous rencontrez des problèmes, alors consultez la sortie des programmes suivants en premier :

     # ifconfig
     # cat /proc/pci
     # cat /proc/interrupts
     # dmesg | more

Consultez aussi les sections suivant Bases pour tester un réseau, Section 8.6.29.

Si vous avez des problèmes avec certains sites web, consultez Étranges problèmes d'accès à certains sites web, Section 3.7.5.


10.12 Configurer une passerelle

Une machine Debian peut être une passerelle multi-possibilités, qui fait Translation d'Adresse Réseau (NAT, aussi connu sous le nom de masquerading), transfert de courriel, DHCP, cache DNS, cache HTTP, serveur CVS, serveur NFS, serveur Samba. Voir Nom d'hôte et IP à utiliser pour le réseau local, Section 3.1.9 pour un exemple de configuration.


10.12.1 Configuration de Netfilter

Le projet netfilter/iptables est un sous-système de pare-feu pour Linux 2.4 et supérieur. Voir Netfilter, où de nombreux problèmes de configuration réseau sont expliqués.


10.12.1.1 Bases de Netfilter

Le traitement des paquets par Netfilter utilise cinq chaînes par défaut : PREROUTING, INPUT, FORWARD, OUTPUT, et POSTROUTING.

                     routing
                     decision
     IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
     interface  ROUTING  \       filter       /       ROUTING     interface
                DNAT     |       tracking     ^       SNAT
                REDIRECT |                    |      MASQUERADE
                         v                    |
                       INPUT                OUTPUT
                         | filter             ^ filter,DNAT 
                         v                    |
                         \--> Local Process --/
                                 user-space programs

10.12.1.2 Table Netfilter

Les paquets sont traités pour chaque chaîne par défaut selon la table suivante.


10.12.1.3 Cibles Netfilter

Les règles de pare-feu ont plusieurs cibles :


10.12.1.4 Commandes Netfilter

Les commandes de base de iptables sont :

     iptables -N chaine                   # crée une chaine
     
     iptables -A chaine \                 # ajoute une règle à  chaine
              -t table \                  # utilise table
                                            (filtre, nat, troncage)
              -p protocol \               # tcp, udp, icmp, ou tous
              -s source-address[/mask] \
              --sport port[:port] \       # port source si -p est tcp ou udp
              -d destination-address[/mask] \
              --dport port[:port] \       # port destination si
                                            -p est tcp ou udp
              -j target \                 # que faire si cela correspond
              -i in-interface-name \      # pour INPUT,  FORWARD, PREROUTING
              -o out-interface-name       # pour FORWARD, OUTPUT, POSTROUTING

10.12.1.5 Translation d'adresse réseau (NAT)

Les machines du LAN peuvent accéder à l'Internet à travers une passerelle qui traduit les adresses IP du LAN en des adresses IP utilisables sur l'Internet.

     # apt-get install ipmasq

Appliquez les règles de l'exemple pour fortifier la protection de ipmasq. Consultez /usr/share/doc/ipmasq/examples/stronger/README. Pour l'image du noyau Debian kernel-image-2.4 de Woody, assurez-vous de charger les modules appropriés. La version de Sarge corrige ceci. Consultez Fonctions réseau, Section 7.2.3 pour les instructions de configuration.

Pour l'image du noyau Debian 2.2, éditez Z92timeouts.rul dans /etc/masq/rules comme suit pour assurer une connexion plus longue aux sites distants (bon pour de gros emails, etc.) :

     # tcp, tcp-fin, udp
     # 2hr, 10 sec, 160 sec - default
     # 1 day, 10 min, 10 min - longer example
     $IPCHAINS -M -S 86400 600 600

De plus, si le réseau est accédé par une carte PCMCIA, ipmasq a besoin d'être démarré soit depuis /etc/pcmcia/network.opts (lire /usr/share/doc/ipmasq/ipmasq.txt.gz) soit depuis /etc/network/interfaces (lire Configuration réseau et PCMCIA, Section 10.9.5 et Activer la reconfiguration du réseau, Section 10.9).


10.12.1.6 Rediriger une connexion SMTP (2.4)

Supposons que vous avez un PC portable qui est configuré pour utiliser un autre environnement réseau et que vous voulez utiliser votre logiciel de courrier électronique sans le reconfigurer.

En ajoutant les règles suivantes avec la commande iptables sur la passerelle, la connexion SMTP sera redirigée vers la passerelle.

     # iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
                -p tcp --dport smtp --to-port 25 # smtp=25,
                                                   INPUT est ouvert

Pour une règle de redirection plus complexe, installez le paquet ipmasq et ajoutez M30redirect.def au répertoire /etc/ipmasq/rules/.


10.12.2 Gérer plusieurs connexions à l'Internet

[FIXME] Politique de routage (par Phil Brutsche pbrutsch@tux.creighton.edu) : Voir le Manuel d'iproute pour les détails. Le contrôle de traffic peut aussi être intéressant.

Environnement :

     eth0: 192.168.1.2/24; gateway 192.168.1.1
     eth1: 10.0.0.2/24; gateway 10.0.0.1
     Pas de masquerading sur cette machine.

Un peu de magie :

  • ip rule add from 192.168.1.2 lookup 1

  • ip rule add from 10.0.0.2 lookup 2

  • ip route add to default via 10.0.0.1 metric 0

  • ip route add to default via 192.168.1.1 metric 1

  • ip route add table 1 to 192.168.1.0/24 via eth0

  • ip route add table 1 to 10.0.0.2/24 via eth1

  • ip route add table 1 to default via 192.168.1.1

  • ip route add table 2 to 192.168.1.0/24 via eth0

  • ip route add table 2 to 10.0.0.2/24 via eth1

  • ip route add table 2 to default via 10.0.0.2

  • [FIXME] Je n'ai jamais fait cela. Comment configurer une connexion RTC en cas de défaillance d'une connexion rapide ? Envoyez-moi une rustine pour cela s'il-vous-plaît :)


    [ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ suivant ]


    Guide de référence pour Debian

    CVS, jeu 18 jan 2007 11:52:23 UTC

    Osamu Aoki osamu#at#debian.org
    Traduction en Français : Guillaume Erbs gerbs#at#free.fr
    Auteurs, Section A.1