Créer un réseau Wifi Ad-Hoc
Introduction
Ce petit récapitulatif tire son origine de la semaine de conférences Recherche et Innovation à laquelle j’ai assisté en septembre 2009 au début de mon année d’Info Spé à l’ÉPITA. Nous avions alors tous les jours pas mal de temps libre entre deux conférences, et nous étions plusieurs à apporter nos ordinateurs portables, histoire de s’occuper un peu pendant ce temps.
Puis l’idée nous est venue de mettre nos ordinateurs en réseau : avec les jeux multi-joueurs on s’amuse plus, en LAN c’est bien connu ! Seulement, il me semble que le réseau Wifi de l’école ne permet pas de communiquer entre postes itinérants, il fallait donc créer un réseau parallèle, et le côté « on bricole notre petit réseau » était assez attirant (du moins pour moi). Du coup c’était l’occasion de tenter quelque chose… Je vais tenter de retracer ici les étapes, méthodes pour monter un réseau sans fil Ad-Hoc (explications plus loin) utilisable, et quelques pistes à tenter avec les gens motivés pour perfectionner.
Une fois que le réseau et les machines « essentielles » à son fonctionnement sont en place, la configuration des autres postes (ceux qui ne font que se connecter aux autres machines, typiquement) est assez simple quelque soit le système utilisé. Je vais donner les démarches à suivre valables pour Debian GNU/Linux (et donc pour Ubuntu, et dérivés), mais on peut tout à fait transposer ça sous *BSD, Windows, Mac OS, ou autre, il ne s’agira ensuite que d’adapter la configuration aux logiciels utilisés.
Je vais tenter de simplifier (peut-être parfois jusqu’à erroner) mes explications dans le but d’exposer le strict nécessaire pour bâtir un réseau qui fonctionne puis comprendre et réparer les pannes les plus courantes. Bien sûr si vous détectez une véritable erreur ou une simplification vicieuse dans mon discours, merci de me contacter pour régler ça. Pour ceux qui veulent aller plus loin, je liste à la fin de la page quelques liens vers des sites plus exhaustifs que le mien.
Rapides notions théoriques sur le réseau
Cette partie très théorique (mais la seule vraiment théorique) donne quelques bases en réseau tout court (IP machine/réseau). Elle est bien utile si on veut comprendre ce que l’on fait (et puis franchement après vous en saurez pas mal sur le sujet), mais elle n’est pas indispensable.
Pour les gens pressés, peu curieux ou déjà bien au courant, sautez cette section (quitte à y revenir plus tard) et allez directement à la partie Création d’un réseau Wifi Ad-Hoc basique. En effet, cette section n’est utile que pour améliorer le réseau Ad-hoc de base (seconde partie de cette page, à partir de la Mise en place d’un serveur DHCP).
Topologie (forme) d’un réseau
Basiquement, un réseau est dans notre cas l’établissement de liaisons entre plusieurs ordinateurs de sorte à ce qu’ils puissent communiquer entre eux. Assez vague, et rien de très nouveau jusque là : tout se complique lorsqu’on cherche comment tout se met en place, ou comment ça fonctionne. On note aussi qu’il est possible (et c’est très utile) de relier plusieurs réseaux entre eux. Il existe mille et une formes de réseau, mais nous allons nous intéresser à la forme la plus courante : les réseaux Ethernet et ses dérivés.
Tout d’abord, faisons la distinction entre un hôte et une interface réseau. Une interface est comme son nom l’indique un point de contact entre un hôte (c’est-à-dire tout type d’ordinateur) et un réseau. Un hôte peut avoir autant d’interfaces qu’il a de cartes réseau (une carte Ethernet, une carte Wifi, …), voire plus avec la technique d’interfaces virtuelles (que je n’aborderai pas ici). Ainsi, un hôte ne peut pas être connecté à plus de réseaux qu’il n’a d’interfaces. On fait souvent l’abus de dire « hôte » pour désigner une interface de cet hôte, mais il n’y a pas de confusion dans le contexte.
Partons de l’exemple le plus courant : le réseau familial constitué de la machin-box et des différents ordinateurs de la maison. Les ordinateurs font tous partie du même réseau privé, tandis que la box joue deux rôles :
- le rôle du switch : c’est le point d’échange entre les différents ordinateurs du réseau. Toutes les liaisons physiques se font entre un ordinateur et le switch, et donc tout ce qui est échangé sur le réseau passe par ce dispositif, c’est donc en quelque sorte son « cœur » .
- le rôle du routeur : c’est une interface entre plusieurs réseau : le réseau privé d’un côté (aussi appelé LAN pour Local Area Network, ou réseau local, ou encore WLAN pour Wireless Local Area Network ou réseau local sans fil dans le cas d’un réseau… sans fil) et le grand réseau, Internet (aussi appelé WAN pour Wide Area Network). C’est grâce à ce dispositif que les ordinateurs du réseau privé peuvent accéder à Internet, et réciproquement.
Du point de vue du switch, le routeur peut être vu comme un simple ordinateur faisant partie du réseau. On a donc bien dans l’objet machin-box deux entités bien distinctes. Le switch relie les ordinateurs au sein d’un même réseau tandis que le routeur relie les réseaux entre eux.
En supposant qu’un switch supporte des liaisons filaires en Ethernet et des liaisons sans-fil en Wifi, l’utilisation des deux types de connectivité ne change rien du point de vue topologie du réseau : relier un ordinateur avec du filaire ou du Wifi ne dépend que de vos choix, mais n’influera pas sur le réseau lui-même. Le filaire assure en général un débit meilleur et constant dans les conditions habituelles chez les particuliers tandis que le Wifi permet une meilleure mobilité mais est plus sensible aux interférences.
Les hubs étant désormais dépassés (les switchs sont de nos jours aussi abordables financièrement et sont plus efficaces du point de vue technique), nous avons vu les principaux équipements d’un réseau : les ordinateurs simples, reliés à un seul réseau, les switchs, reliant les ordinateurs et les routeurs, qui sont en fait des ordinateurs pouvant se connecter à plusieurs réseaux simultanément, et configurés de telle manière à faire un pont entre les réseaux auxquels ils sont connectés.
Les réseaux IP
La topologie d’un réseau est une chose, mais relier physiquement les ordinateurs ne suffit pas : encore faut-il que ceux-ci parlent le même langage pour se comprendre. En informatique, on parle de protocole. À l’image du monde réel, un protocole informatique est une spécification d’interaction entre deux entités. Votre navigateur « parle » HTTP avec les serveurs Web, votre ordinateur « parle » DNS avec un serveur DNS pour convertir un nom de domaine en adresse IP, votre modem « parle » PPPoE pour vous relier à Internet si vous avez une connexion ADSL, etc.
Ces protocoles permettent un échange bien défini entre deux entités (un client et un serveur dans le cas des protocoles réseau) afin de réaliser une action bien précise. HTTP permet d’effectuer des requêtes sur des ressources (les développeurs Web connaissent bien les méthodes GET et POST, mais moins PUT et DELETE appliquées sur les ressources, des URL) tandis que SMTP est le protocole utilisé pour envoyer des mails, etc.
Le protocole qui nous intéresse ici est IP (Internet Protocol), en particulier la version 4 (IPv4), actuellement (en août 2010) la version la plus utilisée (il serait de bon goût de mettre à jour cette page au moment où Internet basculera entièrement en IPv6). Comme on peut l’imaginer, ce protocole sert à créer des réseaux… IP ! Nous allons nous intéresser à un morceau seulement de la spécification : ce qui nous permettra de monter notre réseau.
Intéressons-nous d’abord aux identifiants, c’est-à-dire à la manière de
désigner un objet quand on « parle » IP. L’identifiant de base en IP, comme
vous l’avez sûrement déjà entendu est l’adresse IP. Celle-ci est un
bloc de quatre nombres (allant de 0 à 255 compris : des octets) séparés par des
points (c’est juste une manière de l’écrire). Par exemple :
213.186.58.151
est une adresse IP écrite pour les humains. Les
ordinateurs manipulent en revanche plus facilement un seul entier pour une
adresse ; par exemple l’adresse précédente 213.186.58.151
est
mémorisée par l’ordinateur en tant que l’entier 3585751703. Pourquoi ? C’est
bien simple : on convertit chaque nombre entre 0 et 255 (chaque octet) par son
équivalent en binaire (8 bits par octet), et on colle le tout pour faire un
seul nombre binaire (ce nombre a 4 × 8 bits = 32 bits, donc).
Comme pratiquement tout le temps en informatique, on en revient à attribuer un numéro pour identifier les choses. Ah. Mais alors qu’est-ce que les adresses IP servent à identifier ? Eh bien deux types d’entité : une adresse IP sert à identifier soit un réseau, soit un ordinateur du réseau (un « hôte », ou host). À ce moment-là, comment une adresse IP peut-elle désigner ces deux choses en même temps ? C’est assez simple : on utilise certains bits pour identifier le réseau, et tous les autres pour identifier la machine sur le réseau en question, c’est là qu’intervient le masque de sous-réseau (netmask pour subnet mask).
Un masque de sous-réseau est simplement un nombre ayant la même taille que l’adresse IP, c’est-à-dire ayant le même nombre de bits (en l’occurence 32 bits pour une IPv4). Pour comprendre comment l’utiliser, il faut représenter le masque ainsi que l’adresse IP associée sous forme de nombre binaire. On associe ansi chaque bit de l’adresse IP au bit du masque correspondant. Plusieurs opérations permettent de tirer des informations de ce couple adresse IP-masque de sous-réseau. Soit A l’adresse IP et M le masque de sous-réseau :
- faire un ET logique entre les deux nombres(A ET M) calcule l’adresse du réseau ;
- faire un ET logique entre l’adresse IP et le négatif du masque (A ET NON M) calcule l’adresse de l’ordinateur au sein du réseau ;
- faire un OU logique entre l’adresse IP et le négatif du masque (A OU NON M) calcule l’adresse de diffusion du réseau (ou broadcast), qui sert en bref à envoyer un message à tous les postes du réseau. À l’inverse, l’unicast consiste à adresser un paquet à un seul hôte dans le réseau (en utilisant son adresse IP propre). Pour plus d’informations sur l’unicast, le broadcast, le multicast, l’anycast, … consultez Wikipédia :-) ([fr.Wikipédia] Unicast)
Rassurez-vous, lorsqu’on monte un petit réseau local sans trop d’envergure,
il n’y a pas besoin de faire des calculs aussi lourds, mais quand on apprend il
est intéressant de voir comment ça marche. Du coup, je sens que quelques
exemples feraient passer le morceau. Prenons A =
192.168.1.13
et M = 255.255.255.0
(c’est une
adresse IP de machine qu’il est possible de trouver dans le réseau privé de pas
mal de Machin-box), et effectuons ces calculs pour en apprendre plus sur le
réseau de cette machine. Tout d’abord les conversions en binaire (je garde les
points pour plus de lisibilité) :
Donnée | Opération binaire | Résultat en binaire | Résultat en décimal |
---|---|---|---|
Adresse IP | A | 11000000.10101000.00000001.00001101 |
192.168.1.13 |
Masque | M | 11111111.11111111.11111111.00000000 |
255.255.255.0 |
Adresse du réseau | A ET M | 11000000.10101000.00000001.00000000 |
192.168.1.0 |
Numéro du poste | A ET NON M | 00000000.00000000.00000000.00001101 |
0.0.0.13 |
Adresse de diffusion | A OU NON M | 11000000.10101000.00000001.11111111 |
192.168.1.255 |
Notez bien que le masque a toujours cette forme-là : les uns à gauche (ils
représentent la partie réseau) et les zéros à droite (ils représentent la
partie hôte). Il me semble qu’il est techniquement possible de les mélanger,
mais l’architecture réseau se compliquerait alors tellement qu’un tel choix
serait idiot. Du coup, au lieu de noter le couple adresse IP-masque comme
A.B.C.D/E.F.G.H
, on peut souvent écrire A.B.C.D/N
où
N est le nombre de « 1 » présent dans le masque, sachant qu’ils sont
tous groupés à gauche : c’est la notation CIDR (Classless Inter-Domain
Routing). On écrirait donc dans notre exemple
192.168.1.13/24
. Avec la notation CIDR, on va bien plus vite : 24
est le nombre de bits qui servent à identifier le réseau (24 = 3 × 8, donc 3
octets), soit 192.168.1 (c’est le préfixe = identifiant du réseau), et 32 − 24
= 8 bits servent à identifier la machine, soit 13 ici (c’est le suffixe =
identifiant du réseau).
Il est aussi utile de remarquer que l’adresse du réseau est la plus basse (une IP est un nombre, donc c’est le nombre le plus petit du réseau), tandis que que l’adresse de diffusion est la plus haute (le nombre le plus grand du réseau).
Prenons un autre exemple un chouilla plus complexe : analysons le réseau de
la machine A/M = 172.18.154.56/14
(le « /14
indique que le masque est 255.252.0.0). La seule vraie complexité
vient du fait que la séparation réseau-hôte au niveau de l’adresse IP en forme
binaire ne coïncide pas avec la séparation entre deux octets ; par conséquent
un des 4 octets « mélange » hôte et IP et la différence n’est bien nette qu’en
binaire (voir le code couleur, rouge pour la partie réseau et bleu pour la
partie hôte).
Donnée | Opération binaire | Résultat en binaire | Résultat en décimal |
---|---|---|---|
Adresse IP | A | 10101100.00010010.10011010.00111000 |
172.18.154.56 |
Masque | M | 11111111.11111100.00000000.00000000 |
255.252.0.0 |
Adresse du réseau | A ET M | 10101100.00010000.00000000.00000000 |
172.16.0.0 |
Numéro du poste | A ET NON M | 00000000.00000010.10011010.00111000 |
0.2.154.56 |
Adresse de diffusion | A OU NON M | 10101100.00010011.11111111.11111111 |
172.19.255.255 |
Une chose à retenir quand on parle de réseau IP est que l’échange de données se fait selon une commutation de paquets, c’est-à-dire qu’au lieu d’envoyer et de recevoir un flot (ou flux) de données avec un ensemble statique de correspondants comme en téléphonie classique (sauf exception très rare), les données à envoyer ou recevoir sont fragmentées en plusieurs paquets, ce qui rend possible le fait de parler à plusieurs personnes en même temps et de changer de correspondants sans connexion-déconnexion du réseau (impossible avec un téléphone). Chaque paquet contient l’adresse IP du destinataire et l’adresse IP de l’expéditeur, et les différents intermédiaires (qui s’occupent uniquement de transmettre le paquet à la bonne machine) ne font que lire l’adresse de destination (seule la machine visée s’occupe de l’adresse IP de l’expéditeur, afin de lui répondre).
Attribuer des adresses IP
La sous-section précédente explique qu’une adresse IP et un masque permettent ensemble de déterminer l’adresse du réseau et l’adresse de la machine désignée au sein de ce réseau. En se mettant à la place de l’administrateur réseau, on se demande maintenant comment choisir et attribuer des adresses IP lors de la création d’un réseau.
Bien sûr, pour que le réseau fonctionne, tous les ordinateurs le composant doivent avoir au moins une adresse IP, et une adresse IP ne doit être associée qu’à un seul ordinateur à la fois, ou à rien du tout. Autrement dit, au sein d’un même réseau, deux ordinateurs ne peuvent pas posséder le même numéro de poste, et tous les ordinateurs doivent avoir la même adresse de réseau (et donc le même masque).
Ces conditions suffiraient si le réseau était condamné à être isolé de tout le reste. En effet, théoriquement il est possible d’utiliser tout le panel d’adresses disponible en IPv4, soit très grossièrement 232 = 4 milliards d’adresses. Les problèmes viennent lorsqu’on décide de connecter le réseau à un autre… comme Internet par exemple ! La condition supplémentaire quand on considère les réseaux interconnectés est que chaque ordinateur à qui un hôte peut envoyer un paquet doit avoir une adresse IP différente. C’est un peu tordu, mais avec les techniques de NAT, il est possible de contourner la condition qui aurait dû être : « chaque ordinateur doit avoir une adresse IP unique dans l’ensemble des réseaux connectés ».
Ainsi, il est nécessaire qu’une entité unique au niveau mondial régule l’attribution d’adresses IP. C’est l’IANA qui satisfait ce rôle. Celle-ci déclare qu’une adresse IP est par défaut utilisable sur Internet, à l’exception d’une quinzaine de plages d’adresses IP listée ici (personnellement je ne les connais pas par cœur…) : [fr.Wikipédia.org] Plages d’adresses IP spéciales.
Il est ainsi fait la distinction entre les IP publiques (qu’une organisation dédiée peut attribuer à des hôtes, et utilisables sur Internet, ou WAN) et privées (c’est-à-dire en LAN). Je ne rentrerai pas dans l’explication du mécanisme d’attribution des adresses publiques : seules les adresses privées nous intéressent ici. Elles sont utilisables pour n’importe qui souhaitant créer un réseau. L’important est que ces adresses ne soient pas utilisées sur le net. Les paquets qui utilisent ces adresses sont de toute façon supprimés dès qu’ils tentent d’aller sur Internet.
DONC, l’information intéressante ici est : si vous voulez créer un réseau local (c’est-à-dire utilisant des adresses privées), vous pouvez utiliser les plages IP suivantes (elles étaient dans la liste publiée par l’IANA) :
10.0.0.0/8
(de10.0.0.0
à10.255.255.255
)172.16.0.0/12
(de172.16.0.0
à172.31.255.255
)192.168.0.0/16
(de192.168.0.0
à192.168.255.255
)
Deux remarques cependant : premièrement, vous pouvez parfaitement n’utiliser
que des portions de ces plages d’adresses. Par exemple, la majorité des
Machin-box sont configurées par défaut pour créer un réseau sur la plage
192.168.1.0/24
(de 192.168.1.0
à
192.168.1.255
).
De plus, lorsqu’il s’agit d’attribuer les
adresses aux hôtes, il faut bien exclure l’adresse haute (c’est l’adresse de
diffusion, ou broadcast et l’adresse basse (c’est l’adresse du réseau
lui-même). Sur le réseau de la plupart des Machin-box, l’adresse haute est
192.168.1.255
et l’adresse basse est 192.168.1.0
;
les adresses utilisables pour les ordinateurs sont donc de
192.168.1.1
à 192.168.1.254
, soit 254 adresses au
total.
Voilà, ouf, vous pouvez respirer. ;-) Cette partie-là m’avait beaucoup intéressé quand j’ai appris ces notions, mais je conçois parfaitement que ça en rebute certains (que par ailleurs je félicite d’avoir lu jusqu’ici). Pour tous les autres, avides de connaissances, il reste encore des choses à apprendre, et donc je vous renvoie aux ressources externes, et puis dans quelques mois ou années, il faudra reconstituer ses connaissances avec l’arrivée de l’IPv6 ! Maintenant, place à la pratique !!
Création d’un réseau Wifi Ad-Hoc basique
Cette section explique rapidement les particularités d’un réseau Wifi puis liste les étapes pour configurer chaque poste dans le cas d’un réseau Wifi Ad-Hoc autonome et isolé, tout ce qu’il y a de plus basique
Le Wifi en bref
Le Wi-Fi (pour Wireless-Fidelity) est tout d’abord une norme (IEEE 802.11 suivit d’une lettre, plus la lettre est loin dans l’alphabet, mieux c’est en gros). Celle-ci permet, pour les cartes réseaux qui suivent cette norme, de constituer un réseau avec les autres équipements dits « Wifi ». Rien de bien mirobolant, c’est en fin de compte une norme comme l’Ethernet, sauf que c’est pour les réseaux sans-fil. Pour la petite histoire, la fréquence des ondes électromagnétiques utilisée par les équipements Wifi est positionnée sur celle utilisée par les micro-ondes (c’est-à-dire les ondes qui font chauffer les molécules d’eau). C’est dû à la législation dans certains pays (tous ? dont la France en tout cas), où l’utilisation d’un bande de fréquence est règlementée. Du coup si on utilise une fréquence déjà utilisée mais pas pour communiquer, ça passe…
On va retenir deux modes de fonctionnement pour les réseaux Wifi : le mode « Infrastructure », ou avec point d’accès, et le mode « Ad-hoc » ou de pair à pair. Le mode infrastructure met en place, à l’image du réseau Ethernet, un point d’accès Wifi, c’est-à-dire un type de switch. La flexibilité du système permet d’utiliser plusieurs points d’accès connectés entre eux pour couvrir une zone large et ainsi permettre le passage de client itinérant d’un point d’accès à un autre sans déconnexion…
Mais bon, le cas le plus courant est toujours la Machin-box, qui fait office de point d’accès Wifi. Soit le poste qu’on veut relier au réseau est à portée du point d’accès (auquel cas ça fonctionne), soit pas (je vous laisse deviner ce qu’il se passe). L’avantage est que pour que deux postes communiquent, il suffit que les deux captent le point d’accès : pas besoin que les deux postes se captent réciproquement.
À cause de la distance, deux stations sont hors de portée l’une de l’autre. Elles peuvent cependant communiquer car tous les échanges se font par l’intermédiaire du point d’accès Wifi.
C’est le mode Ad-Hoc que nous allons utiliser ici. Si vous avez un point d’accès comme une Fonéra, autant l’utiliser (on peut trouver ça plus pratique qu’un réseau Ad-Hoc), mais je vous laisser consulter la documentation disponible sur le Web.
Le mode Ad-Hoc, donc… Un réseau Wifi Ad-Hoc est en fait constitué uniquement des postes du réseau, sans point d’accès. C’est ce qui permet de mettre en réseau plus ou moins simplement des ordinateurs équipés de carte Wifi (quasiment tout le temps depuis quelques années) de manière improvisée. J’entends par là, par exemple : on se retouve à plusieurs dans le train, mais on n’a pas de point d’accès à proximité, alors hop ! on se monte un réseau Ad-Hoc, et voilà le travail ! C’est bien sûr ce qui s’est passé pendant cette semaine de conférence dont je parlais au début.
Les ordinateurs connectés à un réseau Ad-Hoc communiquent donc directement entre eux. La conséquence directe et que deux ordinateurs reliés au réseau ne pourront pas forcément communiquer s’ils ne se captent pas. On peut mettre en place un système de routage pour résoudre ce problème, mais c’est tout de suite plus compliqué (et donc moins improvisé pour le coup) ; je détaille ça dans les parties Relier les réseaux entre eux et Augmenter la portée d’un réseau Wifi Ad-Hoc.
À cause de la distance, des deux stations sont hors de portée l’une de l’autre. Le réseau Ad-Hoc de base ne leur permet donc pas de communiquer entre elles directement. Cependant, une configuration plus fine (avec un intermédiaire) permettrait de résoudre le problème.
Création du réseau Ad-Hoc avec Network-manager sous Debian
La mise en place du réseau se fait en deux étapes. La première est de spécifier les paramètres qui serviront à créer le réseau : c’est faisable à n’importe quel moment, et on n’a à le faire qu’une seule fois (puisque les paramètres sont enregistrés). La deuxième est de se connecter au réseau (ce qui le créera, étant donné la forme d’un réseau Ad-Hoc), ce qui doit être fait à chaque fois qu’on veut se relier au réseau, avec les autres, ce qui doit être fait à chaque arrivée.
Première étape : faites un clic droit sur l’icône de Network Manager, puis sélectionnez l’item « Modification des connexions… ».
Dans la fenêtre qui apparaît, allez dans l’onglet « Sans fil », puis cliquez sur le bouton « Ajouter ».
La fenêtre qui apparaît vous permet de configurer votre réseau. Le champ « Nom de la connexion » n’a aucune incidence sur le réseau que vous allez créer ; il sert à Network Manager à nommer l’ensemble des paramètres pour pouvoir vous le proposer dans un menu au moment de se connecter. L’option « Connecter automatiquement » n’a pas d’importance.
Dans l’onglet « Sans fil », donnez-lui un nom (SSID), de préférence avec des caractères non spéciaux (0 à 9, a à z et A à Z) et spécifiez le mode « Ad Hoc ». Dans l’onglet « Paramètres IPv4 », spécifiez la méthode « Manuelle », puis dans la partie « Adresses », cliquez sur le bouton « Ajouter » et remplissez les champs selon vos préférences pour le réseau. Par exemple, pour ceux qui n’ont pas lu la première partie théorique :
- Adresse :
192.168.42.1
;
ce sera l’adresse IP de l’ordinateur sur lequel vous faites le réglage, il faut donc en choisir une différente par ordinateur que vous connecterez au réseau. L’intervalle est de192.168.42.1
à192.168.42.254
. - Masque de réseau :
255.255.255.0
;
ce sera le même masque pour tous les ordinateurs du réseau. - Passerelle : vous pouvez ne pas en mettre (
0.0.0.0
signifie : personne), c’est le cas par défaut sauf si vous mettez plus tard en place un ordinateur qui fera passerelle vers un autre réseau (comme Internet, ou celui de l’école), auquel cas il suffit de mettre à la place l’adresse IP de l’ordinateur qui fait office de passerelle.
Deuxième étape : faites un clic gauche sur l’icône de Network Manager, et sélectionnez « Se connecter à un réseau sans fil invisible ».
Une fenêtre apparaît ; choisissez dans le champ « Connexion » le nom du réseau que vous avez créé (dans mon exemple, c’était « MonReseauAdHoc »), puis cliquez sur « Se connecter ».
L’icône de Network Manager se met à indiquer que l’ordinateur tente la connexion… Quelques secondes plus tard, un message devrait apparaître vous confirmant que la connexion est établie… Et c’est gagné !
Si vous voulez tester la connexion, vous pouvez utiliser ping
en ligne de commande :
# On suppose que votre adresse est 192.168.42.1
# tandis que celle d’un autre ordinateur sur le réseau est 192.168.42.2
# et que 192.168.42.3 n’est utilisée par personne
# Tappez Ctrl-C pour arrêter le ping
ping 192.168.42.1
PING 192.168.42.1 (192.168.42.1) 56(84) bytes of data.
64 bytes from 192.168.42.1: icmp_req=1 ttl=64 time=0.085 ms
64 bytes from 192.168.42.1: icmp_req=2 ttl=64 time=0.072 ms
64 bytes from 192.168.42.1: icmp_req=3 ttl=64 time=0.072 ms
^C
--- 192.168.42.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.072/0.076/0.085/0.009 ms
# Aucun paquet perdu : votre ordinateur se ping bien !
ping 192.168.42.2
(TODO)
# Aucun paquet perdu : votre ordinateur communique sans mal avec l’autre
ping 192.168.42.3
PING 192.168.42.3 (192.168.42.3) 56(84) bytes of data.
From 192.168.42.1 icmp_seq=1 Destination Host Unreachable
From 192.168.42.1 icmp_seq=2 Destination Host Unreachable
From 192.168.42.1 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.42.3 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3018ms
pipe 3
# 100 % de paquets perdus : normal, cette adresse IP n’est pas utilisée…
Eh bien voilà, vous avez un réseau ! À vous maintenant de le rendre intéressant… Je vous laisse chercher par vous-même comment installer un serveur Web, un serveur IRC, un serveur Tetrinet, etc… Il restera ensuite à annoncer à ceux qui se connectent au réseau quels serveurs sont disponibles sur quelles machines ! La suite de ce document liste quelques possibilités pour rendre l’utilisation de votre réseau plus simple et pratique.
Mise en place d’un serveur DHCP
Un réseau construit en ne suivant que la partie précédente présente quelques inconvénients majeurs. Un des plus basique est la nécessité d’une autorité (personne réelle) centrale qui attribue des adresses IP à chaque poste qui veut se connecter, ce qui implique que chaque personne voulant se relier au réseau doit contacter une personne, et que celle-ci retienne quelle adresse elle a attribué à qui. Un serveur DHCP permet, entre autres, d’automatiser ce processus.
Survol du DHCP
DHCP (pour Dynamic Host Configuration Protocol) est le nom d’un protocole servant, comme son nom l’indique, à configurer automatiquement un hôte voulant se connecter au réseau. Généralement, un serveur DHCP attribue aux hôtes au minimum une adresse IP et un masque de réseau, mais il peut aussi diffuser l’adresse de la passerelle par défaut (voir la partie Ponts (routeurs) entre deux réseaux), ou l’adresse des serveurs DNS.
Ce processus automatique libère l’administrateur réseau d’une lourde charge de travail (surtout pour les réseaux qui changent souvent) mais aussi est bien plus fiable : ce travail manuel digne d’une fourmi, un peu comme les calculs arithmétiques, est effectué la quasi-totalité du temps sans erreur par un ordinateur, au contraire d’un humain. Les ordinateurs configurés à la mains sont dits configurés statiquement (ils ont des adresses IP statiques) tandis que les ordinateurs configurés par DHCP sont dits configurés dynamiquement (ils ont des adresses IP dynamiques).
Ce protocole prévoit au sein d’un même segment de réseau (ce qui est équivalent au réseau Ad-Hoc tout entier dans notre cas) un ordinateur tout le temps disponible faisant tourner un serveur DHCP. Cet ordinateur est supposé configuré statiquement tandis que le programme serveur est configuré pour attribuer aux hôtes se connectant les adresses IP d’une certaine plage. Il est possible de faire cohabiter des hôtes configurés statiquement et d’autres configurés dynamiquement, la seule condition étant que les hôtes ayant des adresses statiques n’empruntent pas d’adresse que le serveur DHCP est censé distribuer. Bien sûr, si jamais le serveur est inaccessible, les hôtes configurés dynamiquement ne peuvent plus se connecter au réseau, ce serveur doit donc être très disponible.
Voici globalement le déroulement de l’interaction entre un serveur et un client DHCP :
- le client (n’ayant pas encore d’adresse IP) envoie par diffusion (le
fameux broadcast) une requête au serveur DHCP (
DHCP DISCOVER
) ; - le serveur reçoit la requête et fait une ou plusieurs propositions
d’adresse IP au client (
DHCP OFFER
) ; - le client reçoit les propositions, en choisit une, et la demande au
serveur (
DHCP REQUEST
) ; - le serveur reçoit la demande et renvoie au client sa nouvelle adresse
ainsi que son masque de réseau, la durée de validité de ce bail et
éventuellement d’autres paramètres (
DHCP ACK
) ; - le client prend en compte les paramètres reçus et est configuré, youpi !.
Pour les curieux : :
Le serveur DHCP peut répondre au client uniquement (c’est-à-dire sans broadcast) même si ce dernier n’a pas encore d’adresse IP propre en utilisant l’adresse physique (adresse MAC) que le client lui a donné. Pour un paquet allant du serveur au client, l’adresse IP de destination est alors
0.0.0.0
.Si le serveur DHCP est hors d’atteinte du client (les routeurs, par exemple, bloquent les messages de diffusion), alors il est possible d’installer un relai DHCP « du côté » du client. Ce relai est configuré statiquement et connait l’adresse IP du serveur : ainsi, il peut contourner la limitation en broadcast du routeur en communiquant au serveur en unicast. Son travail n’est alors que de transmettre les requettes DHCP du client au serveur, et les réponses DHCP du serveur au client.
Installation d’un serveur DHCP sous Debian
Attention ! N’oubliez pas de désactiver votre serveur DHCP quand vous vous connectez à un réseau qui n’est pas le vôtre : vous perturberiez la configuration de celui-ci ! Personnellement, j’ai désactivé la mise en marche du serveur DHCP sur ma machine afin de ne l’activer que quand je crée mon réseau.
Passons à l’installation : munissez-vous de votre shell favori en
superutilisateur (root
) pour saisir la commande :
aptitude install dhcp3-server
Puis répondez aux questions qui vous sont posées (généralement « êtes-vous
sûr de […] »). Une fois le(s) paquet(s) installé(s), il reste à configurer le
serveur. Pour cela, il suffit d’éditer, voire de créer le fichier
/etc/dhcp/dhcpd.conf
. Ici, pour l’exemple, je suppose que votre
serveur DHCP est sur la machine 192.168.42.1/24
, qu’il distribue
des adresses dans l’intervalle 192.168.42.20
à
192.168.42.254
(comprises), et que la passerelle par défaut est
192.168.42.2
.
# Configuration du serveur/service DHCPd
# pour votre réseau (Ad-Hoc ?) local
# Serveurs DNS (ici, OpenDNS ; facultatif) :
# Cette entrée n’est utile que lorsque votre réseau est relié à Internet.
# La liste des serveurs séparés par des virgules (en général : un serveur
# primaire et un serveur secondaire)
option domain-name-servers 208.67.222.222, 208.67.220.220;
# Masque de réseau puis adresse de diffusion (nécessaires)
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.42.255;
# Temps de renouvellement d’un bail par défaut puis durée maximale d’un bail
# (nécessaires)
default-lease-time 3600;
max-lease-time 7200;
# Un serveur DHCP peut s’occuper de plusieurs « sous-réseaux ».
# Le cas qui nous intéresse ici : le serveur s’occupe de tout le réseau :
# on indique donc l’adresse du réseau entier et son masque de réseau
subnet 192.168.42.0 netmask 255.255.255.0
{
# Intervalle des adresses IP que le serveur doit distribuer (nécessaire)
range 192.168.42.20 192.168.42.254;
# Passerelle par défaut (facultatif)
option routers 192.168.42.2;
# Si vous voulez que certains hôtes — en plus de votre serveur DHCP, donc —
aient une adresse IP fixe, relevez leur adresse MAC. Le nom d’hôte (ici
monrouteur) est arbitraire. Bien sûr, les adresses IP fixes doivent
être host de l’intervalle des adresses IP distribuées dynamiquement.
host monrouteur {
# Adresse MAC
hardware ethernet 12:34:56:78:90:AB;
# Adresse IP attribuée
fixed-address 192.168.42.2;
}
# Mode autoritaire : ce serveur DHCP est le seul de votre réseau
authoritative;
}
Après avoir enregistré le fichier de configuration, il ne reste plus qu’à redémarrer le serveur DHCP :
service isc-dhcp-server restart
Configuration des clients DHCP avec Network Manager
Dans la configuration des hôtes avec Network Manager plus haut, on attribue des adresse IP statiques. Si un serveur DHCP est installé sur le réseau, il est toujours possible d’utiliser des adresses IP fixes comme indiqué plus haut du moment qu’on reste hors de l’intervalle gérée par le serveur DHCP. En revanche, se connecter à un réseau muni d’un serveur DHCP est bien plus simple ! Il existe deux possibilités : soit on s’y connecte depuis la première fois, soit on s’y est déjà connecté étant configuré avec une adresse IP fixe.
Occupons-nous d’abord du cas le plus simple (celui qui intéressera tous les nouveaux connectés au réseau). Il est nécessaire et suffisant que vous soyez à portée du réseau Ad-Hoc (et en particulier à portée de son serveur DHCP). Faites un clic droit sur l’icône de Network Manager : celui-ci vous liste dans un menu les SSIDs des réseaux que vous captez. Cliquez sur le réseau Ad-Hoc qui vous intéresse… et attendez que la magie opère ! Si la connexion est réussie (et si le serveur DHCP et opérationnel et que votre carte Wifi est dans de bonnes conditions, c’est ce qui devrait se passer), il n’y a plus rien à faire. En effet, Network Manager tente par défaut de se configurer avec un serveur DHCP.
Dans le cas où vous vous êtes déjà connecté au réseau, mais en configuration statique, reprenez l’éditeur de configuration de Network Manager, éditez le réseau voulu, puis dans la fenêtre de configuration, onglet « Paramètres IPv4 », choisissez l’option « Automatique » du menu « Méthode ». Enfin, retentez de vous connecter au réseau sans-fil de la manière que vous voulez.
Relier des réseaux entre eux
À cause de la portée des cartes Wifi ou pour toute autre raison, on peut se retrouver obligé de scinder un réseau Ad-Hoc en deux. On a alors plusieurs réseaux, voisins certes, mais isolés. Cette partie indique comment mettre ceux-ci en contact, c’est-à-dire comment permettre aux hôtes des deux réseaux de communiquer entre eux.
Réseaux indépendants ?
Notre but étant de relier au moins deux réseaux, il faut savoir qu’à partir du moment où les réseaux utilisent le protocole IP, il y a forcément un moyen de les relier, qu’ils soient en Ethernet, en Wifi, ou autre… Après, les relier est un terme vague. J’entends ici par « relier » faire en sorte que chaque ordinateur d’un réseau puisse initier (et mener à terme) un échange avec n’importe quel ordinateur d’un autre réseau, de la même manière que si ces deux hôtes étaient dans le même réseau. C’est en quelque sorte « étendre » ce dernier. C’est d’ailleurs de cette manière qu’Internet est construit : on relie plusieurs réseaux pour en former un plus grand.
La condition la plus basique est simple (et on l’a déjà évoquée) : si relier des réseaux forment un nouveau réseau, alors il faut que les IP ne soient pas utilisées plusieurs fois simultanément : une IP ne correspond qu’à un seul ordinateur à un instant donné.
La deuxième condition est tout simplement de devoir placer un ordinateur en périphérie de plusieurs réseaux, constituant un pont entre ceux-ci : ce sont les fameux routeurs. Concrètement, on munit un ordinateur d’autant de cartes réseaux que de réseaux à relier, et on le configure « comme il faut », puis vient la configuration de tous les hôtes afin de leur faire tenir compte de ce pont.
Un routeur est un point de contact entre plusieurs réseaux, et est matériellement un hôte partout où il est présent : il a ses propres adresses IP, précisément une (différente) par réseau. Il transfère les paquets provenant d’un réseau à destination d’un autre réseau.
Introduction au routage
Tout d’abord : qu’est-ce que le routage ? La réponse est simple : c’est l’ensemble des mécanismes qui orientent un paquet IP de son expéditeur à son destinataire au sein de réseaux. Cela concerne les hôtes émetteurs et récepteurs ainsi que tous les routeurs situés aux périphéries des réseaux intermédiaires.
Pour faire rapide, l’ordinateur qui émet le paquet regarde l’adresse de destination de ce dernier. À ce moment-là, deux possibilités : soit l’hôte visé est dans le même réseau (auquel cas on lui transmet le paquet), soit à l’inverse l’hôte visé est sur un autre réseau. C’est ce dernier cas qui est le plus intéressant : l’émetteur regarde sa liste de routes, y lit quel est le meilleur routeur sur le réseau pour acheminer le paquet et enfin le lui transmet. À son tour, le routeur se comporte comme un émetteur, pour transmettre à l’hôte directement si possible ou pour transmettre le paquet à un autre routeur, et ainsi de suite. Il y a plusieurs choses à retenir :
- Pour tous les intermédaires, la seule information utile au routage est l’adresse IP de destination du paquet. L’adresse IP de l’expéditeur est aussi renseignée dans le paquet, mais elle ne sert qu’à l’hôte recevant le paquet : elle lui permet de répondre.
- Ce système fonctionne même si les routeurs ne connaissent pas la structure globale du réseau. En effet, il leur suffit de savoir dans quel réseau il est et où retransmettre le paquet pour tel ou tel réseau ; ensuite, s’adresser aux bons intermédiaires est suffisant.
J’ai parlé de route sans définir ce que c’était, mais on peut en
avoir une idée avec l’explication précédente. Une route consiste à dire « pour
envoyer les paquets vers tel réseau, il suffit de transmettre le paquet à tel
routeur ». La liste des routes (table de routage IP, en général
intégrée dans le noyau) est accessible sous Unix avec la commande
route
(en superutilisateur). Ces routes se présentent sous la
forme : Destination, Passerelle, Masque de réseau (ces champs sont représentés
par des IP) ainsi que d’autres informations additionnelles (comme l’interface
réseau utilisée, le nombre de routeurs intermédiaires, …).
L’association de « Destination » et de « Masque de réseau » permet de
déterminer le réseau concerné (c’est-à-dire l’intervalle d’IP que
cette route permet d’atteindre) tandis que « Passerelle » désigne l’IP du
routeur à qui transmettre le paquet. Il faut bien sûr que ce routeur soit
directement accessible, sans intermédiaire. Si « Passerelle » vaut
0.0.0.0
, cela signifie que l’hôte est sur le même réseau,
directement accessible, sans routeur intermédiaire.
Une route particulière (pas toujours présente) s’appelle la route par
défaut. L’adresse IP « Destination » est 0.0.0.0
et le masque
est 0.0.0.0
, ce qui veut dire que cette route permet d’atteindre
n’importe quel hôte (toutes les adresses IP sont atteignables). C’est la route
qui relie généralement les ordinateurs en périphérie d’Internet (c’est-à-dire
M. Toutlemonde) ; le masque 0.0.0.0
montre qu’ils perçoivent
Internet comme un seul réseau comportant toutes les adresse IP. Dans ce cas, la
passerelle est naturellement appelée la passerelle par défaut.
Les routes sont généralement classées. Les routes les plus précises, les plus spécifiques (c’est-à-dire vers de petits réseaux) sont généralement au début de la table de routage, tandis que les routes concernant les gros réseaux sont plutôt vers la fin. Ainsi, la route par défaut est théoriquement la dernière de la liste, ce qui est logique : c’est la route la plus générale, la moins spécifique, vers le plus gros des réseaux.
Un hôte voulant transmettre un paquet consultera donc sa liste de routes dans l’ordre : si cette liste ne contient pas de route spécifique vers le réseau voulu, l’hôte cherchera des routes de moins en moins « précises », jusqu’à arriver à la route par défaut. Si aucune route ne convient et s’il n’y a pas de route par défaut, le paquet est jeté, et une notification est envoyée à l’émetteur du paquet pour le prévenir.
Un exemple ne sera pas de trop pour faire passer le morceau. ;-) Je vais
reprendre la stucture du réseau d’exemple de la section précédente, ajouter un
réseau, et munir le routeur central ainsi que l’ordinateur émetteur de tables
de routage (mis à part pour le router, je ne précise pas à quelle interface
réseau correspond la route, puisqu’il n’y a qu’une seule interface). On voudra
dans un premier temps regarder comment un paquet transite de
172.16.0.3
à 172.16.1.2
, puis de
10.42.42.69
à 172.168.0.3
.
Un seul routeur fait ici le lien entre quatre réseaux :
172.16.0.0/24
où le routeur a l’adresse IP172.16.0.4
(interface réseaueth0
) ;172.16.1.0/24
où le routeur a l’adresse IP172.16.1.1
(interface réseauwlan0
) ;172.16.2.0/24
où le routeur a l’adresse IP172.16.2.1
(interface réseaueth1
) ;10.0.0.0/8
où le routeur a l’adresse IP10.11.12.13
(interface réseaueth2
).
Table de routage de 172.16.0.3 | ||||
---|---|---|---|---|
Route no | Destination | Passerelle | Masque de réseau | |
1 | 172.16.0.0 | 0.0.0.0 | 255.255.255.0 | |
2 | 172.16.0.0 | 172.16.0.4 | 255.255.252.0 | |
3 | 10.0.0.0 | 172.16.0.4 | 255.0.0.0 | |
Table de routage de 10.42.42.69 | ||||
Route no | Destination | Passerelle | Masque de réseau | |
1 | 10.0.0.0 | 0.0.0.0 | 255.0.0.0 | |
2 | 172.16.0.0 | 10.11.12.13 | 255.255.252.0 | |
Table de routage du routeur | ||||
Route no | Destination | Passerelle | Masque de réseau | Interface |
1 | 172.16.0.0 | 0.0.0.0 | 255.255.255.0 | eth0 |
2 | 172.16.1.0 | 0.0.0.0 | 255.255.255.0 | wlan0 |
3 | 172.16.2.0 | 0.0.0.0 | 255.255.255.0 | eth1 |
4 | 10.0.0.0 | 0.0.0.0 | 255.0.0.0 | eth2 |
Dans la table de routage de l’hôte 172.16.0.3
, on voit bien que
la route 1 pourrait être supprimée, les paquets arriveraient bien à destination
grâce à la route 2 : la route 1 est plus spécifique que la route 2 (regardez
attentivement les masques). Cependant, la route 1 permet de ne pas passer par
le routeur, ce qui est bien plus efficace (et accessoirement soulage le routeur
d’un trafic inutile).
Pour notre premier trajet, suivons un paquet IP émis par
172.16.0.3
à destination de 172.16.1.2
. C’est cette
dernière adresse que nous allons utiliser pour faire le routage :
Parcourons dans un premier temps la table de routage de notre hôte de départ,
172.16.0.3
. La route 1 ne peut pas être utilisée étant donné que l’adresse IP172.16.1.2
n’appartient pas au réseau172.16.0.0/255.255.255.0
. En revanche, c’est le cas de la route 2 : notre adresse de destination appartient au réseau172.16.0.0/255.255.252.0
. On transmet donc le paquet à la passerelle de la route 2 :172.16.0.4
…Notre routeur reçoit le paquet et se met à son tour à parourir sa table de routage. Par le même processus, la route 1 est écartée, tandis que la route 2 prend en charge un réseau dont
172.16.1.2
fait partie. Cette route 2 indique que le trajet est direct : la passerelle est0.0.0.0
, signifiant que le réseau est accessible sans routeur intermédiaire. Notre routeur transmet donc le paquet directement à172.16.1.2
par l’interfacewlan0
.L’hôte
172.16.1.2
reçoit un paquet IP qui lui est destiné. Notre paquet a bien été routé : le tour est joué !
Intéressons-nous maintenant au trajet du paquet allant de
10.42.42.69
à 192.168.0.3
:
Le paquet est créé sur
10.42.42.69
, il faut parcourir sa table de routage : la route 1 ne correspond pas au réseau de destination, mais c’est le cas pour la route 2. Celle-ci amène à la passerelle10.11.12.13
, on transmet donc directement le paquet à ce routeur.Le routeur reçoit un paquet dont la destination est
192.168.0.3
. Il consulte lui aussi sa table de routage : la première route convient ! Cette route permet d’accèder directement au destinataire du paquet : on transmet donc directement celui-ci sur l’interfaceeth0
.L’ordinateur
172.16.0.3
reçoit un paquet IP qui lui est adressé : mission accomplie !
On est maintenant en mesure de remarquer ceci : si l’on rajoute un nouveau
réseau, mettons 192.168.0.0/24
, il est nécessaire de reconfigurer
l’ensemble des hôtes (routeurs compris). En effet, aucune route ne couvre pour
le moment ce réseau. Cependant, si tous les hôtes (routeurs non compris) ont
une passerelle par défaut, alors il suffit de reconfigurer les routeurs
seulement : les hôtes enverrons les paquets à destination de ce nouveau réseau
à leur passerelle par défaut (un routeur, donc), et celui-ci saura comment les
router.
Cette solution peut être satisfaisante, mais si le trafic est intense dans votre réseau, et que chaque réseau a accès à plusieurs routeurs (c’est-à-dire que votre réseau est bien maillé, n’est pas en forme d’étoile), il peut être intéressant de répartir le trafic en configurant les routes finement tel que les routes empruntées soient toujours les plus courtes. Pour faire une analogie, si on dit à tout le monde de passer par Paris, pour ensuite rediriger tout le monde suivant la distination, il va y avoir beaucoup de trafic à Paris, et le jour où il y aura un accident ou des embouteillages, plus rien ne fonctionnera. Toute la difficulté est alors de renseigner des panneaux un peu partout en France pour prendre le chemin le plus court (et de tenir ces informations à jour !), de sorte qu’un accident ne sera gênant que localement. On dit dans ce dernier cas que le réseau est acentré : il n’y a pas de centre, tous les nœuds sont autonomes.
Notez au passage que des programmes destinés à créer des routes en fonction du voisinnage, puis de les annoncer aux autres routeurs à travers le réseau existent. Ces programmes utilisent le vieux protocole RIP (Routing Information Protocol) ou le plus récent OSPF (Open Short Path First). Comme les routes varient et sont générées automatiquement, on parle de routage dynamique par opposition au routage statique.
Configuration d’un routeur
La configuration d’un routeur simple se fait en deux parties (après bien sûr
avoir configuré les interfaces réseau) : paramétrer les routes avec
l’utilitaire route
, puis configurer le pare-feu Netfilter avec
l’utilitaire iptables
(tous les deux avec les droits
d’administrateur). Dans le cas de notre réseau Ad-hoc, il faut forcément en
guise de routeur un ordinateur qui puisse se connecter au minimum à deux
réseaux. Cet ordinateur a donc deux cartes réseau. Soit il a deux interfaces
Wifi, auquel cas il ne reste qu’à configurer le routage proprement dit, soit
vous avez deux ordinateurs, chacun ayant une carte Wifi et une carte
Ethernet.
Configuration des autres postes
Deux possibilités : soit paramétrer chaque poste avec des routes bien spécifiques, soit s’appuyer sur le serveur DHCP pour utiliser des routes par défaut sur tous les postes.
Pistes pour perfectionner
Il existe mille et une manière de peaufiner, d’améliorer, de rajouter, … Cette partie en donne quelques pistes qui peuvent être intéressantes dans notre contexte. La section suivante liste des liens vers des documentations utiles pour aller plus loin.
Partager une connexion Internet
Cette amélioration semble assez simple sur le plan technique, mais peut poser quelques problèmes niveau responsabilité. Il s’agit en fait de créer des routes par défaut pour tous les hôtes pour qu’au bout du chemin un routeur connecté au Wifi de l’école (par exemple) fasse du NAT (Network Address Translating). Il fait ainsi passer l’ensemble de votre réseau Ad-Hoc pour lui-même aux yeux du PIE.
La solution du NAT est nécessaire puisque le Wifi n’a aucune route pour votre réseau Ad-Hoc. Et c’est justement la faiblesse de l’opération : si des gens utilisent votre connexion à mauvais escient, vous en êtes responsable, puisque ça vient de votre connexion !
Augmenter la portée d’un réseau Wifi Ad-Hoc
Il existe des projets qui permettent de configurer automatiquement la table de routage en fonction des hôtes voisins dans un réseau Ad-Hoc (c’est du routage dynamique). Ainsi, si un ordinateur A du réseau est hors de portée de l’ordinateur B, mais que l’ordinateur C capte les deux ordinateurs, alors un paquet devant aller de A à B transite par la passerelle C et arrive à destination. Il faut pour cela faire l’installation et la configuration sur tous les postes.
Annoncer les services réseau avec ZeroConf
ZeroConf (pour Zero Configuration Networking) est un ensemble de
protocoles conçus par Apple. Comme son nom l’indique, ZeroConf permet aux
ordinateurs en réseau d’annoncer les services qu’ils mettent à disposition
(comme un serveur Web, une imprimante, …) de manière à ce que chaque client
ZeroConf sur le réseau puisse découvrir les services à disposition (Service
discovery). ZeroConf permet aussi, au sein d’un même réseau seulement,
d’utiliser des noms de domaine sans serveur DNS : si votre ordinateur s’appelle
gudul
, alors les ordinateurs utilisant ZeroConf peuvent obtenir
son adresse IP à partir du nom de domaine gudul.local.
, ce qui est
fort pratique. Une autre possibilité offerte par ZeroConf est, dans un réseau
local sans serveur DHCP de s’attribuer une adresse IP dans le réseau
169.254.0.0/16
.
Bien sûr, pour profiter des avantages de ZeroConf, il faut installer le nécessaire sur son poste. Bonjour (anciennement appelé Rendez-vous) est le nom de l’implémentation de ZeroConf sur Mac OS X, présente à partir de Léopard, il me semble (ou alors Tiger). Sous GNU/Linux et les BSD (dont Mac OS X), l’implémentation s’appelle Avahi et est installée par défaut sur les distributions « grand public », tandis que sous Windows, ça n’a pas l’air très simple…
Il faut savoir que l’utilisation de ZeroConf sur un réseau est un plus : c’est en soi un nouveau service (qui permet d’en découvrir d’autres), mais il n’est en rien indispensable. Les hôtes qui ne supportent pas ce protocole pourront tout de même utiliser le réseau, sans toutefois profiter des avantages de ZeroConf. Notez bien aussi que ce protocole se base massivement sur du multicast. Cela risque donc de ne pas passer certains routeurs suivant leur configuration (dans le cas où votre réseau est fragmenté). De plus, cela engendre un trafic réseau plus important, ce n’est donc pas très courtois de l’utiliser sur un réseau sans autorisation de son propriétaire/administrateur. Mais dans le cas d’un réseau Ad-Hoc c’est tout à fait adapté. :-)
Ressources externes
Pour les curieux, il peut être intéressant de revoir en profondeur les notions abordées ici : d’autres documents le permettent depuis pas mal de temps ; j’en liste quelques uns.
Documentation sur le réseau
- [Linux-france.org] Tutoriel sur les serveurs : documentation très complète de la mise en place de la connexion Internet à l’installation d’un serveur sous Debian Gnu/Linux (guide et explications techniques)
- [NBS System.com] Howto Iptables / Netfilter : guide et explications techiques sur le pare-feu Netfilter sous Gnu/Linux
- [Elivieraj.free.fr] Firewall et sécurité d’un réseau personnel sous Linux
- [Vanaryon.eu] Ubuntu Server : introduction : petit guide sur l’installation des services les plus courants pour Ubuntu (devrait être valable pour toute dérivée de Debian)
Documentation sur le Wifi
- [fr.Wikipédia] Routage AdHoc : quelques pistes vers des protocoles spécialisés dans le routage de réseaux Ad-Hoc. Suivre les liens amène à différents projets.
Documentation sur ZeroConf
- [Geekfault.org] ZeroConf : Réseaux IP sans configuration : horizon rapide des possibilités de Zeroconf
- [Debian.org] Wiki : ZeroConf : portail des possibilités de ZeroConf sur Debian.
- Avahi.org : site officiel du projet Avahi.
Remerciements
Un grand merci à :
- Léopold Baillard, pour sa courageuse relecture et ses précieux apports et corrections.
Créé début août 2010 et dernière mise à jour le 25 août 2010.