Tout système d'exploitation (y compris MS Windows™ depuis l'antique version 95) dispose d'un client DHCP dont le rôle est de rechercher sur le réseau un serveur DHCP et de négocier avec lui une configuration IP cohérente.
Si le poste de travail est correctement configuré, le client DHCP s'occupera de tout.
N'étant pas un fan de ces systèmes, nous nous contenterons de la démonstration sur un Windows XP Pro (SP3).
Voici un moyen (parmi d'autres) d'y arriver. Celle-ci s'appelle la « méthode en dix clics ».
Tu cliques à gauche sur Démarrer
et, à condition d'avoir configuré son machin de cette façon, les favoris réseau
apparaissent. Tu cliques à droite sur les favoris réseau et tu cliques à gauche sur propriétés
.
Tout ceci doit faire apparaitre cette fenêtre :
Là, tu cliques à droite sur la Connexion au réseau local
et tu cliques à gauche sur propriétés
. Ceci t'amène à :
Tu cliques deux fois de suite à gauche sur Protocole Internet (TCP/IP)
. Tu es presque arrivé.
Ici, il suffit de cliquer à gauche successivement sur Obtenir une adresse IP automatiquement
, sur Obtenir les adresses des serveurs DNS automatiquement
et enfin sur OK
. Et voilà le travail.
Il existe une méthode, dite « méthode en sept clics », qui permet de consulter sa configuration IP. Nous allons en voir une autre dite « méthode de la ligne de commande ».
Tu ouvres une console DOS
, aussi appelée invite de commandes
et tu tapes :
ipconfig
Nous obtenons alors l'essentiel de la configuration IP.
Si nous souhaitons plus de détails, il faudra utiliser la commande :
ipconfig /all
Nous voyons ici toutes les informations concernant le bail dhcp obtenu. La « méthode en sept clics » n'apporte strictement aucune information supplémentaire, elle permet juste de faire travailler l'index et le majeur (éventuellement l'annulaire) de la main droite (habituellement), au détriment de tous les autres doigts.
Ici, nous sommes dans le bazar et suivant les distributions, les choses peuvent changer de façon plus ou moins significative. Nous prendrons comme exemple une Debian Lenny et une Ubuntu Jaunty dont les architectures restent très proches puisque l'autre est dérivée de l'une.
GNU/Linux étant en perpétuelle évolution, les possibilités de configuration du réseau ont suivi le même chemin. Il existe en gros deux moyens de le faire :
NetworkManager
, qui s'appuie lui-même sur la couche HAL
et sur DBUS
en environnement graphique, qui est bien pratique pour les postes portables (Laptop), surtout lorsqu'ils sont équipés d'une connexion WI-FI. NetworkManager dispose d' « applets » adaptés à la plupart des environnements graphiques (GNOME, KDE, XFCE…). Ce projet, initié par RedHat en 2004 manque peut-être encore un peu de maturité, mais commence à être tout à fait utilisable par une autre population que celle des « geeks ».
Commençons par le plus « simple », c'est-à-dire la méthode où ce sont les autres qui choisissent à votre place (courant très en vogue de nos jours). Un « Desktop » avec Ubuntu 9.04 (Jaunty) est connecté au réseau où notre DHCP opère. Voici ce que ça donne :
Tu cliques à droite sur l'applet puis à gauche sur Informations de connexion
(méthode en deux clics) et tu obtiens :
Bien entendu, tout ceci fonctionne bien parce que les concepteurs d'Ubuntu Jaunty ont correctement pensé l'architecture de la distribution, que tous les paquets nécessaires ont été installés et que les scripts de post-installation ont correctement configuré tout ça. Les trois paquets essentiels, mais qui incluent beaucoup de dépendances, sont :
network-manager
pour la gestion automatisée des connexions actives ;network-manager-gnome
pour que l'applet soit présent dans la zone de notification ;dhcp3-client
qui est le client DHCP probablement le plus courant, bien qu'il en existe de nombreux autres. Car dans une architecture client/serveur, il faut un serveur mais aussi un client.
Une méthode plus rustique, mais tout aussi efficace lorsque l'on est sédentaire, consiste à configurer le réseau au moyen de fichiers texte. Dans l'architecture Debian et dérivées, tout de passe dans /etc/network/interfaces
.
Nous sommes sur une Lenny sans interface graphique (pas de méthodes en X clics). Il nous faut bien sûr un client DHCP, pourquoi pas dhcp3-client
qui est le choix par défaut sur Debian. En suite, nous pouvons créer ou modifier le fichier /etc/network/interfaces
comme ceci :
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
La traduction est assez intuitive : Nous voulons que eth0 soit activée automatiquement et soit configurée par DHCP.
Après un démarrage de notre Lenny, voyons où nous en sommes. Il existe plusieurs façons de récolter les informations :
Méthode traditionnelle :
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:16:36:51:5d:5a
inet adr:192.168.0.67 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: 2a01:e35:2e52:9840:216:36ff:fe51:5d5a/64 Scope:Global
adr inet6: fe80::216:36ff:fe51:5d5a/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:134 errors:0 dropped:0 overruns:0 frame:0
TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:18211 (17.7 KiB) TX bytes:9947 (9.7 KiB)
Interruption:10 Adresse de base:0xc100
Plus moderne :
# ip addr ls dev eth0 2: eth0:mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:16:36:51:5d:5a brd ff:ff:ff:ff:ff:ff inet 192.168.0.67/24 brd 192.168.0.255 scope global eth0 inet6 2a01:e35:2e52:9840:216:36ff:fe51:5d5a/64 scope global dynamic valid_lft 86174sec preferred_lft 86174sec inet6 fe80::216:36ff:fe51:5d5a/64 scope link valid_lft forever preferred_lft forever
Si nous voulons vraiment savoir ce qu'il s'est passé au niveau DHCP, il suffit de consulter les logs du client dhcp3-client
qui se trouvent sur Debian dans /var/lib/dhcp3/dhclient.eth0.leases
:
# cat /var/lib/dhcp3/dhclient.eth0.leases lease { interface "eth0"; fixed-address 192.168.0.67; option subnet-mask 255.255.255.0; option routers 192.168.0.252; option dhcp-lease-time 3600; option dhcp-message-type 5; option domain-name-servers 192.168.0.252; option dhcp-server-identifier 192.168.0.252; option netbios-name-servers 192.168.0.252; option domain-name "maison.mrs"; renew 5 2009/05/08 08:38:00; rebind 5 2009/05/08 09:05:37; expire 5 2009/05/08 09:13:07; }Nous avons ici toutes les informations transmises. Notre système est « neuf », c'est la première fois que l'interface est configurée. Comme nous sommes curieux, nous avons mis en place un « sniffeur » (l'indispensable Wireshark), qui a capturé le dialogue, mais nous verrons ça plus tard.
Les heures sont indiquées en UTC.
La machine cliente a été démarrée à 8h 12 UTC. Nous pouvons prendre une petite récréation. Rendez-vous vers 8h 38 UTC.
lease {
interface "eth0";
fixed-address 192.168.0.67;
option subnet-mask 255.255.255.0;
option routers 192.168.0.252;
option dhcp-lease-time 3600;
option dhcp-message-type 5;
option domain-name-servers 192.168.0.252;
option dhcp-server-identifier 192.168.0.252;
option netbios-name-servers 192.168.0.252;
option domain-name "maison.mrs";
renew 5 2009/05/08 08:38:00;
rebind 5 2009/05/08 09:05:37;
expire 5 2009/05/08 09:13:07;
}
lease {
interface "eth0";
fixed-address 192.168.0.67;
option subnet-mask 255.255.255.0;
option routers 192.168.0.252;
option dhcp-lease-time 3600;
option dhcp-message-type 5;
option domain-name-servers 192.168.0.252;
option dhcp-server-identifier 192.168.0.252;
option netbios-name-servers 192.168.0.252;
option domain-name "maison.mrs";
renew 5 2009/05/08 09:05:03;
rebind 5 2009/05/08 09:30:30;
expire 5 2009/05/08 09:38:00;
}
Notre client DHCP a demandé un renouvèlement de son bail. Il le refera à 9h 05 UTC etc.
Notre Wireshark n'a rien perdu de tout ceci, nous pouvons aller y voir de plus près.