Réseau, les bases.

Un article de Projet de documentation fug-fr .

Jump to: navigation, search

Traduction avec l'aimable autorisation de l'auteur, d'un article intitulé FreeBSD Networking Basics de Dru Lavigne, dans la série FreeBSD Basics sur le site BSDDevCenter d'ONLamp



Les débutants sur Unix, avec un système d'exploitation tel que FreeBSD, sont souvent déconcertés devant leurs configurations réseau. Ce qui est sûr, c'est que le processus d'installation en a déjà configuré une partie pour vous, mais où allez-vous visualiser ces configurations, et comment procèderez-vous si votre configuration cesse de fonctionner ? Puisque la gestion de réseau est partie intégrante de votre système, cet article expliquera comment vérifier, configurer, et optimiser vos configurations réseau.

Sommaire

[modifier] Vérifiez votre configuration d'interfaces:

Si vous provenez d'un fond perdu de chez Microsoft, vous avez probablement employé winipcfg ou ipconfig/all pour vérifier vos configurations réseau en ligne de commande. Unix vient avec un utilitaire semblable, nommé ifconfig (pour des configurations d'interfaces). En tapant cette commande, vous verrez toutes les configurations des interfaces système. Quelques versions exigeront l'option -a.

% ifconfig
rl0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
   options=8<VLAN_MTU>
   ether 00:05:5d:d2:19:b7
   media: Ethernet autoselect (10baseT/UTP)
   status: no carrier
rl1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
   options=8<VLAN_MTU>
   ether 00:05:5d:d1:ff:9d
   media: Ethernet autoselect (10baseT/UTP)
   status: no carrier
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
   inet 192.168.2.12 netmask 0xffffff00 broadcast 192.168.2.255
   ether 00:50:ba:de:36:33
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
   inet 127.0.0.1 netmask 0xff000000 

Votre sortie sera différente, mais contiendra des similitudes. Ce système particulier n'exécute pas le noyau par défaut. J'ai enlevé IPv6, gif, et les périphériques noyau, ainsi ils n'apparaissent pas dans la sortie.


Ce système a trois interfaces physiques (rl0, rl1, et ed0) et l'interface loopback (lo0). Les différentes versions d'Unix diffèrent dans les conventions de nommage de leurs interfaces. Par exemple, Linux utilise eth pour ethernet, ainsi montrerait-il des noms comme eth0, eth1, et eth2. BSD utilise le nom de périphérique pour chaque type, permettant de les différencier entre différents chipsets et pilotes disponibles. Pour voir la documentation du périphérique de votre interface, lisez la section 4 de sa page man. Notez que vous n'incluez pas le numéro de l'interface, ainsi recherchez rl au lieu de rl0:

% man 4 rl
rl -- RealTek 8129/8139 Fast Ethernet device driver
% man 4 ed
ed -- ethernet device driver

Tandis que ce système a trois interfaces, seule ed0 est en service. Les deux RealTek n'ont pas de câbles reliés, comme indiqué par status: no carrier. En conséquence, seule ed0 a une adresse IP (192.168.2.12), un masque de sous-réseau (0xffffff00), et une adresse d'émission (192.168.2.255). Le masque de sous-réseau est écrit en hexadécimal, comme indiqué par son début,0x. Concernant ce masque particulier, il n'est pas trop difficile de le traduire en décimal, si vous vous rappelez que chaque paire de F (FF) est équivalente à 255. Ainsi, le masque ici est 255.255.255.0. Si vous trouvez des nombres en hexa qui ne sont pas FF (255) ou 00 (0), utilisez bc ou la calculatrice intégrée pour traduire les nombres hexa en décimaux. Par exemple, si votre masque est 0xffffe000 :

% bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=16
E0
224
<Ctrl d>

Ici, j'ai demandé à bc de traduire un nombre entré en base 16 ou hexa (ibase=16) en nombre décimal. Rappelez-vous de convertir toutes les lettres en majuscules, ou vous n'obtiendrez pas la réponse correcte. Puisque e0 correspond au nombre décimal 224, ce masque d'exemple est 255.255.224.0.

[modifier] Vérifier votre route par défaut:

Notez que ifconfig donne le statut, le MTU, l'adresse IP, le masque de sous-réseau, l'adresse d'émission, et l'adresse ethernet (ou MAC) de chaque interface. Cependant, il ne donne pas l'adresse de la route par défaut, ou des serveurs DNS. Pour voir votre adresse de route par défaut, employez la commande netstat. Incluez l'option -r (routage). Ajouter l'option -n accélère les résultats, en ignorant la résolution de nom:

