De nos jours il est impossible de penser à un ordinateur sans penser connexion à un réseau. Installer et configurer une carte réseau est une tâche classique pour tout administrateur FreeBSD.
Avant de commencer, vous devez connaître le modèle de la carte dont vous disposez, le circuit qu'elle utilise, et si c'est une carte PCI ou ISA. FreeBSD supporte une large variété de cartes PCI et ISA. Consultez la liste de compatibilité matérielle pour votre version de FreeBSD afin de voir si votre carte est supportée.
Une fois que vous êtes sûrs que votre carte est supportée, vous devez déterminer le bon pilote de périphérique pour la carte. Le fichier /usr/src/sys/i386/conf/LINT vous donnera la liste des pilotes de périphériques pour cartes réseaux avec des informations sur les cartes/circuits supportés. Si vous avez des doutes au sujet du bon pilote, lisez la page de manuel du pilote. La page de manuel vous donnera plus d'information sur le matériel supporté et même les éventuels problèmes qui pourront apparaître.
Si vous possédez une carte courante, la plupart du temps vous n'aurez pas à chercher trop loin pour trouver un pilote. Les pilotes pour les cartes réseaux courantes sont présents dans le noyau GENERIC, aussi votre carte devrait apparaître au démarrage, comme suit:
dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 dc0: Ethernet address: 00:a0:cc:da:da:da miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 dc1: Ethernet address: 00:a0:cc:da:da:db miibus1: <MII bus> on dc1 ukphy1: <Generic IEEE 802.3u media interface> on miibus1 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
Dans cet exemple, nous voyons que deux cartes utilisant le pilote de périphérique dc(4) sont présentes sur le système.
Pour utiliser votre carte réseau, vous devrez charger le pilote de périphérique correct. Cela peut être accompli de deux façons. La plus simple est de charger le module pour votre carte réseau avec kldload(8). Un module n'est pas disponible pour toutes les cartes réseaux (les cartes ISA ou celles utilisant le pilote ed(4), par exemple). Alternativement, vous pouvez compiler en statique le support pour votre carte dans votre noyau. Consultez /usr/src/sys/i386/conf/LINT et la page de manuel du pilote de périphérique pour savoir ce qu'il faut ajouter à votre fichier de configuration de votre noyau. Pour plus d'information sur la recompilation de votre noyau, veuillez lire le Chapitre 9. Si votre carte a été détectée au démarrage par votre noyau (GENERIC) vous n'avez pas à compiler un nouveau noyau.
Une fois que le bon pilote de périphérique pour la carte réseau est chargé, la carte doit être configurée. Comme beaucoup d'autres choses, la carte aura pu être configurée à l'installation par sysinstall.
Pour afficher la configuration des interfaces réseaux de votre système, entrer la commande suivante:
% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
ether 00:a0:cc:da:da:db
media: Ethernet 10baseT/UTP
status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
Note : D'anciennes versions de FreeBSD pourront nécessiter l'option -a après ifconfig(8), pour plus de détails au sujet de la syntaxe d'ifconfig(8), veuillez vous référer à la page de manuel. Notez également que les entrées concernant l'IPv6 (inet6 etc...) ont été omises dans cet exemple.
Dans cet exemple, les périphériques suivants ont été affichés:
dc0: La première interface Ethernet
dc1: La seconde interface Ethernet
lp0: L'interface du port parallèle
lo0: L'interface ``en boucle'' (``loopback'')
tun0: L'interface ``tunnel'' utilisée par ppp
FreeBSD utilise le nom du pilote de périphérique suivi par un chiffre représentant l'ordre dans lequel la carte est détectée au démarrage du noyau pour nommer la carte. Par exemple sis2 serait la troisième carte sur le système utilisant le pilote de périphérique sis(4).
Dans cet exemple, le périphérique dc0 est actif et en fonctionnement. Les indicateurs importants sont:
UP signifie que la carte est configurée et prête.
La carte possède une adresse Internet (inet) (dans ce cas-ci 192.168.1.3).
Elle a un masque de sous-réseau valide (netmask; 0xffffff00 est équivalent à 255.255.255.0).
Elle a une adresse de diffusion valide (dans ce cas-ci 192.168.1.255).
L'adresse MAC de la carte (ether) est 00:a0:cc:da:da:da
La sélection du média est sur le mode d'autosélection (media: Ethernet autoselect (100baseTX <full-duplex>)). Nous voyons que dc1 a été configurée pour utiliser un matériel de type 10baseT/UTP. Pour plus d'information sur le type de matériel disponible pour un pilote de périphérique, référez-vous à sa page de manuel.
La liaison (status) est active, i.e. la porteuse est détectée. Pour dc1, nous lisons status: no carrier. Cela est normal lorsqu'aucun câble n'est branché à la carte.
Si le résultat de la commande ifconfig(8) est similaire à:
dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:a0:cc:da:da:da
cela indiquerait que la carte n'a pas été configurée.
Pour configurer votre carte, vous avez besoin des privilèges de l'utilisateur root. La configuration de la carte réseau peut être faite à partir de la ligne de commande avec ifconfig(8) mais vous aurez à répéter cette opération à chaque redémarrage du système. Le fichier /etc/rc.conf est l'endroit où ajouter la configuration de la carte réseau.
Ouvrez le fichier /etc/rc.conf dans votre éditeur favori. Vous devez ajouter une ligne pour chaque carte réseau présente sur le système, par exemple dans notre cas, nous avons ajouté ces lignes:
ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"
Vous devez remplacer dc0, dc1, et ainsi de suite, avec le périphérique correspondant pour vos cartes, et les adresses avec celles désirées. Vous devriez lire les pages de manuel du pilote de périphérique et d'ifconfig(8) pour plus de détails sur les options autorisées et également la page de manuel de rc.conf(5) pour plus d'information sur la syntaxe de /etc/rc.conf.
Si vous avez configuré le réseau à l'installation, des lignes concernant la/les carte(s) réseau pourront être déjà présentes. Contrôler à deux fois le fichier /etc/rc.conf avant d'y ajouter des lignes.
Vous devrez également éditer le fichier /etc/hosts pour ajouter les noms et les adresses IP des diverses machines du réseau local, si elles ne sont pas déjà présentes. Pour plus d'information référez-vous à la page de manuel hosts(5) et au fichier /usr/share/examples/etc/hosts.
Une fois les modifications nécessaires du fichier /etc/rc.conf effectuées, vous devrez redémarrer votre système. Cela permettra la prise en compte de la ou les modifications au niveau des interfaces, et permettra de vérifier que le système redémarre sans erreur de configuration.
Une fois que le système a été redémarré, vous devrez tester les interfaces réseau.
Pour vérifier qu'une carte Ethernet est configurée correctement, vous devez essayer deux choses. Premièrement, ``pinguer'' l'interface, puis une autre machine sur le réseau local.
Tout d'abord testons l'interface:
% ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms
Nous devons maintenant ``pinguer'' une autre machine sur le réseau:
% ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms
Vous pourrez utiliser le noms de la machine à la place de 192.168.1.2 si vous avez configuré le fichier /etc/hosts.
6.8.3.2.1. Où puis-je trouver de l'information au sujet des possibles problèmes que je peux rencontrer avec ma carte réseau.
La page de manuel du pilote de périphérique est la première documentation à lire. Les archives des listes de diffusion peuvent également être utiles.
6.8.3.2.2. Quand j'essaye un ``ping'' vers une machine du réseau, j'obtiens le message suivant: ``ping: sendto: Permission denied''.
Cela signifie que vous n'avez pas la permission d'envoyer des paquets ICMP. Contrôlez si un coupe-feu tourne sur la machine et s'il y a des règles bloquant l'ICMP.
6.8.3.2.3. Je vois beaucoup de messages ``watchdog timeout'' dans les fichiers de trace du système, et quand je tente un ``ping'' vers une autre machine sur le réseau local, j'obtiens ce message: ``ping: sendto: No route to host''.
La première chose à contrôler est votre câble réseau. De nombreuses cartes réseaux demandent un slot PCI supportant le ``Bus Mastering''. Sur certaines cartes mères anciennes, seul un slot PCI le permet (la plupart du temps le slot 0). Consultez la documentation de la carte réseau et de la carte mère pour déterminer si cela peut être à l'origine du problème.
6.8.3.2.4. Je vois beaucoup de messages ``device timeout'' dans les fichiers de trace du système, et ma carte réseau ne fonctionne pas.
Avoir un ou deux de ces messages est parfois normal avec certaines cartes. Cependant s'ils persistent et que le réseau n'est pas utilisable, assurez-vous que le câble réseau est branché et qu'il n'y a aucun conflit d'IRQ entre la carte réseau et un autre périphérique (ou périphériques) sur le système.
Il est difficile de répondre à cette question. Quelle est votre définition de ``mauvaises performances''? Revérifiez l'ensemble de votre configuration, lisez la page de manuel tuning(7), et essayez d'éviter les cartes réseaux bon marché. De nombreux utilisateurs ont remarqué que positionner la sélection du média dans le mode autoselect peut être à l'origine de mauvaises performances sur certains matériels.
Vous devriez éviter les cartes bon marché pour une utilisation sérieuse. Les cartes bon marché utilisent souvent des circuits bogués, et la plupart du temps ne peuvent fournir de bonnes performances. De nombreux utilisateurs de FreeBSD apprécient les cartes utilisant le circuit fxp(4), cependant, cela ne veut pas dire que les autres circuits sont mauvais.
| Précédent | Sommaire | Suivant |
| Utilisation du système rc sous FreeBSD 5.X | Niveau supérieur | Hôtes virtuels |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.