OBSD4* : wiki

Version de traduction basée sur la 6.4 officielle (29/10/2018)


FAQ - Administration Réseau

Configuration réseau

La configuration réseau dans OpenBSD est faite avec des fichiers texte dans /etc. Typiquement, ces paramètres sont initialement configurés par le processus d'installation.

Identifier et configurer vos interfaces réseau

Les interfaces sont nommées d'après le type de la carte réseau, pas selon le type de la connexion. Par exemple, voici un extrait de la commande dmesg(8) pour une carte Intel Fast Ethernet :

fxp0 at pci0 dev 10 function 0 "Intel 82557" rev 0x0c: irq 5, address 00:02:b3:2b:10:f7
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4

Ce périphérique utilise le pilote fxp(4) et a le numéro 0 ici.

Vous pouvez trouver quelles interfaces réseau ont été identifiées en utilisant l'utilitaire ifconfig(8). La commande suivante vous montrera toutes les interfaces réseau sur un système.

$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200
        index 3 priority 0 llprio 3
        groups: lo
        inet 127.0.0.1 netmask 0xff000000
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:02:b3:2b:10:f7
        index 1 priority 0 llprio 3
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255
enc0: flags=0<>
        index 2 priority 0 llprio 3
        groups: enc
        status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33200
        index 4 priority 0 llprio 3
        groups: pflog

Cet exemple montre une seule interface physique Ethernet : fxp0. Une IP est configurée, dont la valeur est inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255. Les drapeaux UP et RUNNING sont aussi définis.

Le script netstart(8) configure les interfaces réseau au démarrage en utilisant les fichiers hostname.if(5), où if est remplacé par le nom complet de chaque interface. L'exemple ci-dessus utiliserait le fichier /etc/hostname.fpx0, contenant les options suivantes :

inet 10.0.0.38 255.255.255.0

Ce fichier hostname.fpx0 a un équivalent interactif :

# ifconfig fxp0 10.0.0.38 255.255.255.0

Enfin, vous remarquerez quelques autres interfaces activées par défaut. Ce sont des interfaces virtuelles qui servent à plusieurs fonctions. Les pages de manuel suivantes les décrivent :

  • enc - Interface d'encapsulation
  • lo - Interface loopback
  • pflog - Interface de journalisation de Packet Filter.

D'autres interfaces virtuelles peuvent être ajoutées grâce à la commande create de ifconfig(8).

Nom d'hôte et de passerelle par défaut

Les fichiers /etc/myname et /etc/mygate sont lus par le script netstart(8). Les deux sont constitués d'une simple ligne spécifiant respectivement le nom de domaine pleinement qualifié du système et l'adresse de l'hôte passerelle. Le fichier /etc/mygate n'a pas besoin d'exister sur tous les systèmes. Voyez myname(5) pour plus de détails.

Résolution DNS

La résolution DNS est contrôlée par resolv.conf(5).

$ cat /etc/resolv.conf
search example.com
nameserver 125.2.3.4
nameserver 125.2.3.5
lookup file bind

Ici, le nom de domaine par défaut sera example.com, il y aura deux résolveurs DNS, 125.2.3.4 et 125.2.3.5, et le fichier hosts(5) sera consulté avant les résolveurs DNS.

Activer les changements

À partir de là, vous pouvez soit redémarrer le système soit exécuter le script netstart(8) :

# sh /etc/netstart

Notez que quelques avertissements peuvent être émis lors de l'exécution de ce script si vous avez reconfiguré les interfaces qui l'étaient déjà. Utilisez ifconfig(8) pour vous assurez que vos interfaces ont été correctement configurées.

Bien que vous pouvez complètement reconfigurer le réseau sur un système OpenBSD en cours de fonctionnement, un redémarrage est conseillé après chaque nouvelle configuration significative.

Vérifier les routes