% netstat -rn
Routing tables
Internet:
Destination      Gateway          Flags    Refs    Use   Netif  Expire
default          192.168.2.100      UGS     0    72664    ed0
127.0.0.1        127.0.0.1          UH      1       46    lo0
192.168.2        link#3             UC      0        0    ed0
192.168.2.12     127.0.0.1          UGHS    0        0    lo0
192.168.2.100    00:48:54:1e:2c:76  UHLW    1        0    ed0   1172

Note: Les utilisateurs Linux peuvent également utiliser la commande route pour recevoir des résultats semblables. Les commandes BSD sont différentes ; voir dans man pour des détails. Cependant, netstat -rn travaille sur tous les systèmes d'exploitation, y compris les systèmes d'exploitation Linux et Microsoft.

Dans votre sortie, recherchez la ligne qui commence par le mot default. L'adresse IP associée est celle de votre route (Gateway) par défaut. Regardez en outre les indicateurs pour cette entrée. Si tout va bien, ils indiquent U pour up, et G pour la route par défaut. Ceci indique que vous pouvez communiquer avec votre Gateway. Si le nombre dans le domaine d'utilisation n'est pas 0, vous avez envoyé réellement à votre Gateway ce nombre de paquets.

En conclusion, la dernière ligne de cette sortie montre l'adresse MAC de la route par défaut.

[modifier] Vérification de vos configurations DNS:

Le fichier de configuration du résolveur devrait contenir vos configurations DNS. Vous pouvez visualiser ce fichier avec:

% more resolv.conf
nameserver 209.226.175.236
nameserver 204.101.251.1
nameserver 204.101.251.2

Ce système particulier contient les adresses IP de trois serveurs DNS. C'est une bonne idée d'avoir les adresses d'au moins deux serveurs, au cas où votre serveur primaire DNS deviendrait indisponible.
Comme vous avez l'accès Internet, vous devriez savoir questionner les serveurs DNS de votre ISP, et noter les résultats dans un mémo contenant vos configurations réseau. Ce sera de valeur inestimable, si jamais vous deviez recréer ces configurations manuellement. Si vous ne gardez pas un tel cahier, vous pouvez recueillir les configurations d'un système qui a un accès Internet fonctionnel.
Pour découvrir les adresses IP de vos serveurs DNS, employez dig, pour l'information des noms de domaines. Ici, je demande les entrées pour ns, ou name server, de mon ISP:

% dig ns sympatico.ca
. ; <<>> DiG 8.3 <<>> ns sympatico.ca 
. ;; res options: init recurs defnam dnsrch
. ;; got answer:
. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44589
. ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4
. ;; QUERY SECTION:
. ;;    sympatico.ca, type = NS, class = IN
. ;; ANSWER SECTION:
. sympatico.ca.         6h12m33s IN NS  ns5.bellnexxia.net.
. sympatico.ca.         6h12m33s IN NS  ns6.bellnexxia.net.
. sympatico.ca.         6h12m33s IN NS  dns1.sympatico.ca.
. sympatico.ca.         6h12m33s IN NS  dns2.sympatico.ca.
. ;; ADDITIONAL SECTION:
. ns5.bellnexxia.net.   9m36s IN A      209.226.175.236
. ns6.bellnexxia.net.   9m37s IN A      209.226.175.237
. dns1.sympatico.ca.    14m7s IN A      204.101.251.1
. dns2.sympatico.ca.    3m56s IN A      204.101.251.2
. ;; Total query time: 46 msec
. ;; FROM: dru.domain.org to SERVER: 209.226.175.236
. ;; WHEN: Sun Apr 11 14:30:14 2004
. ;; MSG SIZE  sent: 30  rcvd: 182

Votre sortie sera divisée en plusieurs sections. Maintenant, concentrez-vous sur ANSWER SECTION, qui contient la réponse à votre requête dig. Mon ISP utilise quatre serveurs DNS nommés, comme vu dans ma sortie. Chaque serveur nommé utilise un IN (IPv4) et un NS (name server). Cependant, la réponse montre les noms de serveurs nommés. Vous ne voulez pas utiliser des noms pour la résolution; vous voulez les adresses IP de vos serveurs.

