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.
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 | |
---|---|
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. |
Une configuration réseau complète, permettant de profiter d'un réseau ou de l'Internet, est constituée des éléments suivants :
cette adresse identifie votre hôte sur le réseau où il est connecté ;
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 ;
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 ;
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.
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 :
|
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.
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.
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 | |
---|---|
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 | |
---|---|
Pour supprimer une configuration IPv4, utilisez la commande ifconfig eth0 down. Pour supprimer une configuration IPv6, utilisez la commande ifconfig eth0 del <adresse>. |
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 | |
---|---|
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. |
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
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…
É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
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.
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 | |
---|---|
Pour une configuration IPv6 dynamique, il est inutile de
préciser une configuration dans le fichier
|
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 :
l'adresse IP attribuée à l'interface ;
pour une configuration IPv4, le masque de sous-réseau ; pour une configuration IPv6, la longueur du préfixe correspondant au sous-réseau ;
l'adresse IP de la passerelle ;
les adresses IP de vos serveurs DNS.
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 | |
---|---|
Pour plus de détails sur ce fichier de configuration, vous pouvez consulter son manuel : man interfaces. |
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. |
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