Vous pouvez vérifier vos routes avec netstat(1) ou route(8).

    $ netstat -rn
    Routing tables

    Internet:
    Destination        Gateway            Flags     Refs     Use    Mtu  Prio Interface
    default            10.0.0.1           UGS         4       16      -    12 fxp0
    224/4              127.0.0.1          URS         0        0  32768     8 lo0
    127/8              127.0.0.1          UGRS        0        0  32768     8 lo0
    127.0.0.1          127.0.0.1          UH          2       15  32768     1 lo0
    10.0.0/24          link#1             UC          1        4      -     4 fxp0
    10.0.0.1           aa:0:4:0:81:d      UHL         1       11      -     1 fxp0
    10.0.0.38          127.0.0.1          UGHS        0        0      -     1 lo0

    $ route show
    Routing tables

    Internet:
    Destination        Gateway            Flags     Refs     Use    Mtu  Prio Iface
    default            10.0.0.1           UGS         4       16      -    12 fxp0
    base-address.mcast localhost          URS         0        0  32768     8 lo0
    loopback           localhost          UGRS        0        0  32768     8 lo0
    localhost          localhost          UH          2       15  32768     1 lo0
    10.0.0/24          link#1             UC          1        4      -     4 fxp0
    10.0.0.1           aa:0:4:0:81:d      UHL         1       11      -     1 fxp0
    10.0.0.38          localhost          UGHS        0        0      -     1 lo0

Configurer un alias sur une interface

Pour paramétrer un alias IP sur une interface, éditez simplement le fichier hostname.if(5).

Supposons que vous avez une interface dc0. Vous êtes sur le réseau 192.168.0.0, l'adresse IP pour dc0 est 192.160.0.2 et le masque réseau est 255.255.255.0.

En assumant que vous avez utilisé plusieurs adresses IP qui sont dans le même sous-réseau avec des alias, votre masque réseau pour chaque alias devient 255.255.255.255. Ils n'ont pas besoin de suivre le masque réseau de la première IP reliée à l'interface. Dans cet exemple, deux alias sont ajoutés à l'interface dc0, qui était configurée avec 192.168.0.2 avec un masque de réseau de 255.255.255.0.

    $ cat /etc/hostname.dc0
    inet 192.168.0.2 255.255.255.0
    inet alias 192.168.0.3 255.255.255.255
    inet alias 192.168.0.4 255.255.255.255

Une fois que ce fichier est créé, exécutez netstart ou redémarrez. Pour voir tous les alias, utilisez ifconfig -A.

Dynamic Host Configuration Protocol

Le Protocole de Configuration d'Hôte Dynamique (DHCP) est une manière de configurer les interfaces réseau automatiquement. OpenBSD peut être un serveur DHCP qui configure les autres machines, ou un client DHCP qui est configuré par un serveur DHCP.

Client DHCP

Pour utiliser dhclient(8), éditez le fichier hostname.if(5) de votre interface. La section réseau sans fil explique comment paramétrer une interface sans fil. Pour les interfaces Ethernet, une seule ligne suffit :

dhcp

OpenBSD va récupérer son adresse IP, la passerelle par défaut et les résolveurs DNS depuis le serveur DHCP, au démarrage.

Si vous voulez obtenir une IP via DHCP en ligne de commande, exécutez simplement :

# dhclient xl0

Remplacez xl0 avec le nom de votre interface.

Le fichier resolv.conf(5) sera ré-écrit par dhclient(8) si le serveur DHCP fournit les options domain-name, domain-search ou domain-name-servers. Tout cela peut être ignoré, ré-écrit, ou modifié avec les états appropriés dans dhclient.conf(5). Par exemple, si vous voulez utiliser le serveur DNS à l'adresse 1.2.3.4 plutôt que celui(ceux) que le serveur DHCP fourni, ajoutez ce qui suit :

  supersede domain-name-servers 1.2.3.4;

De plus, le fichier /etc/resolv.conf.tail peut être utilisé pour ajouter une information si dhclient(8) écrit resolv.conf.

Serveur DHCP

Si vous voulez utiliser OpenBSD comme serveur DHCP, activez le démon dhcpd(8) au démarrage.

    # rcctl enable dhcpd

Au prochain démarrage, dhcpd s'exécutera et s'attachera à toutes les NICs (interfaces réseaux) qui ont une configuration valide dans dhcpd.conf(5). Vous pouvez préciser des interfaces individuelles plutôt que de les nommer explicitement.

    # rcctl set dhcpd flags em1 em2