Vous trouverez ces noms associés à des adresses IP dans ADDITIONAL SECTION. dig est également utile, si vous oubliez le nom ou l'adresse IP du smtp ou mail server de votre ISP. Cette fois, requête pour mx, ou Mail Exchange Record. Ici, je montre seulement ANSWER SECTION, pour la brièveté:

 % dig mx sympatico.ca
(snip)
;; ANSWER SECTION:
sympatico.ca.         20m34s IN MX    5 mta2.sympatico.ca.
sympatico.ca.         20m34s IN MX    5 mta3.sympatico.ca.
sympatico.ca.         20m34s IN MX    5 mta1.sympatico.ca.
(snip)

Mon ISP a trois serveurs smtp. Voyez-vous ce nombre entre MX et le nom du mail server ? C'est le nombre de priorité. Mes serveurs ont tous la même priorité; cependant, quelques ISP ont des priorités différentes. Si c'est votre cas, choisissez le mail server avec le plus petit nombre de priorité, car il a la priorité la plus élevée.

[modifier] Vérification de votre bail DHCP:

Si vos configurations IP sont assignées par un serveur DHCP, vous pouvez voir toutes vos configurations immédiatement en visualisant votre bail actuel. Le bail lui-même est entre des accolades. Si vous avez plusieurs baux, celui en haut du fichier est votre bail le plus récent:

% more /var/db/dhclient.leases
lease {
 interface "ed0";
 fixed-address 192.168.2.12;
 option subnet-mask 255.255.255.0;
 option time-offset -18000;
 option dhcp-lease-time 345600;
 option routers 192.168.2.100;
 option dhcp-message-type 5;
 option dhcp-server-identifier 192.168.2.100;
 option domain-name-servers 209.226.175.236,204.101.251.1,204.101.251.2;
 renew 2 2004/4/13 02:13:03;
 rebind 3 2004/4/14 23:34:37;
 expire 4 2004/4/15 11:34:37;
}

[modifier] Ajouter une interface:

C'est une chose de savoir comment vérifier votre configuration d'interface, mais comment en configurer une ? Disons que vous avez juste ajouté une autre interface (NIC) à votre système. Une fois l'ordinateur relancé, vous voudrez vérifier qu'elle a bien été identifiée. Vous pouvez utiliser ifconfig et rechercher l' interface rajoutée. Vous pourriez également rechercher dans les messages de boot les adresses ethernet trouvées. Rappelez-vous d'inclure un E majuscule (Ethernet) dans votre recherche:

 % grep Ethernet /var/run/dmesg.boot 
rl0: Ethernet address: 00:05:5d:d2:19:b7
rl1: Ethernet address: 00:05:5d:d1:ff:9d
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0x9800-0x981f irq 10 at 
device 11.0 on pci0

Si votre nouvelle interface est listée, elle est prête à être configurée. Mais que faire si elle n'était pas trouvée au bootup ? La première question à se poser, est "faut il un noyau sur mesure ?". Si oui, contrôlez votre fichier de configuration du noyau; vous avez pu avoir retiré le périphérique exigé par la nouvelle interface.

Si ce n'est pas le cas, vous pouvez devoir relancer et examiner vos configurations CMOS. Avez-vous invalidé un IRQ ? Avez-vous activé des dispositifs que vous n'utilisez pas ? Si oui, ils peuvent gaspiller un IRQ, et n'en laissent plus pour la nouvelle interface. Si vous décidez de changer une configuration CMOS, notez la valeur initiale sur un morceau de papier. Changez un paramètre, réinitialisez, et voyez s'il y a une différence.

Recommencez selon les besoins.

Si l'interface est PCI, contrôlez votre configuration PnP OS CMOS. Parfois, changer de yes en no solutionne. En outre, déplacer l'interface sur un autre slot PCI, peut résoudre le problème. En conclusion, en dernier recours, vous pouvez déterminer si c'est un problème d' IRQ en retirant toutes les cartes, exceptée la nouvelle et votre carte graphique. Si elle est identifiée, vous avez plus de cartes que vous ne pouvez avoir d' IRQ.

[modifier] Configuration d'adresses IP:

Une fois votre carte identifiée, décidez si vous placez l'information IP manuellement, ou si vous utiliserez un serveur DHCP. L'une ou l'autre méthode exige des changements dans /etc/rc.conf. Si vous préférez, vous pouvez le faire avec /stand/sysinstall, qui éditera ce fichier pour vous. C'est le même utilitaire que vous avez utilisé quand vous avez installé votre système FreeBSD. Une fois lancé l'utilitaire, choisissez configure, networking, puis sélectionnez les interfaces avec la barre d'espace.

