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. Les fichiers
/usr/src/sys/conf/NOTES
et
/usr/src/sys/
vous donneront
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.arch
/conf/NOTES
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:
Dans cet exemple, nous voyons que deux cartes utilisant le pilote de périphérique dc(4) sont présentes sur le système.
Si le pilote de votre carte n'est pas présent dans
le noyau GENERIC
, vous devrez charger le
module approprié pour pouvoir utiliser votre carte. Cela
peut être effectué de deux manières
différentes:
La méthode la plus simple est de charger le
module pour votre carte réseau avec
kldload(8), ou automatiquement au démarrage du
système en ajoutant la ligne appropriée au
fichier /boot/loader.conf
. Tous les
pilotes de cartes réseau ne sont pas disponibles
sous forme de modules; les cartes ISA sont un bon exemple
de périphériques pour lesquels les modules
n'existent pas.
Alternativement, vous pouvez compiler en statique
le support pour votre carte dans votre noyau. Consultez
/usr/src/sys/conf/NOTES
,
/usr/src/sys/
et la page de manuel du pilote de
périphérique pour savoir ce qu'il faut
ajouter au fichier de configuration de votre noyau. Pour
plus d'information sur la recompilation de votre noyau,
veuillez lire le Chapitre 8, Configurer le noyau de FreeBSD. Si votre
carte a été détectée au
démarrage par votre noyau
(arch
/conf/NOTESGENERIC
) vous n'avez pas à
compiler un nouveau noyau.
Malheureusement il y a toujours de nombreux fabricants qui ne fournissent pas à la communauté des logiciels libres les informations concernant les pilotes pour leurs cartes considérant de telles informations comme des secrets industriels. Par conséquent, il ne reste aux développeurs de FreeBSD et d'autres systèmes d'exploitation libres que deux choix: développer les pilotes en passant par un long et pénible processus de « reverse engineering » ou utiliser les pilotes binaires existants disponibles pour la plateforme Microsoft® Windows®. La plupart des développeurs, y compris ceux impliqués dans FreeBSD, ont choisi cette dernière approche.
Grâce aux contributions de Bill Paul (wpaul), depuis FreeBSD 5.3-RELEASE, il existe un support « natif » pour la spécification d'interface des pilotes de périphérique réseau (Network Driver Interface Specification—NDIS). Le NDISulator FreeBSD (connu également sous le nom de Project Evil) prend un pilote binaire réseau Windows® et lui fait penser qu'il est en train de tourner sous Windows®. Etant donné que le pilote ndis(4) utilise un binaire Windows®, il n'est utilisable que sur les systèmes i386™ et amd64.
Le pilote ndis(4) est conçu pour supporter principalement les périphériques PCI, CardBus et PCMCIA, les périphériques USB ne sont pas encore supportés.
Pour utiliser le NDISulator, vous avez besoin de trois choses:
les sources du noyau;
le pilote binaire Windows® XP (extension
.SYS
);
le fichier de configuration du pilote Windows® XP
(extension .INF
).
Recherchez les fichiers spécifiques à
votre carte. Généralement, ils peuvent
être trouvés sur les CDs livrés avec la
carte ou sur le site du fabricant. Dans les exemples qui
suivent nous utiliseront les fichiers
W32DRIVER.SYS
et
W32DRIVER.INF
.
Vous ne pouvez pas utiliser un pilote Windows®/i386 avec FreeBSD/amd64, vous devez récupérer un pilote Windows®/amd64 pour que cela fonctionne correctement.
L'étape suivante est de compiler le pilote
binaire dans un module chargeable du noyau. Pour effectuer
cela, en tant que root
, utilisez
ndisgen(8):
#
ndisgen /path/to/W32DRIVER.INF
/path/to/W32DRIVER.SYS
L'utilitaire ndisgen(8) est interactif et vous sollicitera pour d'éventuelles informations complémentaires si nécessaire; il produira un module noyau dans le répertoire courant qui pourra être chargé de cette manière:
#
kldload ./W32DRIVER.ko
Avec le module généré, vous devez également charger les
modules ndis.ko
et
if_ndis.ko
. Cela devrait être fait
automatiquement quand vous chargez un module qui dépend de
ndis(4). Si vous désirez les charger manuellement,
utilisez les commandes suivantes:
#
kldload ndis
#
kldload if_ndis
La première commande charge le pilote d'interface NDIS, la seconde charge l'interface réseau.
Contrôlez maintenant la sortie de dmesg(8) à la recherche d'une quelconque erreur au chargement. Si tout s'est bien passé, vous devriez obtenir une sortie ressemblant à ce qui suit:
A partir de là vous pouvez traiter le
périphérique ndis0
comme n'importe quelle interface réseau (par exemple
dc0
).
Vous pouvez configurer le système pour charger
les modules NDIS au démarrage du système de la
même manière que pour n'importe quel autre
module. Tout d'abord, copiez le module
généré,
W32DRIVER.ko
, dans le répertoire
/boot/modules
.
Ajoutez ensuite la ligne suivante au fichier
/boot/loader.conf
:
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 1500D'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 à:
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:
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 msNous 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 msVous pourrez utiliser le noms de la machine à
la place de 192.168.1.2
si vous avez configuré le fichier
/etc/hosts
.
Le dépannage de matériels ou de logiciels est toujours une tâche relativement pénible, mais qui peut être rendue plus aisée en vérifiant en premier lieu certaines choses élémentaires. Votre câble réseau est-il branché? Avez-vous correctement configuré les services réseau? Le coupe-feu est-il bien configuré? Est-ce que la carte réseau est supportée par FreeBSD? Consultez toujours les notes concernant le matériel avant d'envoyer un rapport de bogue. Mettez à jour votre version de FreeBSD vers la dernière version STABLE. Consultez les archives des listes de diffusion, et faites même des recherches sur l'Internet.
Si la carte fonctionne mais les performances sont mauvaises, une lecture de la page de manuel tuning(7) peut valoir la peine. Vous pouvez également vérifier la configuration du réseau puisque des paramètres réseau incorrects peuvent donner lieu à des connexions lentes.
Certains utilisateurs peuvent voir apparaître un ou deux messages device timeout, ce qui est normal pour certaines cartes. Si ces messages se multiplient, assurez-vous que la carte n'est pas en conflit avec un autre périphérique. Contrôlez à deux fois les câbles de connexion. Peut-être que vous avez juste besoin d'une autre carte.
Parfois, des utilisateurs sont confrontés à des messages d'erreur watchdog timeout. La première chose à faire dans ce cas est de vérifier votre câble réseau. De nombreuses cartes demandent un slot PCI supportant le « Bus Mastering ». Sur certaines cartes mère 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.
Les messages No route to host
surviennent si le système est incapable de router un
paquet vers la machine de destination. Cela peut arriver s'il
n'y a pas de route par défaut de définie, ou si
le câble réseau est débranché.
Vérifiez la sortie de la commande netstat
-nr
et assurez-vous qu'il y a une route valide en
direction de la machine que vous essayez d'atteindre. Si ce
n'est pas le cas, lisez la Chapitre 30, Administration réseau avancée.
Les messages d'erreur ping: sendto: Permission
denied sont souvent dus à un coupe-feu mal
configuré. Si ipfw
est
activé dans le noyau mais qu'aucune règle n'a
été définie, alors la politique par
défaut est de refuser tout trafic, même les
requêtes « ping »! Lisez Chapitre 29, Firewalls ** Traduction en Cours ** pour plus d'informations.
Parfois les performances de la carte ne sont pas bonnes,
ou en dessous de la moyenne. Dans ce cas il est
recommandé de passer la sélection du
média du mode autoselect
au mode
adéquat. Alors que cela fonctionne
généralement pour la plupart du matériel,
il se peut que cela ne résolve pas le problème
pour tout de monde. Encore une fois, contrôlez les
paramétrages réseau et consultez la page de
manuel tuning(7).
Ce document, ainsi que d'autres peut être téléchargé sur ftp://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>.