Chapitre 37.  Configuration réseau

1. Principes
2. Configuration manuelle
3. Configuration permanente

Avant de pouvoir utiliser ou fournir des services sur un réseau, un système Debian GNU/Linux doit déjà être connecté à ce réseau. Sur un ordinateur de bureau, cette configuration est souvent automatique, mais il est bon de la maîtriser si l'on souhaite jouer un rôle de serveur.

1. Principes

Les réseaux informatiques utilisent un modèle composé de plusieurs couches de protocoles. Nous nous intéressons ici à la troisième couche, dite couche réseau, qui utilise le protocole IP (Internet protocol), dans sa version 4 ou 6 : c'est cette couche qui définit la topologie des réseaux, et dont la configuration est par conséquent très importante.

On se connecte à un réseau en utilisant une carte ou une clef réseau. Du point de vue du système d'exploitation, ce périphérique est une interface réseau. Sous Linux, ces interfaces sont nommées eth0, eth1… pour des interfaces filaires, et wlan0, wlan1 pour des interfaces sans fil (wifi, wimax…). Il existe également une interface spéciale, nommée lo (pour loopback) qui désigne toujours votre propre ordinateur.

[Note] Note

Dans tout ce chapitre, nous supposerons que vous disposez d'une interface filaire, nommée eth0. Nous verrons plus loin comment afficher la liste de vos interfaces.

Éléments de configuration

Une configuration réseau complète, permettant de profiter d'un réseau ou de l'Internet, est constituée des éléments suivants :

une adresse IP

cette adresse identifie votre hôte sur le réseau où il est connecté ;

un masque de sous-réseau

cette donnée indique la partie de votre adresse qui caractérise le réseau local sur lequel votre hôte est connecté, et lui permet de déterminer, pour n'importe quelle adresse IP, si celle-ci fait ou non partie du réseau local ;

une passerelle par défaut

c'est l'adresse IP à laquelle il faut transmettre les paquets IP destinés à des hôtes situés hors du réseau local, pour qu'ils soient routés vers le réseau local de leur destinataire ;

des serveurs DNS

ce sont les adresses de serveurs auxquels votre système ira demander les correspondances entre noms de domaine (www.debian.org) et adresses IP (194.109.137.218).

Chaque élément de configuration est nécessaire pour pouvoir utiliser normalement le réseau ou l'Internet :

  • sans adresse IP, il est impossible de recevoir les réponses à ses requêtes ;

  • sans masque de sous-réseau ou sans passerelle par défaut, il est impossible de communiquer avec les hôtes situés hors du réseau local ;

  • sans serveur DNS, on ne peut pas désigner un hôte par son nom de domaine, et il faut donc connaître les adresses IP de tous les serveurs que l'on souhaite utiliser.

[Note] Masque de sous-réseau

Le sous-réseau désigne votre réseau local ou LAN (local area network). Il est défini par un préfixe d'adresse, par exemple 192.168.0 : toutes les adresses IP qui commencent pas ce préfixe font partie de votre réseau local. Il peut être écrit de deux façon :

par sa longueur