Autrement, éditez /etc/rc.conf, en utilisant directement votre éditeur de texte préféré. Par exemple, ces lignes assignent statiquement une IP et un masque de sous-réseau à rl0, et positionnent la route par défaut:

ifconfig_rl0="inet 192.168.2.25 netmask 255.255.255.0" \
 defaultrouter="192.168.2.100"

En outre, si vous utilisez l'adressage statique IP, n'oubliez pas d'ajouter les adresses IP de vos serveurs DNS dans /etc/resolv.conf.

Si vous utilisez à la place un serveur DHCP pour recevoir votre information IP, vous devez seulement ajouter une ligne dans /etc/rc.conf:

ifconfig_rl0="DHCP"

Vous n'avez pas besoin d'ajouter default router ou d'adresses de serveur DNS, car le bail assigné par votre serveur DNS devrait inclure cette information.

Quand vous avez sauvegardé vos changements dans /etc/rc.conf, réinitialisez vos configurations réseau:

# /etc/netstart

Note : Si jamais vous devez renouveler votre bail DHCP, utilisez cette commande, en remplaçant rl0 par le nom de votre interface:

# dhclient -r rl0

[modifier] Optimisation de votre configuration:

A moins que vous n'ayez une interface extrêmement ancienne, ou que vous n'en achetiez une spécifiquement de 100Mbps, celle-ci est de 10/100Mbps. Ceci signifie qu'elle est capable de négocier une vitesse de 10 à 100 Mbps. Elle négocie également très probablement le mode half-duplex (ne peut pas envoyer et recevoir simultanément) ou full-duplex (bidirectionnelle). Ce processus de négociation se produit entre l'interface et le hub ou le switch à l'autre extrémité de votre câble réseau.

Evidemment, 100Mbps full-duplex est bien mieux que 10Mbps half-duplex. Le facteur limitant sera le hub ou le switch; sa documentation indiquera sa vitesse et son mode de fonctionnement. S'il ne supporte pas 100Mbps ou full-duplex, vous n'obtiendrez pas les meilleures performances, et votre apprentissage de gestion réseau sera beaucoup plus lent.

Cependant, vous devriez également être attentif au fait que même si les hub et switch supportent 100Mbps et full-duplex, ils renégocient toujours ces valeurs sur une base identique. Si votre interface reste toujours connectée au même, il est préférable de déclarer ces valeurs, pour améliorer la vitesse de négociation.

Vous pouvez faire ceci en fonction du pilote de votre interface, après avoir soigneusement lu le man(4) de votre pilote. Dans mon exemple, j'aurais intérêt à débrancher ed0, et à utiliser à la place une des interfaces RealTek. Pourquoi ? man 4 ed indique que ce pilote supporte seulement 10Mbps en mode half-duplex (IEEE 802.3 CSMA). Cependant, man 4 rl indique que ce pilote peut être configuré pour utiliser 100Mbps en mode full-duplex.

Voici un exemple des lignes que j'utiliserais dans /etc/rc.conf:

ifconfig_rl0="DHCP"
ifconfig_rl0="100baseTX mediaopt full-duplex"

Il y a plusieurs choses à noter ici. Un, la page man indiquera quelles options sont disponibles, et comment les placer. Deux, n'essayez pas d'ajouter une configuration que votre pilote ne supporte pas, comme indiqué dans sa page. Trois, ne changez pas les valeurs vitesse et mode duplex, si le hub ou le switch ne les supporte pas !

Pour voir si mes changements sont effectifs, je connecte mon câble réseau à rl0 et envoie la commande /etc/netstart. Je vérifierai alors les résultats:

% ifconfig rl0
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
   options=8<VLAN_MTU>
   inet 192.168.2.87 netmask 0xffffff00 broadcast 192.168.2.255
   ether 00:05:5d:d2:19:b7
   media: Ethernet autoselect (100baseTX <full-duplex>)
   status: active


Succès !

Cet article a couvert la plupart des scénarios de configuration pour l'Ethernet. Vous devriez également vous référer à la section Configuration des cartes réseaux du manuel.

Dru Lavigne enseigne les technologies Marketbridge à Ottawa, et participe à l'Open Ressource Protocole.

Page d'accueil