Linux : Les utilitaires Réseau

Sommaire

Configuration d'interface : commande ifconfig
Configuration au boot : ifup
Configuration du routage : route
Visualisation des adresses physiques (MAC) connues de la machine : arp
btenir des informations d'état : netstat
Tester la connectivité : ping
Tester le routage : traceroute
Commandes standards ou non

Configuration d'interface : commande ifconfig

    ifconfig [interface]
    ifconfig interface [aftype] options | adresse ...




Utilitaire principal. Permet d'assigner une adresse IP (par défaut) à une interface et de préciser des paramètres tels que le masque de sous-réseau.
Permet aussi de modifier l'adresse matérielle (adresse MAC) si les drivers et cartes réseau le permettent.

Permet enfin de visualiser les caractéristiques des interfaces configurées (sans option) ou de toutes les interfaces présentes(avec l'option -a).

ifconfig est utilisable pour d'autres protocoles que IP. Il permet de configurer des adresses IPV6 bien évidemment mais aussi des adresses IPX, X25 où AppleTalk (ddp).

L'affectation d'une adresse IPv4 (fonctionnement par défaut) configure généralement aussi un routage minimal. Par exemple si on affecte l'adresse 192.168.100.72 à l'interface eth0 la table de routage sera augmentée d'une route vers le réseau 192.168.100.0 via l'interface configurée eth0.

Exemples :

         ifconfig eth0 192.168.100.72
         ifconfig eth0 zoe



Dans le second exemple on donne un nom de machine au lieu du numéro IP. Il est alors nécessaire que ce numéro figure dans le fichier /etc/hosts sur une ligne de la manière suivante :

         192.168.100.72 zoe



Il est possible d'inhiber une interface avec l'argument down et d'effectuer la remise en service avec l'argument up.

particularité IPv6 :

Dans ce mode il est inutile de préciser une adresse. La commande ifconfig eth0 up suffira. Le module noyau IPv6 affecte automatiquement une adresse "lien local" qui commence par fe80: et se termine par l'adresse MAC étendue sur 64 bits (par ajout au milieu de fffe et par inversion du second bit de poids faible du premier octet).
Si en outre il existe un routeur sur le réseau et que celui-ci soit configuré pour autoriser l'autoconfiguration des interfaces, alors une adresse de portée globale (une adresse officielle Internet IPv6) sera affectée à l'interface.
top

Configuration au boot : commande ifup

La commande ifup permet de configurer toutes les interfaces de la machine, y compris la boucle locale lo au moment du boot. En réalité il ne s'agit que d'une utilité permettant d'appeler l'incontournable ifconfig et cela pour toutes les interfaces à configurer.
ifup trouve les paramètres de configuration dans des fichiers spécifiques aux interfaces.
Sous Debian il s'agit du fichier /etc/sysconfig/network/interfaces.

Sous redhat ou Mandrake il s'agit de fichiers situés dans /etc/sysconfig/network-scripts et portant un nom commençant par ifcfg-.

Exemple (Mandrake), le fichier /etc/sysconfig/network-scripts/ifcfg-lo

   DEVICE=lo
   IPADDR=127.0.0.1
   NETMASK=255.0.0.0
   NETWORK=127.0.0.0
   # If you're having problems with gated making 127.0.0.0/8 a martian,
   # you can change this to something else (255.255.255.255, for example)
   BROADCAST=127.255.255.255
   ONBOOT=yes
   NAME=loopback



Nota Debian : dans cette distribution ifup peut s'utiliser avec l'option -a pour configurer toutes les interfaces en une seule opération.
top

Configuration du routage : commande route

       route [-CFvnee]
       route  [-v]  [-A  famille] add [-net|-host] cible [netmask
              Nm] [gw Gw] [metric N] [mss M] [window W] [irtt  I]
              [reject] [mod] [dyn] [reinstate] [[dev] If]
       route  [-v]  [-A  famille]  del [-net|-host] cible [gw Gw]
              [netmask Nm] [metric N] [[dev] If]
       route  [-V] [--version] [-h] [--help]
    

Cette commande permet de paramétrer le routage d'une machine (routage statique) et de visualiser la table de routage (sans options ou avec l'option -n).
Pour fixer une route normale (hors route par défaut) il est nécessaire de préciser le netmask associé soit avec l'option netmask soit en notation CIDR avec un "/" suivi par le nombre de bits du masque.

Exemples :

    route add -net 192.168.10.0 gw 192.168.100.1 netmask 255.255.255.0

ou

    route add -net 192.168.100.10/24 gw 192.168.100.1

Les deux exemples ci-dessus montrent deux manières légèrement différentes de créer une route vers un même réseau sur une même machine. La différence est dans la manière de préciser le netmask, explicitement dans le premier cas, en notation CIDR dans le second.

Route par défaut :

Exemple :

    route add default gw 192.168.100.1

si la "passerelle" par défaut est 192.168.100.1

Suppression d'une route : paramètre del

exemple :

    route del -net 192.168.100.10/24 gw 192.168.100.1


top

Visualisation des adresses physiques connues de la machine : commande arp

Cette commande permet de visualiser les adresses de niveau Ethernet connues de la machines et "résolues" par le protocole ARP. Toutes les adresses connues seront affichées avec l'option -a.

Rappel sur ARP

