Ad-hoc sous Linux

« Mille million de mille sabords ! Où elle est la touche Éniki ? » Ha non, c’est pas ça, pardon. Le but de cet article est de vous décrire très rapidement le fonctionnement d’un réseau wifi ad-hoc sous Linux. Pour rappel, un réseau ad-hoc est un réseau décentralisé entre ordinateurs (deux ou plusieurs), à l’inverse du mode infrastructure, qui dispose d’un point d’accès central. Le réseau ad-hoc est donc parfait pour mettre en place très rapidement un petit réseau wifi entre quelques machines. Son inconvénient est cependant la vitesse de connexion, limitée à 11 Mbps.

Les étapes pour mettre en place un tel réseau sous Linux est très simple : sur les deux machines, il suffit de taper les commandes suivantes :

ifconfig wlan0 down
iwconfig wlan0 essid pouet key s:abcde
ifconfig wlan0 13.37.0.1

Bien sûr il ne faut pas prendre ces instructions totalement à la lettre : il vous faudra personnaliser le essid ainsi que la clé (voire ne mettre aucune clé en mettant key off, mais c’est déconseillé). Le nom de l’interface wifi est aussi à personnaliser (de temps en temps ca peut être wlan1, eth1, ath0… selon les pilotes wifi). Enfin, l’adresse IP est à changer également : deux ordinateurs sur le même réseau ne peuvent pas avoir la même, vous devez donc changer le dernier nombre.

Une fois cette étape de faite, vous devez d’abord tester le réseau en effectuant un simple ping de l’adresse IP de l’autre machine. Si tout fonctionne, alors vous pouvez continuer, sinon recommencez, vous avez dû vous tromper. Vérifiez notamment que les paramètrs renvoyés par ifconfig wlan0 et iwconfig wlan0 sont corrects.

Votre wifi est bon ? Alors vous pouvez commencer à communiquer ensemble, par exemple transférer des fichiers par ftp ou scp, utiliser la machine à distance avec ssh, jouer en réseau, ou que sais-je… Et si en plus, imaginons qu’une machine dispose d’Internet sur le réseau filaire et que vous vouliez le partager entre toutes les machines, voici la marche à suivre :

Sur la machine qui a Internet, il suffit de taper (en root bien sûr) :

echo 1 > /proc/sys/net/ipv4/ip_foward
iptabes -t nat -a POSTROUTING -o eth0 -j MASQUERADE

Changer évidemment le nom de l’interface réseau eth0 par le nom de l’interface qui a Internet. Dans un article précédent, je monte la différence entre MASQUERADE et SNAT, et, même si SNAT a des avantages, pour un partage ponctuel de la connexion, un MASQUERADE est aussi efficace. Si vous vous sentez d’utiliser SNAT, lisez l’article précédent.

Ensuite, sur chaque machine qui doit accéder au Net, voici les commandes à taper :

route add default gw 13.37.0.1
echo nameserver 4.2.2.2 > /etc/resolv.conf

Là encore, il faut personnaliser les adresses IP : d’abord celle de la passerelle (qui est l’adresse IP du wifi de la machine qui partage Internet) et l’adresse IP du DNS, ici une adresse de Level3 mais vous avez aussi Google avec 8.8.8.8 ou OpenDNS avec 208.67.222.222, ou tout autre DNS de votre choix. Pour chaque machine, testez la connectivité au net en faisant un ping de l’adresse du DNS, et si ca marche d’une adresse telle que google.fr. Si ça ne fonctionne pas, vérifiez bien les tables de routage, les pare-feu, et testez le réseau pas à pas pour bien voir où ça bloque (utilisez tcpdump ou tout autre sniffer ethernet s’il le faut).

Et si malgré toutes ces explications vous n’y arrivez toujours pas, alors retournez à l’école maternelle de Linux, car je ne pourrai rien faire pour vous…