Aller au menu - Aller au contenu

Icône Comment se connecter manuellement au réseau

Avatar
Par Avatar ren0
Mise à jour : 21/07/2010
Difficulté : Facile Facile Durée d'étude : 1 heure
91 visites depuis 7 jours, classé 591/786
Bonjour à tous !

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.

Prise en main des outils

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)

La syntaxe de cette commande est la suivante

Code : Console
ifconfig interface [ fam_adresses ] options | adresse


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.

Voici un exemple d'utilisation

Code : Console
# ifconfig eth0 inet ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK}


iwconfig


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

Code : Console
$ 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.

Connexion filiaire

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.

Code : Console
[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

Code : Console
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.).

Pour pouvoir utiliser cette méthode, il faut disposer d'un serveur DHCP déjà actif et configuré, comme par exemple celui de votre fournisseur d'accès internet.

Lancez donc la commande suivante

Code : Console
# 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.

Code : Console
# 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
Vous devez donc disposer de votre adresse IP, l'adresse du masque de sous réseau, l'adresse de diffusion et l'adresse de votre passerelle.

On utilise ifconfig comme suit :

Code : Console
# ifconfig eth0 inet ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK}


où ${IP_ADDR} désigne votre adresse IP, ${BROADCAST} votre adresse de diffusion et ${NETMASK} le masque de sous réseau.

Si ${IP_ADDR} et ${NETMASK} sont renseignées, il devient optionnel de renseigner ${BROADCAST}, le calcul est alors en mesure d'être effectué automatiquement. En revanche, l'adresse IP et le masque de sous réseau sont obligatoires.

Ensuite, on va mettre le routage en place.

Code : Console
# 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).

Code : Console
nameserver 208.67.222.222
nameserver 208.67.220.220


À ce stade ci, il ne vous reste qu'à réactiver l'interface avec

Code : Console
# ifconfig eth0 inet up


Préparation à la connexion sans fil

Mon module est-il chargé ?


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)
Code : Console
[renaud@renaud-laptop ~]$ lsmod | grep iwl3945
iwl3945               155569  0 
iwlcore               163163  1 iwl3945
mac80211              182791  2 iwl3945,iwlcore
cfg80211              141568  3 iwl3945,iwlcore,mac80211


On peut aussi rester à l'écoute des messages du noyau, à l'aide de dmesg (enfin, de ceux qui nous interessent).

Code : Console
[renaud@renaud-laptop ~]$ dmesg | grep iwl3945
iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s
iwl3945: Copyright(c) 2003-2010 Intel Corporation
iwl3945 0000:06:00.0: enabling device (0000 -> 0002)
iwl3945 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
iwl3945 0000:06:00.0: setting latency timer to 64
iwl3945 0000:06:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels
iwl3945 0000:06:00.0: Detected Intel Wireless WiFi Link 3945ABG
iwl3945 0000:06:00.0: irq 29 for MSI/MSI-X
iwl3945 0000:06:00.0: firmware: requesting iwlwifi-3945-2.ucode
iwl3945 0000:06:00.0: loaded firmware version 15.32.2.9


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 :

Code : Console
# aptitude install pciutils usbutils pcmciautils


On va utiliser les commandes de la façon suivante

Code : Console
$ lspci -v | grep Network


dont le résultat donne chez moi

Code : Console
[renaud@renaud-laptop ~]$ lspci -v | grep Network
06:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
        Subsystem: Intel Corporation PRO/Wireless 3945ABG Network Connection

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.

Les 2 autres commandes s'utilisent exactement de la même façon.

Maintenant qu'on a récupéré le bon pilote, il suffit de le charger en mémoire.

Code : Console
# 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.

Connexion sans fil

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

Code : Console
# 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

Code : Console
[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ù.

Code : Console
cp /etc/network/interfaces /etc/network/interfaces.back


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

Code : Console
# vim /etc/network/interfaces


Ne modifiez que la section relative à votre interface réseau (wlan0 dans l'exemple) et ne touchez pas au reste.

Code : Console
auto wlan0
iface wlan0 inet dhcp
    wireless-essid nomDuReseau
    wireless-key motDePasseDuReseau

Soyez attentifs lors de la saisie du nom de votre réseau et du mot de passe associé, la casse est bien entendu à respecter.

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

Code : Console
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

Code : Console
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1

network={
    ssid=nomDuReseau
    scan_ssid=1
    proto=WPA
    key_mgmt=WPA-PSK
    psk=motDePasseDuReseau
    priority=5
}

À nouveau, faites attention à la casse.

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

Code : Console
# ifconfig wlan0 up
# dhcpcd wlan0


Rien ne vous empêche d'utiliser ifup wlan0 à la place, ça fera la même chose.

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

Code : Console
[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


Code : Console
[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

Code : Console
$ ping -c4 www.google.com


On devrait avoir ce genre de résultat

Code : Console
[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.

En espérant que ce tutoriel vous ait plu/aidé.

À bientôt !

Partager

12 commentaires pour "Comment se connecter manuellement au réseau"
Note moyenne : 3.53 / 4 (15 votes)
Pseudo Commentaire
Hors ligne Tortue Géniale # Posté le 27/08/2010 à 10:17:10
Avatar

Avis : Très bon

Tuto très utile et très bien expliqué/détaillé, merci!
Hors ligne paul161 # Posté le 30/08/2010 à 22:25:21
Cogito, ergo sum
Avatar

Ville : La rochefoucauld
Pays : France métropolitaine

Pas mal des explication là dessus, j'ai jamais compris comment on l'utilisait, perso je passe toujours par netcfg.

AMD Phenom II X6 1055T, ATi Radeon HD 6950 2 Go GDDR5, 4 Go DDR3-1600, carte mère ASRock 890GX Pro3
 
Hors ligne l.elharmoudi # Posté le 08/09/2010 à 16:04:01
Avatar

Tuto très intéressant merci pour cet effort
Hors ligne wikigineer # Posté le 18/09/2010 à 11:37:48
** WikiGineer **
Avatar

Études : ESIEE Engineering Paris

Bonjour !

c'est quoi l'adresse de diffusion ?

et comment la trouver ?

merci !

Image utilisateur
 
Hors ligne Vhann # Posté le 20/09/2010 à 15:41:02
VIM Has Anything u Need, Nerd
Avatar

@ren0: Pour wicd, je ne sais pas, mais j'imagine que oui. Question de ne pas me casser la tête, je désactive systématiquement tout gestionnaire/outil de réseau quel qu'il soit lorsque je bidouille avec ça (c.-à-d. je 'kill' dhcpcd, wpa_supplicant, etc. etc.).



@gamino: Comme il t'a été expliqué dans le sujet que tu as créé (http://www.siteduzero.com/forum-83-561097-p1-comment-trouver-une-adresse-de-diffusion-broadcast.html), l'adresse de diffusion est la dernière adresse du sous-réseau (tous les bits d'hôte à 1).

Ceci étant, je n'ai encore jamais eu à spécifier à ifconfig l'adresse de diffusion à utiliser (et pourtant j'utilise de vieilles versions de distributions GNU/Linux plutôt souvent).

En gros, 'ifconfig eth0 172.31.44.55 netmask 255.255.0.0' (exemple) fonctionne très bien chez moi.


Cordialement,
Vhann
 

Voir tous les commentaires