Un exemple de fichier /etc/dhcpd.conf peut ressembler à ça :

# Home
subnet 192.168.1.0 netmask 255.255.255.0 {
	option domain-name-servers 192.168.1.2;
	option routers 192.168.1.1;
	range 192.168.1.3 192.168.1.50;
}

# Guests
subnet 172.16.0.0 netmask 255.255.255.0 {
	option domain-name-servers 209.244.0.3, 8.8.8.8;
	option routers 172.16.0.1;
	range 172.16.0.2 172.16.0.254;
}

Il y a deux sous-réseaux dans cet exemple : un réseau domestique et un réseau invité. Les clients recevront automatiquement une adresse IP et pointeront vers la passerelle et les serveurs DNS que vous avez spécifiés. Voyez dhcp-options(5) pour plus d'options.

Démarrage PXE (i386, amd64)

L'Environnement d'Exécution de Pré-démarrage (PXE - Preboot Execution Environment) est une méthode standard pour démarrer des systèmes en utilisant seulement le réseau. Une interface réseau ayant la capacité PXE d'un client diffuse une requête DHCP lors du processus de démarrage et, plutôt que de recevoir uniquement l'information basique IP/DNS, elle reçoit aussi le fichier de démarrage. Sur OpenBSD, ce fichier est pxeboot(8) et est typiquement servi par tftpd(8).

Réseau sans fil

OpenBSD supporte de nombreux puces sans fil. Davantage de périphériques supportés peuvent être trouvés dans usb(4) et pci(4). L'ensemble de leur supports est précisé dans les pages de manuel des pilotes.

Les cartes suivantes supportent le mode HostAP (Host-based Access Point - Point d'Accès basé sur l'Hôte), permettant de les utiliser comme point d'accès sans fil :

  • acx(4) TI ACX100, ACX111
  • ath(4) Atheros 802.11 a, b, g
  • athn(4) Atheros 802.11 a, g, n
  • pgt(4) Conexant et Intersil Prism GT Full-MAC 802.1 a, b, g
  • ral(4) et ural(4) Ralink Technology RT25x0 802.11 a, b, g
  • rtw(4) Realtek 8180 802.11 b
  • rum(4) Ralink Technology RT2501USB
  • wi(4) les Prism 2, 2.5, 3

La sous-commande media d'ifconfig(8) montre les capacités media des interfaces réseaux. Pour les périphériques sans fil, elle affiche les modes de media 802.11 a, b, g, n supportés et les modes de fonctionnement pris-en-charge (hostap, ibss, monitor). Par exemple, pour voir les capacités media d'une interface ath0, écrivez :

$ ifconfig ath0 media

Afin d'utiliser certaines cartes sans fil, vous devez acquérir les fichiers des firmware avec fw_update(1). Quelques fabricants refusent de permettre la libre distribution de leur micro-programme, de fait ils ne peuvent être inclus avec OpenBSD.

Une autre option à considérer : utilisez une interface réseau conventionnelle et un point d'accès sans fil depuis votre pare-feu basé sur OpenBSD. Ce qui a l'avantage supplémentaire de vous permettre de positionner facilement l'antenne là où elle est la plus efficace, ce qui n'est pas souvent le cas à l'arrière de votre pare-feu.

Configurer votre adaptateur sans fil

Les adaptateurs basés sur les puces supportées peuvent être utilisés comme tout autre interface réseau. Pour connecter un système OpenBSD à un réseau sans fil existant, utilisez l'utilitaire ifconfig(8).

Un exemple de fichier hostname.if(5) pour un client sans fil ressemble à :

nwid puffyuberalles wpakey passwordhere
dhcp

Ou, pour des points d'accès multiples :

join home-net wpakey passwordhere
join work-net wpakey passwordhere
join cafe-wifi
dhcp

Notez que le mot-clé dhcp devrait être après les autres lignes de configuration, sinon l'adaptateur réseau ne sera pas capable d'envoyer une requête DHCP jusqu'à ce qu'il soit configuré.

Trunker votre adaptateur sans fil

