Carte ethernet sous Linux

par David Robert david@anrtt.inp-fc.fr


Linux, comme tout système Unix d'ailleurs, est très orienté réseau, c'est pour cela que de gros efforts sont effectués pour qu'un maximum de périphériques réseau soient supportés. Dans cet article, nous allons expliquer comment installer une carte ethernet sur un système Linux. De nombreuses cartes sont supportées, pour avoir une liste, consultez l' Ethernet-HOWTO. Je ne vais pas rentrer dans les détails sur le fonctionnement d'un réseau TCP/IP, pour cela je vous conseille d'assister à une conférence de l'association ou bien d'acheter un bon livre de 2000 pages :-). Dans le précédent numéro de go@elfix, nous vous avons expliqué comment configurer l'interface loopback. La configuration d'une carte ethernet sous linux est très proche.

Tout d'abord bien sùr, il faut que la carte soit reconnue par le noyau linux (au démarrage, vous devez avoir un message, par exemple pour une ne2000: eth0: NE2000 found at 0x320, using IRQ 10) si ce n'est pas le cas, c'est que soit votre noyau n'est pas compilé avec le bon driver ethernet, soit qu'elle n'a pas été détectée automatiquement. Dans le premier cas, vous devrez recompiler votre noyau avec les bonnes options:

Dans le deuxième cas, vous devrez probablement faire passer les informations de votre carte au noyau linux lors du démarrage: voici un exemple de paramètre à rajouter: ether=10,0x320,eth0. Ceci pour une carte ethernet ayant pour adresse 0x320 et pour IRQ 10. Cette ligne de paramètre peut être rajoutée - si vous utilisez Lilo - dans le fichier lilo.conf avec la ligne append="ether=10,0x320,eth0". Si vous utilisez Loadlin, il suffit de la rajouter sur la ligne de commande:

c:\loadlin\loadlin c:\vmlinuz root=/dev/hda3 ro ether=10,0x320,eth0

Une fois la carte reconnue par le noyau, de même que pour loopback, nous devons déclarer l'interface grâce à la commande ifconfig.

ifconfig eth0 192.168.69.1 netmask 255.255.255.0

Nous avons donc attribué l'adresse 192.168.69.1 à notre interface eth0. Le netmask est utilisé pour le routage. Le netmask que vous devez utiliser dépend bien sur de l'architecture de votre réseau. Par défaut, en fonction du premier octet de votre adresse IP:

1-127 255.0.0.0 (Classe A) 128-191 255.255.0.0 (Classe B) 192+ 255.255.255.0 (Classe C)

Mais nous n'allons pas rentrer dans les détails, ceci n'est pas un cours sur les réseaux TCP/IP.

Maintenant que votre interface est déclarée, il ne reste plus qu'à rajouter une entrée dans la table de routage du noyau:

route add -net 192.168.69.0

192.168.69.0 n'est pas l'adresse d'une machine, mais l'adresse du réseau que votre carte ethernet devra traiter. C'est pour cela que l'option -net a été rajoutée. Cela veut simplement dire que tout paquet en destination de l'adresse 192.168.69.x passera par l'interface eth0. Je pense que maintenant vous devez comprendre un petit peu mieux la notion de netmask: c'est elle qui défini le filtre des adresses qui doivent passer par une interface, prenons par exemple une interface configurée avec un netmask 255.255.0.0, le route sera ``route add net 128.123.0.0'' et là toute adresse qui correspondra à 128.123.x.x passera par cette interface, comme je vous l'ai dit, c'est du routage, cette notion de netmask est indispensable si votre réseau est divisé en plusieurs sous-réseaux. Le netmask permet de savoir à quel sous-réseau telle adresse appartient.

Bon, maintenant, vérifiez votre table de routage, elle doit ressembler à quelque chose comme ca:

#route -n Kernel routing table Destination Gateway Genmask Iface 192.168.69.0 * 255.255.255.0 eth0 127.0.0.0 * 255.0.0.0 lo

Comprenez bien la différence entre l'adresse d'une machine et l'adresse d'un réseau, par exemple, sur un petit réseau de deux machines, la machine A aura comme adresse 192.168.69.1, la machine B 192.168.69.2, toutes les deux rajouterons dans leur table de routage une route vers la même adresse de réseau: 192.168.69.0. La commande route attribuera automatiquement la route a l'interface eth0.

Vous pouvez utiliser des noms de réseaux: de la même façon que les noms de machines sont indiqués dans le fichier /etc/hosts, les noms des réseaux sont indiqués dans le fichier /etc/networks. Nous pourrons donc rajouter la ligne ``192.168.69.0 javelnet'' Ce qui permet de manipuler des noms plutôt que des adresses ip, c'est plus agréable et plus facile a retenir.

Voilà, votre carte réseau est reconnue et fonctionne !! vous allez pouvoir profiter des multiples services réseaux sous Linux dont nous parlerons au fur et à mesure des prochains numéros de go@elfix !