L'objectif ici est de pouvoir relier la machine au réseau local, et de la rendre capable de communiquer avec le reste du monde.
On suppose qu'il s'agit d'une carte Ethernet
Ça ne serait pas très différent avec des cartes Token Ring ou autres, mais inutile de compliquer les explications.
Pour savoir si votre carte est déjà reconnue par le noyau, tentez ceci:
# ifconfig eth0
Si elle n'est pas reconnue, vous aurez le message
"Périphérique non trouvé"
qui signifie que
la carte n'est pas encore reconnue par le noyau qui a été
lancé au démarrage, ni par les pilotes de cartes réseau
qui ont éventuellement été lancés par la suite. Maintenant,
que faire ?
Première étape, identifier le type de carte réseau, en regardant la boite, ou sur la carte elle-même. A tout hasard, lancez la commande
# lspci
ou
# cat /proc/pci
qui vous dira ce que le noyau pense des cartes (et autres dispositifs)
PCI présents dans l'ordinateur. Normalement - si c'est une carte PCI
- vous devriez trouver une ligne qui parle d'Ethernet. Notez-la.
Seconde étape, cherchez un pilote pour la carte réseau parmi les modules
disponibles. Les pilotes se trouvent dans /lib/modules/xx.yy.zz/net
,
où xx.yy.zz
est la version du noyau, que vous pouvez déterminer par
la commande uname -r
.
Voila la liste des modules d'un système typique :
$ ls /lib/modules/$(uname -r)/net
3c501.o comx-hw-locomx.o hostess_sv11.o sb1000.o
3c503.o comx-hw-mixcom.o hp-plus.o sbni.o
3c505.o comx-proto-fr.o hp.o scc.o
3c507.o comx-proto-lapb.o hp100.o sdla.o
3c509.o comx-proto-ppp.o ibmtr.o sdladrv.o
3c515.o comx.o ipddp.o sealevel.o
3c523.o cops.o ircomm.o shaper.o
3c527.o cosa.o irda.o sis900.o
3c59x.o cs89x0.o irlan.o sk98lin.o
6pack.o de4x5.o lance.o sk_mca.o
8139too.o de600.o lanstreamer.o sktr.o
82596.o de620.o lne390.o slhc.o
8390.o depca.o ltpc.o slip.o
ac3200.o dgrs.o mkiss.o smc-mca.o
acenic.o dlci.o n2.o smc-ultra.o
arc-rimi.o dmascc.o ne.o smc-ultra32.o
arcnet.o dmfe.o ne2.o smc9194.o
arlan-proc.o dummy.o ne2k-pci.o soundmodem.o
arlan.o e2100.o ne3210.o starfire.o
at1700.o eepro.o ng_tulip.o strip.o
baycom_epp.o eepro100.o ni5010.o syncppp.o
baycom_par.o eexpress.o ni52.o tlan.o
baycom_ser_fdx.o epic100.o ni65.o tulip.o
baycom_ser_hdx.o eql.o old_tulip.o via-rhine.o
bonding.o es3210.o olympic.o wanpipe.o
bpqether.o eth16i.o pc300.o wanxl.o
bsd_comp.o ethertap.o pcnet32.o wavelan.o
c101.o ewrk3.o plip.o wd.o
com20020.o fmv18x.o ppp.o x25_asy.o
com90io.o hamachi.o ppp_deflate.o yam.o
com90xx.o hdlc.o rcpci.o yellowfin.o
comx-hw-comx.o hdlcdrv.o rtl8139.o z85230.o
Si vous trouvez votre bonheur dans la liste (par exemple via-rhine.o
),
il ne vous reste plus qu'à charger le module, par
# modprobe via-rhine
Si ça s'est bien passé, il n'y a pas de message à la console, et en
faisant ifconfig eth0
vous devez voir des informations à
propos de la carte. Si ça ne marche pas, voyez ce qu'a dit la commande
dmesg
à propos du chargement du module. Eventuellement essayez
d'autre modules.
À tout hasard, une ``méthode de sauvage'' pour essayer de déterminer le module qui va convenir :
# cd /lib/modules/$(uname -r)/net # for m in *.o ; do modprobe $(basename $m .o) ; doneet ensuite regarder ce qu'en dit
dmesg
, consulter la liste
des modules chargés (lsmod
), ...
Ensuite, il ne reste plus qu'à demander le chargement du module à chaque démarrage : selon les distributions de linux, vous pourrez
/etc/rc.d/rc.modules
(distribution SlackWare),/etc/modules
(Debian)/etc/modules.conf
(...)Remarques :
bonding
, dummy
, ppp
,
slip
...
# modprobe 3c509 io=0x300 irq=10
Et pour Plug'n'Play
heureusement en voie de disparition, c'est pire.
On suppose qu'on veut donner l'adresse 10.11.12.13
à notre machine, sachant que les autres machine du réseau local
portent des numéros commençant par 10.11.12
, et que la
passerelle de sortie est 10.11.12.254
.
La commande ifconfig
permet de configurer l'interface réseau.
# ifconfig eth0 10.11.12.13 netmask 255.255.255.0 up
Si un ``ping 10.11.12.254
'' répond, tout va bien.
Un ``ping 10.11.12.13
'' qui répond n'est pas vraiment
significatif. Dans ce cas la couche réseau de notre machine n'a absolument pas
besoin de faire appel à la couche physique pour communiquer avec elle-même.
Par contre si ça ne répond pas, c'est révélateur d'un problème (adresse
mal configurée, pas de support réseau dans noyau, ...)
Sinon
ifconfig
''10.11.12.254
est-elle vraiment en fonctionnement ? Branchée sur le même réseau ?
# route add default gw 10.11.12.254
Normalement, la machine peut maintenant communiquer avec le reste
du monde.
En cas de doute, on peut consulter la route par route -n
ou
netstat -rn
.
Pour survivre au redémarrage, la configuration doit être enregistrée dans des fichiers qui dépendent - comme d'habitude - de la distribution
/etc/rc.d/rc.inet1
contient
les commandes ifconfig
, route
, etc. On peut reconfigurer
ce fichier par l'utilitaire netconfig
.network/interfaces
contient les paramètres
des différentes interfaces. Extrait :
iface eth0 inet static
address 10.11.12.13
netmask 255.255.255.0
broadcast 10.11.12.255
gateway 10.11.12.254
Facile à configurer : il faut placer le numéro IP du serveur de noms
dans le fichier /etc/resolv.conf
, qui ressemble à ceci :
search stage.org
nameserver 10.11.12.1
La directive search
indique un domaine par défaut, ce qui
permet d'abréger un nom complet comme pc112.stage.org
en pc112
.