en nombre de bits, notée /longueur : dans notre exemple, /24 (chaque chiffre d'une adresse IP fait un octet, soit 8 bits) ;

par un masque

semblable à une adresse IP dont tous les bits sont à 1 dans la partie correspondant au préfixe, et à 0 dans la partie restante : dans notre exemple, 255.255.255.0.

Configuration statique

C'est le mode de configuration le plus simple à comprendre : vous devez connaître à l'avance votre configuration complète, pour l'appliquer sur votre système.

Configurer votre connexion consiste alors à affecter à votre carte réseau son adresse IP et son masque de sous-réseau, à ajouter la passerelle par défaut à la table de routage du noyau Linux, et à noter l'adresse des serveurs DNS dans le fichier de configuration du résolveur DNS.

Configuration dynamique

Ce mode de configuration, désormais très répandu, est plus adapté aux ordinateurs portables, susceptibles d'être connectés à des réseaux différents, ou aux gens qui ne veulent pas avoir besoin de configurer eux-même leur connexion.

Pour cela, lorsque votre système démarre, ou détecte qu'il vient d'être connecté à un réseau, envoie une demande de paramètres de connexion. Pour un réseau IPv4, cette demande utilise le protocole DHCP (dynamic host configuration protocol)  ; pour un réseau IPv6, elle s'effectue dans le cadre d'un processus appelé découverte de voisinage, ou par DHCPv6.

Sur un réseau permettant les configurations dynamiques, un serveur répond alors en vous proposant une configuration, qui est alors appliquée sur votre système.

2. Configuration manuelle

2.1. Adresse IP et masque de sous-réseau

La configuration IP proprement dite peut être gérée à l'aide de la commande ifconfig. Sans argument, celle-ci affiche la configuration de toutes vos interfaces réseau configurées :

% ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1c:23:3f:ff:bb  
          inet adr:192.168.0.105  Bcast:192.168.0.255  Masque:255.255.255.0
          adr inet6: fe80::21c:23ff:fe3f:ffbb/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:749880 errors:0 dropped:0 overruns:0 frame:0
          TX packets:393902 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:910931782 (868.7 MiB)  TX bytes:32422248 (30.9 MiB)
          Interruption:17 

lo        Link encap:Boucle locale  
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:71 errors:0 dropped:0 overruns:0 frame:0
          TX packets:71 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:10096 (9.8 KiB)  TX bytes:10096 (9.8 KiB)

[Note] Note

Cette commande peut également afficher les interfaces non configurées, avec l'argument -a, pour all. Cela peut servir à déterminer le nom d'une interface non encore configurée.

Pour appliquer une configuration à une interface, on utilise la même commande, avec des arguments correspondants à cette configuration. Par exemple, pour utiliser l'adresse IPv4 192.168.0.42 et le masque de sous-réseau 255.255.255.0 sur l'interface eth0, en tant que root, tapez :

# ifconfig eth0 192.168.0.42

Pour ajouter l'adresse IPv6 2001:db8::6726 avec un sous-réseau de longueur 32, tapez :

# ifconfig eth0 add 2001:db8::6726/32
[Note] Note

Pour supprimer une configuration IPv4, utilisez la commande ifconfig eth0 down. Pour supprimer une configuration IPv6, utilisez la commande ifconfig eth0 del <adresse>.

2.2. Passerelle par défaut

La passerelle par défaut permet de définir l'hôte de votre réseau local vers lequel envoyer tous les paquets destinés à des hôtes situés hors du réseau local, ce qui définit une route par défaut. Cette route doit être ajoutée à la table de routage du noyau Linux, avec la commande route. Par exemple, si votre passerelle par défaut a pour adresse IPv4 192.168.0.1, et peut être jointe par votre interface eth0, ajoutez ainsi la route par défaut :

# route add default gw 192.168.0.1 dev eth0

Si vous êtes sur un réseau IPv6 qui possède une passerelle 2001:db8::1, utilisez l'option --inet6, qui permet de manipuler la table de routage IPv6 plutôt que la table IPv4 :

# route --inet6 add default gw 2001:db8::1 dev eth0

Pour afficher la table de routage conmplète, utilisez la commande route sans arguments. Pour supprimer une route, utilisez la commande route del, suivie des mêmes arguments :

% route --inet6
Table de routage IPv6 du noyau
Destination                    Next Hop                   Flag Met Ref Use If
2001::/32                      ::                         U    256 0     1 eth0
fe80::/64                      ::                         U    256 0     0 eth0
::/0                           2001:db8::1                UG   1   0     0 eth0
ff00::/8                       ::                         U    256 0     0 eth0
# route --inet6 del default gw 2001:db8::1 dev eth0
[Note] Note

La configuration IP et la table de routage peuvent être manipulées de façon plus avancée par une commande unique, ip, disponible dans le paquet iproute, dont vous pouvez consulter le site web.

2.3. Serveurs DNS

La configuration IP et la route par défaut concernaient le noyau Linux. Les serveurs DNS concernent le résolveur, une fonction logicielle qui permet de traduire les noms de domaines en adresses IP. Ce résolveur utilise pour cela les serveurs dont les adresses sont notées dans le fichier /etc/resolv.conf. Si le serveur DNS de votre fournisseur d'accès, a pour adresse IPv4 192.0.2.71, éditez ce fichier pour qu'il contienne :

nameserver 192.0.2.71

2.4. Configuration dynamique

Dans un réseau IPv4, vous pouvez demander une configuration par DHCP en utilisant le programme dhclient :

# dhclient eth0

Si un serveur DHCP est disponible sur votre réseau et répond à votre requête, dhclient vous rend la main en affichant des informations sur la configuration obtenue, appelée bail DHCP. Dans le cas contraire, il continue d'envoyer des requêtes DHCP indéfiniment, jusqu'à ce que vous décidiez de l'interrompre en appuyant sur Ctrl+c. Vous devrez alors procéder à une configuration manuelle…

3. Configuration permanente

Évidemment, il serait hors de question de devoir saisir à la main les commandes permettant de configurer votre connexion à chaque fois que vous démarrez votre système. Debian permet donc d'enregistrer votre configuration dans un fichier, /etc/network/interfaces :

auto lo eth1
allow-hotplug eth0

iface lo inet loopback

iface eth0 inet dhcp

iface eth1 inet static
    address 192.168.0.42
    netmask 255.255.255.0
    gateway 192.195.0.1
    dns-nameservers 192.0.2.71

iface eth1 inet6 static
    address 2001:db8::6726
    netmask 32
    gateway 2001:db8::1
    dns-nameservers 2001:db8::12

Interfaces à configurer automatiquement

Les instructions auto, qui peuvent se trouver plusieurs fois et n'importe où dans le fichier, précisent quelles interfaces doivent être configurées au démarrage du système d'exploitation. On les place en général juste avant la définition de chaque interface.

Les instructions allow-hotplug ont le même effet, à ceci près que l'interface ne sera configurée au démarrage que si elle est connectée à un réseau.

Dans mon exemple, les interfaces lo et eth1 seront donc configurées au démarrage, qu'elles soient branchées ou non. L'interface eth0, quant à elle, sera configurée au démarrage si elle est branchée.

Configuration d'une interface

La configuration de chaque interface est décrite dans une section iface <nom_de_l'interface>. Celle-ci est immédiatement suivie du protocole utilisé : inet pour une configuration IPv4 et inet6 pour une configuration IPv6. Enfin, toujours sur la même ligne, on trouve le type de configuration à utiliser : static, ou dhcp pour une configuration dynamique par DHCP.

[Note] Note

Pour une configuration IPv6 dynamique, il est inutile de préciser une configuration dans le fichier interfaces : le protocole IPv6 a été conçu de telle façon que le processus découverte de voisinage est entièrement pris en charge par le noyau.

Les interfaces configurées par DHCP n'ont besoin d'aucune autre paramètre. En revanche, pour les interfaces dont la configuration est définie de façon statique, il faut préciser cette configuration :

address

l'adresse IP attribuée à l'interface ;

netmask

pour une configuration IPv4, le masque de sous-réseau ; pour une configuration IPv6, la longueur du préfixe correspondant au sous-réseau ;

gateway

l'adresse IP de la passerelle ;

dns-nameservers

les adresses IP de vos serveurs DNS.

[Note] Note

La directive dns-nameservers ne peut être utilisée qu'après avoir installé le paquet resolvconf, qui n'est pas préinstallé avec Debian.

[Note] Note

Pour plus de détails sur ce fichier de configuration, vous pouvez consulter son manuel : man interfaces.

[Astuce] Astuce

Il est possible d'attribuer plusieurs configurations IP à une même adresse. La façon la plus simple pour cela est de définir des interfaces virtuelles. À partir de l'interface eth0, vous pouvez définir les interfaces eth0:0, eth0:1…, qui seront alors utilisables comme des interfaces réelles.

Appliquer la configuration d'une interface

Les interfaces listées comme auto ou allow-hotplug sont activées selon leur configuration au démarrage de Debian. Si vous venez de rédiger la configuration d'une interface, ou si vous voulez l'activer ou la désactiver à la main, utilisez les commandes ifup (pour l'activer) et ifdown (pour la désactiver) :

# ifup eth0