Les trunks sont des interfaces virtuelles renfermant une ou plusieurs interfaces réseaux. Dans cette section, notre exemple sera un ordinateur portable avec une interface filaire bge(0) et une interface sans fil iwn(0). Nous construirons une interface trunk(4) utilisant les deux.

Pour faire cela, nous activons en premier les deux ports physiques, puis nous les assignons à trunk0.

# echo up > /etc/hostname.bge0

L'interface sans fil, toutefois, a besoin d'un peu plus de configuration. Elle sera attaché à notre réseau sans fil protégé par WPA :

$ cat /etc/hostname.iwn0
nwid puffynet
wpakey mysecretkey
up

Maintenant, notre interface trunk est définie tel que :

$ cat /etc/hostname.trunk0
trunkproto failover trunkport bge0
trunkport iwn0
dhcp

Le trunk est paramétré dans le mode failover, ainsi chaque interface peut être utilisée. Si les deux sont disponibles, il sera préféré le port bge0, puisque c'est le premier ajouté au périphérique trunk.

Paramétrer un pont réseau

Un bridge(4) (pont) est un lien entre deux ou plusieurs réseaux séparés. À la différence d'un routeur, les paquets passent sur le pont de manière transparente : les deux segments réseaux apparaissant comme un des nœuds de chaque côté. Les ponts font transiter les paquets qui passent d'un segment à l'autre et une interface dans le pont peut avoir ou non une adresse IP lui appartenant. Si cela est, l'interface a effectivement deux modes d'opération : une faisant partie du pont, l'autre agissant comme une simple interface réseau. Si aucune interface n'a d'adresse IP, le pont fera passer les données réseau, mais ne sera pas gérable à l'extérieur (ce qui peut être une fonctionnalité).

Un pont agissant comme un serveur DHCP

Disons que nous avons un système qui a quatre interfaces vr(4), de vr0 à vr3. Nous voulons le pont entre vr1, vr2 et vr3 ensembles, gardant vr0 pour la liaison montante. Nous voulons aussi qu'il serve les adresses IP au-travers de DHCP sur les interfaces pontées. Étant un serveur DHCP et un routeur de liaison montante, la boite doit avoir une adresse IP sur le réseau ponté.

Il n'est pas possible d'assigner une adresse IP directement à l'interface bridge. L'adresse IP devrait être ajoutée à l'une des interfaces, mais nous ne pouvons pas utiliser une interface physique car le lien pourrait tombé, auquel cas l'adresse ne serait pas accessible. Heureusement, il y a le pilote vether(4) (Ethernet virtuelle) qui peut être utilisé à ce propos. Nous l'ajouterons au pont, lui assignerons une adresse IP et agiront en tant que dhcpd(8) écoutant ici.

  • La configuration du serveur DHCP n'est pas encore écrite dans cette section, mais le schéma d'adressage utilisé est le même.
  • Cela sera aussi le routeur de liaison montante pour votre réseau ponté, nous utiliserons l'adresse IP 192.168.1.1 pour correspondre à la configuration du serveur DHCP.
  • Nous ne couvrons pas la configuration de la liaison montante, du routage et du pare-feu ici.

En premier, démarrez les interfaces vr1, vr2, vr3 :

# echo up > /etc/hostname.vr1
# echo up > /etc/hostname.vr2
# echo up > /etc/hostname.vr3

Puis créez la configuration de vether0 :

# echo 'inet 192.168.1.1 255.255.255.0 192.168.1.255' > /etc/hostname.vether0

Configurez l'interface du pont contenant toutes les interfaces ci-dessus :

$ cat /etc/hostname.bridge0
add vether0
add vr1
add vr2
add vr3
up

Et finalement nous faisons en sorte que le démon DHCP écoute sur l'interface vether0 :

# rcctl set dhcpd flags vether0

Redémarrez, et voilà !

Filtrer un pont

Bien qu'un simple usage de pont comme ci-dessus existe tel quel, il est probable que vous voudriez faire quelques actions sur les paquets qui passent au-travers de votre pont. Comme on peut s'y attendre, Packet Filter peut être utilisé pour restreindre le trafic traversant votre pont. Gardez à l'esprit, de par la nature même d'un pont, les mêmes données circulent au-travers des deux interfaces, ainsi vous n'avez seulement besoin de filtrer qu'une seule interface.

