Quelques outils importants pour observer le fonctionnement de notre réseau
Avant de passer à l’étude pure de paquets réseau, présentons quelques outils utiles sur un réseau.
Pour connaître les paramètres de sa connection au réseau comme : notre adresse MAC, IP, masque de sous-réseau… il existe sous Windows la commande IPConfig. Notons que sur un système UNIX, la commande ifconfig produit un résultat similaire.
Voici un exemple de ce que la commande ‘ipconfig /all’ produit (le /all permet d’observer plus
de détails) :
Nous pouvons ainsi voire que le nom de notre machine de test est mattieu ; elle a une carte réseau Realtek PCI avec une adresse MAC valant 00-50-FC-1B-69-B9, une adresse IP statique (DHCP n’est pas activé) de 192.168.1.10 avec un masque de sous-réseau de 255.255.255.0.
Remarque : Notons que IPConfig permet aussi de configurer son adresse IP, et d’autres choses. Pour plus de renseignements, vous pouvez entrer ‘ipconfig / ?’.
Ping est une commande d’une importance capitale sur un réseau. En effet, elle permet de savoir si deux machines sont correctement connectées au niveau IP. On peut savoir si l’adressage est bon, et bien sur observer si les paquets sont correctement routés par nos infrastructures réseau. Elle possède beaucoup d’options, observable en entrant ‘ping / ?’ dans une ligne de commande Windows (la version UNIX de la commande se nomme également ping).
Dans un cas concret, nous utilisons ping pour savoir si une machine est correctement connectée à notre réseau au niveau IP, Ethernet, ainsi que physique, puisque ping est également utile pour savoir si des prises ou câbles réseau acheminent correctement les données (il faut remarquer que si un problème de la pile TCP/IP existe aux niveaux supérieurs à IP comme par exemple un problème au niveau de la couche transport TCP, ping ne permettra pas de le repérer).
Dans une utilisation courante, ping peut être un bon moyen pour savoir si une machine est présente sur un réseau.
Dans notre exemple, nous voulons savoir si notre
serveur, d’adresse 192.168.1.1 est connecté correctement :
Comme nous l’avons vu dans le cours théorique, ping est un envoi de paquet ICMP echo request, le serveur répond alors par un ICMP echo reply. Ici nous pouvons constater que le serveur est correctement connecté au réseau : tous les paquets transmis ont eu une réponse. Ping fournit également une indication sur le temps mis pour acheminer les paquets.
La commande arp permet de
consulter la table ARP d’une machine. Comme nous l’avons vu, la table ARP
contient les correspondances adresses IP/adresses MAC entre machines du même sous-réseau. Une entrée est ajoutée dans cette table après
une première communication entre deux machines, permettant ainsi de ne pas
avoir à redemander la correspondance, et ainsi d’éviter une surcharge du trafic
réseau. Ici après une communication avec notre serveur (comme par exemple après
un ping), nous pouvons consulter notre table ARP :
Nous pouvons constater que l’interface de notre serveur qui a comme adresse IP 192.168.1.1, a comme adresse MAC 00-80-C8-65-C9-62. Ici, l’entrée est dynamique, c'est-à-dire que la table est mise à jour automatiquement : contrairement à une entrée manuel, effectuée par un administrateur par exemple.
D. Trace Route
Lorsqu’un réseau comporte plusieurs sous-réseaux, ou est une interconnexion de réseaux comme
l’Internet, il peut être utile de voir comment sont acheminés nos paquets à
destination. C’est ce que permet la commande tracert
(trace route). Pour un administrateur en charge d’un grand réseau qui souhaite
optimiser les performances de son réseau, tracert est
d’une grande utilité pour savoir si des routes sont incorrectes, ou si on peut
les modifier pour gagner en performance. Voyons par exemple la route pour atteindre
le site Web www.openbsd.org, situé au
Canada :
La syntaxe de cette commande est : ‘tracert url’ ou ‘tracert @IP’. Tracert aurait tout aussi bien fonctionné si nous avions entrés : ‘tracert 129.128.5.191’. Nous voyons ici toute la « route » pour parvenir à la machine hébergeant le site Web. Notre communication avec la machine distante est située à 22 routeurs de nous. Nous pouvons également observer les temps entre chaque saut de routeur : informations très utiles pour les administrateurs. Notons que 3 colonnes de temps sont présentes : en effet, la commande tracert détermine trois fois la route, afin de nous donner plusieurs valeurs : évitant les erreurs.
Remarque : La manière utilisée par tracert pour compter le nombre de sauts est assez simple. En fait, tracert commence par faire un ping avec une valeur de TTL (Time To Live) dans l’en-tête IP de 1, sur la machine distante. Si nous recevons un paquet ICMP Echo Request, alors la machine est située sur le même segment que nous. Par contre, si nous sommes relayés, les routeurs vont décrémenter le TTL, (il aura comme valeur 0) et le jeter. Nous recevrons alors un paquet ICMP de type 11 : Time Exceed. Tracert va alors faire un ping de la machine distante avec un TTL de 2. S’il reçoit un ICMP Echo Request, nous sommes séparés par un routeur de la machine distante. Sinon, il reçoit un ICMP Time Exceed, puis revoie un ping avec un TTL de 3, etc. Jusqu’à avoir une réponse : ICMP Echo Request.
E. Telnet
Telnet est un protocole applicatif et un utilitaire crée à la base pour se connecter sur un terminal d’une machine distante, offrant ainsi aux utilisateurs la possibilité de se connecter à leur compte utilisateur pour travailler, ou aux administrateurs, pour effectuer des taches courantes d’administration. Il faut cependant noter que de nos jours, telnet ne doit être utilisé qu’avec de GRANDES précautions, car la connexion n’est pas cryptée. Comme expliqué au chapitre précédent, un utilisateur malintentionné sniffant le réseau peut obtenir des mots de passe, ou des données sensibles. Il est plus approprié aujourd’hui d’utiliser SSH, une sorte de « telnet optimisé » et crypté. Seulement, pour observer un trafic réseau simple et non crypté, telnet est suffisant (même si le principe reste le même pour SSH).
Sur notre serveur OpenBSD,
nous avons configurés le service telnet. Nous allons
voire grâce à celui-ci comment se connecter par telnet
à une machine distante :
La syntaxe de telnet
est simple, on entre ‘telnet @IP’. Après avoir entré
cette commande, nous pouvons recevoir une invite de connexion de la
sorte :
A ce prompt, nous entrons ensuite un nom d’utilisateur, puis un mot de passe.
Telnet se connecte évidemment par TCP à la machine distante. Les paramètres de connection de telnet seront confiés au protocole du même nom.