S'il est vrai que les utilitaires de gestion des connexions réseaux, tels network manager ou wicd, facilitent la connexion au réseau, il est bon de savoir aussi se connecter manuellement.
En effet, de tels utilitaires ne seront pas toujours à disposition. Vous pourriez aussi, pour une raison x ou y, ne pas vouloir les utiliser. Vous avez peut-être simplement envie de savoir comment on fait.
Le but de ce mini tutoriel est d'expliquer brièvement une procédure permettant de se connecter à son réseau en utilisant uniquement la ligne de commande.
Avant de commencer notre travail, on va rapidement nommer et expliquer le rôle des différentes commandes qu'on va utiliser tout le long de ce tutoriel.
ifconfig
Cette commande permet de configurer les paramètres d'une interface réseau. Cette commande est habituellement utilisée à l’installation afin d’assigner une adresse réseau aux interfaces présentes dans la machine. On peut également l’utiliser à tout moment pour redéfinir les paramètres, telle que l’adresse IP, par exemple, d’une interface.
On peut ainsi assigner une adresse IP à une interface et préciser des paramètres tels que le masque de sous réseau ou encore l'adresse de diffusion.
Cette commande permet également de visualiser le statut des interfaces actives (si utilisée sans aucun paramètre) et le statut de toutes les interfaces (si utilisée avec l'option -a)
où interface désigne l'interface à configurer, fam_adresses désigne le protocole à utiliser (vous voudrez sans doute utiliser TCP/IP, mettez dans ce cas inet).
Les options couramment utilisées sont les suivantes :
up : permet d'activer l'interface
down : permet de désactiver l'interface
ipAdress : permet d'assigner une adresse IP (à remplacer par l'adresse en question)
netmask addr : permet de définir un masque de sous réseau (remplacer addr par l'adresse en question)
broadcast addr : permet de préciser l'adresse de diffusion (remplacer addr par l'adresse en question)
Il en existe encore d'autres. Je vous renvoie à la lecture du manuel pour les connaître.
Iwconfig est calquée sur ifconfig. En conséquence, l'utilisation d'iwconfig est très semblable à ifconfig.
Elle est utilisée pour configurer les interfaces réseaux sans fil.
ping
Cette commande permet de tester la connectivité IP. On utilise très souvent cette commande pour tester si l'interface qu'on vient de configurer fonctionne bien, i.e. si la machine est bien connectée au réseau.
La commande permet aussi de tester la connectivité entre 2 machines. La commande envoit des paquets ICMP à l'ordinateur cible. Si celui ci répond, c'est qu'il existe une route entre les 2 machines. Vous pouvez voir ça comme le sonar d'un sous-marin.
L'utilisation de la commande est très simple
$ ping address
l'adresse peut-être écrite en toute lettre ou bien sous forme numérique. On peut préciser le nombre de paquets attendus via le paramètre -c suivi du nombre de paquet attendus.
En l'absence de cette précision, le flux de paquet reçu ne s'arrête jamais. On lui enverra alors un signal SIGINT via ctrl+c pour stopper la commande.
La commande ifconfig devrait lister au moins une interface réseau autre que lo (qui signifie loopback, cette interface est utilisée pour se connecter à sa propre machine), eth0 par exemple.
[renaud@renaud-laptop ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:17
Si vous obtenez un message d'erreur tel que
ifconfig eth0
eth0: error fetching interface information: Device not found
c'est que la carte réseau n'a pas été détectée (mais bon, ça ne devrait pas arriver).
Utilisation de DHCP
Si vous êtes connecté à un réseau Ethernet avec un serveur DHCP, il est fort probable qu'il n'y ait rien à faire.
Le DHCP (pour Dynamic Host Configuration Protocol) est, comme son nom l'indique, un protocole de configuration dynamique d'un hôte. Il sert à automatiser la récupération des informations réseaux (telles que l'adresse IP, le masque de réseau, l'adresse de diffusion, la passerelle, etc.).
Lancez donc la commande suivante
# dhcpcd eth0
La commande dhcpcd est une implémentation d'un client DHCP. Elle va aller collecter les informations depuis le serveur DHCP et va configurer l'interface réseau de la machine sur laquelle elle est exécutée.
Elle va ensuite exécuter un script de configuration qui va écrire l'information DNS dans le fichier /etc/resolv.conf
Si vous utilisez une telle méthode, tout devrait normalement fonctionner maintenant.
Utilisation de ifconfig et route
On va commencer par désactiver l'interface sur laquelle on va travailler, via la commande ifconfig.
# ifconfig eth0 inet down
La mise en place du réseau sans utilisation du serveur DHCP va se dérouler en 3 étapes.
On va assigner une adresse IP avec ifconfig
On va configurer le routage vers la passerelle avec route
On va renseigner les adresses des DNS dans le fichier /etc/resolv.conf
où ${IP_ADDR} désigne votre adresse IP, ${BROADCAST} votre adresse de diffusion et ${NETMASK} le masque de sous réseau.
Ensuite, on va mettre le routage en place.
# route add default gw ${GATEWAY}
Enfin, on va renseigner les adresses des DNS. Ouvrez le fichier /etc/resolv.conf avec votre éditeur favori. Vous pourriez être tenté d'utiliser OpenDNS qui fournit d'excellents serveurs DNS.
Ajoutez-y les lignes suivantes, si vous utilisez OpenDNS (et sinon, les DNS primaires et secondaires que vous utiliserez).
Avant de pouvoir configurer une interface, il faut s'assurer que le pilote de périphérique associé soit bien chargé en mémoire.
Parfois, le module a été compilé en dur dans le noyau, parfois il faut que le module soit chargé au boot. L'avantage de la seconde méthode est qu'on peut décharger/charger le module à tout instant via la commande modprobe.
S'il est vrai que beaucoup de progrès ont été faits dans la reconnaissance du matériel, il n'en demeure pas moins que certaines cartes ne sont pas nativement reconnues (c'était le cas de la mienne) par certaines distributions.
La première étape sera donc de s'assurer que les pilotes sont bien chargés en mémoire, sous forme de modules. Si ce n'est pas le cas, on les récupérera et on les chargera ensuite en mémoire. S'ils sont déjà chargés, le reste de cette section ne vous concerne pas.
Comment savoir s'ils sont bien chargés ?
On peut par exemple regarder quels sont les modules chargés en mémoire avec lsmod. Chez moi, ça donne (n'oubliez pas de remplacer iwl3945 par votre pilote)
Si les résultats sont similaires chez vous, c'est que le module est bien chargé. Si par contre, vous n'obtenez rien, c'est qu'il ne l'est pas.
D'accord, mais iwl3945 ne me conviendra sûrement pas, comment puis-je alors savoir si mon pilote est chargé en tant que module ?
Il faut connaître le nom du module que vôtre contrôleur de réseau utilise. Si vous ne le connaissez pas, la sous-section suivante explique comment faire.
Quel(s) pilote(s) utiliser ?
Il existe des outils bien utiles qui permettent de connaître le type de matériel dont on dispose. Il faut savoir que chaque composant est relié à un bus de type PCI, USB, ISA.
On va utiliser les commandes lspci, lsusb, lspcmcia dont les noms sont assez évocateurs je pense.
Ils listent tous les composants connectés aux bus USB, PCI, ISA. Votre contrôleur de réseau est nécessairement connecté à un de ces bus.
Si pour quelque raison que ce soit vous ne disposez pas de ces commandes, installez les paquets : pciutils, usbutils, pcmciautils. On aura par exemple, sous Debian :
On remarque ici un contrôleur de marque Intel intégré à la carte mère.
Une petite recherche sur l'Internet, en particulier sur la documentation officielle de votre distribution, vous apprendra quel paquet installer, suivant le matériel dont vous disposez.
Maintenant qu'on a récupéré le bon pilote, il suffit de le charger en mémoire.
# modprobe votre_pilote
On est sûr maintenant que le module est bien chargé ?
À priori oui, mais pour en être certain, il faudra reproduire la procédure détaillée en début de section.
Voila, à ce stade ci, le pilote de votre contrôleur réseau devrait être correctement chargé sous forme de module, votre interface réseau sans fil devrait être correctement gérée et prête à être configurée.
On va d'abord récupérer le paquet wireless-tools qui contient les utilitaires nécessaires à la connexion via le wifi. On profitera aussi pour récupérer le paquet wpa-supplicant, bien utile pour se connecter à un réseau sécurisé au moyen du WPA.
Ainsi, sous Debian on fera
# aptitude install wireless-tools wpa-supplicant
On est maintenant certain de disposer des outils nécessaires. On va pouvoir lister les interfaces réseaux sans fil disponibles. Pour cela
[renaud@renaud-laptop ~]$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11abg ESSID:"xxxxx"
Mode:Managed Frequency:2.437 GHz Access Point: yy:yy:yy:yy:yy:yy
Bit Rate=36 Mb/s Tx-Power=15 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=49/70 Signal level=-61 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Comme vous pouvez le voir, tout va bien ici. Il n'y a que wlan0 qui soit une interface wifi (selon les machines, elle s'appelle parfois eth1, eth2, ra0, ath0).
Connexion sécurisée au moyen du WEP
C'est très simple dans ce cas ci. Il suffit de modifier le fichier /etc/network/interfaces avec les privilèges root.
Par sécurité, certains d'entre vous voudront copier leur ancien fichier avant de le modifier, juste au cas où.
On inversera les opérandes de la commande cp pour restaurer le fichier d'origine.
Maintenant qu'on est sûr de pouvoir le retrouver, ouvrez donc ce fichier avec votre éditeur de préféré, vim par exemple
# vim /etc/network/interfaces
Ne modifiez que la section relative à votre interface réseau (wlan0 dans l'exemple) et ne touchez pas au reste.
auto wlan0
iface wlan0 inet dhcp
wireless-essid nomDuReseau
wireless-key motDePasseDuReseau
Voila, il ne vous reste plus qu'à vous connecter au point d'accès désormais.
Connexion sécurisée au moyen du WPA
La procédure est à peine plus compliquée que pour le WEP. À nouveau, il faut modifier le fichier /etc/network/interfaces, que vous aurez pris la peine de sauvegarder, comme expliqué précédemment.
Cette fois, on va de nouveau modifier le paragraphe correspond à votre interface réseau (wlan0 dans cet exemple).
On y mettra les lignes suivantes
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
On va maintenant modifier le fichier wpa_supplicant.conf. On y mettra cela
Il ne reste plus qu'une chose à faire, se connecter au point d'accès.
Connexion au point d'accès
Pour se connecter, il suffit d'executer les commandes suivantes, qui vont connecter votre interface
# ifconfig wlan0 up
# dhcpcd wlan0
Histoire d'être sûr qu'on a bien reçu les routes et les DNS, on va examiner le fichier /etc/resolv.conf et examiner les routes. Vous devriez avoir quelque chose comme
[renaud@renaud-laptop ~]$ cat /etc/resolv.conf
# Generated by dhcpcd from wlan0
# /etc/resolv.conf.head can replace this line
nameserver 192.168.1.1
# /etc/resolv.conf.tail can replace this line
[renaud@renaud-laptop ~]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
0.0.0.0 192.168.1.1 0.0.0.0 UG 303 0 0 wlan0
On peut aussi voir si on arrive à joindre google (par exemple) via
$ ping -c4 www.google.com
On devrait avoir ce genre de résultat
[renaud@renaud-laptop ~]$ ping -c4 www.google.com
PING www.l.google.com (74.125.77.104) 56(84) bytes of data.
64 bytes from www.google.com (74.125.77.104): icmp_seq=1 ttl=52 time=702 ms
64 bytes from www.google.com (74.125.77.104): icmp_seq=2 ttl=52 time=605 ms
64 bytes from www.google.com (74.125.77.104): icmp_seq=3 ttl=52 time=572 ms
64 bytes from www.google.com (74.125.77.104): icmp_seq=4 ttl=52 time=584 ms
--- www.l.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 572.691/616.251/702.683/51.255 ms
Tout devrait être ok désormais.
Désormais, vous devriez pouvoir faire face à l'absence d'utilitaires de gestion des connexions réseaux.