Astuces

  • En utilisant l'option blocknonip d'ifconfig(8) ou dans hostname.bridge0, vous pouvez prévenir le trafic non IP (tel qu'IPX ou NETBEUI). Cela peut être important dans certaines situations, mais vous devriez faire attention au fait que les ponts fonctionnent avec toute sorte de trafic, pas juste celui d'IP.
  • Gérer un pont requiert que les interfaces réseaux soient en mode promiscuité : elles écoutent tout le trafic réseau, pas juste celui dirigé vers l'interface. Cela pourra surcharger le processeur et les bus plus que nécessaire.

Equal-cost multipath routing

Le routage à répartition de charge égale (ECMP -Equal-cost multipath routing) a différentes routes dans la table de routage pour le même réseau, telle que la route par défaut, 0.0.0.0/0. Quand le noyau fait une recherche de route pour déterminer par où sont envoyés les paquets destinés à tel réseau, il peut choisir n'importe quelle route à charge égale. Dans la plupart des scénarios, le routage multi-voies est utilisé pour fournir des connexions de liaisons montantes redondantes, telles que, des connexions redondantes à internet.

La commande route(8) est utilisée pour ajouter, changer, supprimer des routes dans la table de routage. L'argument -mpath est utilisé pour ajouter des routes multi-chemins.

# route add -mpath default 10.130.128.1
# route add -mpath default 10.132.0.1

Vérifiez les routes :

# netstat -rnf inet | grep default
default     10.130.128.1      UGS       2      134      -     fxp1
default     10.132.0.1        UGS       0      172      -     fxp2

Dans cet exemple, nous voyons qu'une seule route par défaut pointe vers 10.130.128.1, qui est accessible via l'interface fxp1, et que l'autre pointe vers 10.132.0.1, qui est accessible via fxp2.

Puisque le fichier mygate(5) ne supporte pas encore les routes multi-voies par défaut, la commande ci-dessus doit être ajoutée en fin des fichiers hostname.if(5) pour les interfaces fxp1 et fxp2. Le fichier /etc/mygate devrait être alors supprimé.

$ tail -1 /etc/hostname.fxp1
!route add -mpath default 10.130.128.1
$ tail -1 /etc/hostname.fxp2
!route add -mpath default 10.132.0.1

En dernier, n'oubliez pas d'activer l'utilisation des routes multi-voies en activant la variable sysctl(8).

# sysctl net.inet.ip.multipath=1
# sysctl net.inet6.ip6.multipath=1

Soyez sûr d'éditer sysctl.conf(5) pour rendre les changements permanent.

Maintenant essayez un traceroute vers différentes destinations. Le noyau équilibrera la charge du trafic sur chacune des routes multi-voies.

# traceroute -n 154.11.0.4
traceroute to 154.11.0.4 (154.11.0.4), 64 hops max, 60 byte packets
 1  10.130.128.1  19.337 ms  18.194 ms  18.849 ms
 2  154.11.95.170  17.642 ms  18.176 ms  17.731 ms
 3  154.11.5.33  110.486 ms  19.478 ms  100.949 ms
 4  154.11.0.4  32.772 ms  33.534 ms  32.835 ms

# traceroute -n 154.11.0.5
traceroute to 154.11.0.5 (154.11.0.5), 64 hops max, 60 byte packets
 1  10.132.0.1  14.175 ms  14.503 ms  14.58 ms
 2  154.11.95.38  13.664 ms  13.962 ms  13.445 ms
 3  208.38.16.151  13.964 ms  13.347 ms  13.788 ms
 4  154.11.0.5  30.177 ms  30.95 ms  30.593 ms

Pour plus d'informations à-propos de comment la route est choisie, veuillez vous référer à la RFC2992, “Analyse d'un Algorithme de Route Multi-voies à Coût Égal”.

Il faut noter que si une interface utilisée par une route multi-voies tombe (tel que la perte du fournisseur), le noyau essaiera toujours de rediriger les paquets utilisant la route pointant vers l'interface. Ce trafic sera bien-sûr perdu et n'aboutira nulle part. Il est hautement recommandé d'utiliser ifstated(8) pour vérifier les interfaces indisponibles et d'ajuster les tables en conséquence.

Utiliser NFS

Le Système de Fichier Réseau, NFS - Network File System, est utilisé pour partager un système de fichier sur un réseau.

Cette section passera par les étapes d'une configuration simple de NFS. L'exemple détaille un serveur sur un LAN, avec des clients accédant à NFS sur le LAN. Il ne couvre pas la sécurisation de NFS. Nous présumons que vous avez déjà paramétré le filtrage de paquets ou tout autre protection pare-feu pour empêcher l'accès extérieur.

Paramétrer un serveur NFS

En premier, activez les services portmap(8), mountd(8) et nfsd(8) sur le serveur :

# rcctl enable portmap mountd nfsd

Ensuite, configurez la liste des systèmes de fichiers qui seront rendus disponibles.

Dans cet exemple, nous avons un serveur avec l'adresse IP 10.0.0.1. Ce serveur servira NFS seulement aux clients sur son propre sous-réseaux. Cela est configuré dans le fichier exports(5) suivant :

$ cat /etc/exports
/docs -alldirs -ro -network=10.0.0 -mask=255.255.255.0

Le système de fichier local /docs sera rendu disponible via NFS. L'option -alldirs spécifie que les clients seront capable de monter tout point sous /docs aussi bien que /docs lui-même. L'option -ro spécifie que les client auront seulement les accès en lecture seule. Les deux derniers arguments spécifient que seuls les clients dans le réseau 10.0.0.0 utilisant un masque réseau de 255.255.255.0 auront l'autorisation de monter le système de fichier.

Maintenant vous pouvez démarrer les services.

# rcctl start portmap mountd nfsd

Si vous faites des changements sur /etc/exports pendant que NFS fonctionne toujours, vous avez besoin de faire attention à cela :

# rcctl reload mountd

Monter les systèmes de fichiers NFS

Les systèmes de fichiers NFS doivent être monté via mount(8), ou plus spécifiquement, mount_nfs(8).

Pour monter le système de fichier /docs vers le système de fichier /mnt sur l'hôte 10.0.0.1, exécutez :

# mount -t nfs 10.0.0.1:/docs /mnt

Pour avoir le système de fichier monté au démarrage, ajoutez une ligne à votre fstab(5) :

# echo '10.0.0.1:/docs /mnt nfs rw,nodev,nosuid 0 0' >> /etc/fstab

Il est important d'utiliser 0 0 à la fin de cette ligne afin que votre ordinateur n'essaye pas de faire un fsck(8) sur le système de fichier NFS au démarrage.

Lors d'un accès mount NFS en tant qu'administrateur, le serveur liera automatiquement les accès administrateur à l'utilisateur nobody et au groupe nobody. C'est important à savoir pour prendre en considération les permissions de fichier. Par exemple, prenez un fichier avec ces permissions :

-rw-------    1 root     wheel           0 Dec 31 03:00 _daily.B20143

Si le fichier était sur un partage NFS et que l'administrateur essaye d'accéder au fichier depuis un client NFS, l'accès serait refusé.

L'utilisateur et le groupe, que l'administrateur a lié, sont configurables via le fichier exports(5) sur le serveur NFS.

Vérifier les statistiques NFS

Une chose à vérifier est de s'assurer que NFS fonctionne correctement, et que tous les services ont bien été enregistrés avec RPC. Pour faire cela, utilisez rpcinfo(8).

$ rpcinfo -p 10.0.0.1
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp    633  mountd
    100005    3   udp    633  mountd
    100005    1   tcp    916  mountd
    100005    3   tcp    916  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs

Il y a quelques utilitaires qui vous permettre de voir ce qui se passe avec NFS. showmount(8) vous permet de voir ce qui est couramment monté par qui. Il y a aussi nfsstat(1), qui montre des statistiques beaucoup plus verbeuses.


Cette page est la traduction officieuse de la page “Networking” de la FAQ officielle d'OpenBSD.
En cas de doute, merci de vous y référer !

Si vous voulez participer à l'effort de traduction, merci de lire ce topic.