Lorsqu'une machine désire envoyer un paquet IP à une autre machine elle a besoin de connaître l'adresse de niveau 2 de cette machine de destination, son adresse Ethernet s'il s'agit de ce type de réseau. Il s'agit de l'adresse réseau local, ou encore adresse MAC (Medium Access Control dans la terminologie IEEE). Ce type d'adresse n'est généralement pas géré manuellement, les adresses sont affectées par les constructeurs des cartes interfaces.
La machine a donc besoin de construire un datagramme de type Ethernet et de placer dans le champ adresse de destination l'adresse Ethernet de la machine dessinatrice. Celle-ci sera obtenue grâce au protocole ARP (Adress Resolution Protocol)en envoyant une trame en broadcast sur le réseau contenant une requête demandant quelle est l'adresse Ethernet de la machine dont on fournit l'adresse IP dans la requête. Si une machine du réseau se reconnaît, cette dernière répond alors directement en indiquent son adresse MAC.
Cette adresse est stockée dans un cache pendant un petit moment (la résolution n'est pas faite pour chaque paquet IP émis). C'est ce cache que permet de visualiser la commande arp.
top

Obtenir des informations d'état : commande netstat

Avec la commande netstat il est possible d'obtenir de nombreuses informations sur "l'état réseau" de la machine. En particulier avec les options :


top

Noms de machines ou numéros IP ?

Les commandes comme route ou netstat -r sans autres arguments affichent la table de routage en tentant d'indiquer les noms de réseaux ou de machines et non les numéros correspondants. En fait ces commandes tentent une traduction nom/numéro via l'un des moyens possibles, à savoir : le fichier /etc/hosts, le service NIS ou le service DNS (selon le paramétrage indiqué dans /etc/nsswitch.conf).

Cette traduction peut parfois être longue et entraîner une lenteur désagréable pour l'utilisateur. Il est recommandé alors d'utiliser l'option -n de ces commandes pour interdire la traduction.
top

Tester la connectivité IP : la commande ping

Lorsqu'une interface est paramétrée sur une machine il convient de tout de suite tester la connectivité de la machine au réseau. Cela se fait avec la commande ping.
Cette commande permet aussi de tester l'accessibilité d'une autre machine n'importe où dans l'Internet, elle permet donc de tester le routage. Elle indique en outre les temps d'aller et retour des paquets IP entre la machine sur laquelle on lance la commande et la machine cible.
ping est la commande de base de l'administrateur réseau, le test premier. Lorsque ping permet d'atteindre une machine on peut être certain que la machine distante est en marche, que la machine locale est raccordée au réseau et que ce raccordement fonctionnne. On peut être certain aussi que le routage entre les deux machines est correct dans les deux sens. Une remarque sur ce dernier point : lorsqu'on met en pace un routage dans un réseau il est possible que les routes soient correctes dans un sens entre deux machines et pas dans l'autre sens. ping , dans ce cas nous indiquera simplement une non accessibilité.
top

Tester le routage : la commande traceroute

Cette commande permet de donner la liste des routeurs entre la machine sur laquelle on lance la commande et la machine cible. Pour chaque routeur traversé trois paquets de test sont envoyés et les trois temps d'aller et retour sont affichés.
L'option -n permet de ne pas faire les traductions adresses IP <-> nom de machine et permet un affichage plus rapide.
Certains routeurs détectent les paquets traceroute et n'y répondent pas. Certains pare-feux à l'entrée des réseaux d'entreprises filtrent aussi ces paquets (portant le protocole UDP pour un port destination ne correspondant pas à une application dans la machine destinatrice). Ce n'est donc pas un test infaillible, il peut cependant être très utile au sein des réseaux internes.
Par défaut la commande se termine à 30 routeurs traversés mais ce seuil est paramétrable.
top

Commandes standard ou non

Mis à part la commande traceroute toutes les commandes que nous avons énuméré ci dessus sont standard sous Unix, avec parfois quelques variantes d'option.

On peut même retrouver sous Windows les commandes route , ping , tracert (pour tracroute ).
top

Les fichiers importants sous Linux

/etc/hosts : contient une liste d'adresses IP et les noms associés à ces adresses. Permet de se passer de DNS

/etc/services : liste des services standards, leur protocole ainsi que leur numéro de port. En général on ne touche pas à ce fichier, on finit même par oublier son existence...

/etc/resolv.conf : contient les informations sur la résolution de noms et d'adresses IP (nom versus adresse) par le service DNS. Ce fichier peut être automatiquement mis à jour lorsque l'adresse IP est configurée via DHCP. Dans les cas d'affectation statique il faut le remplir à la main ou mieux via les interfaces graphiques de paramétrage des interfaces.

/etc/nsswitch.conf : ce fichier permet de contrôler comment on accède aux différents services de nommage pour les utilisateurs (les noms de login) mais aussi pour les services réseaux. La ligne importante de ce fichier est celle commençant par le mot clé « hosts », elle permet d'indiquer comment sont résolues les associations adresses/nom_machine puisqu'il y a au moins trois solutions : le fichier hosts local (sous /etc), le fichier hosts centralisable par le service NIS (il est alors sur un serveur distant) ou alors le DNS. Par exemple, la ligne :

hosts: files nis dns

indique que la résolution prendra en compte successivement les trois possibilités dans cet ordre. Il n'y a pas de problème si le service NIS n'est pas mis en œuvre alors qu'il est indiqué ici.

Sous Debian :

Debian standard, knoppix, etc...

/etc/network/interfaces : la liste des interfaces et leur paramétrage, par exemple

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp

/etc/modules : fichier dans lequel on indique le nom du module driver correspondant à la carte réseau

Sous Redhat, Mandrake

/etc/sysconfig/network : première liste de paramètres de configuration

/etc/sysconfig/network-scripts/ifcfg-eth0 (ou lo, eth1, eth2...) : liste des paramètres pour l'interface en question. Par exemple