vendredi, septembre 22, 2006

WiFi pour ma carte mère

Roulement de tambour et plein feu sur les poursuites: j'ai réussi à connecter ma DS au reste du monde! Une vraie aventure ... D'abord parce que les réseaux sécurisés de l'Unif ne laissent évidemment que peu de chance à un jeu fait-maison, et également parce qu'aucun des jeux officiels que j'ai ne sont prévus pour se connecter à un portail.

Mais bon, j'avais quelques atouts:
- mon stick USB WiFi Topcom (chip zd1201), qui est merveilleusement bien reconnu par Linux (ubuntu gutsy) dès qu'on télécharge les fichiers firmware appropriés (et qu'on les installe dans /lib/firmware/),
- le concierge dont le gamin a une DS avec Mario Kart (tout à commencé par là, en fait)
- forums.gbadev.org qui m'ont pointé vers "test_wifi_lib.nds"

Donc, première étape: faire fonctionner la clé WiFi en mode "access point" plutôt que "client" ... c'est aussi simple que de charger le module avec "ap=1", ç.a.d.

sudo rmmod zd1201
sudo rmmod firmware_class
sudo modprobe zd1201 ap=1
Comme c'est un peu lourd à la longue de retirer les modules après avoir inséré la clé pour les re-charger avec le nouveau paramètre, on peut aussi éditer n'importe quel fichier dans /etc/modprobe.d pour lui ajouter
#this is in /etc/modprobe.d/wlan
options zd1201 ap=1
Ensuite, on démarre la nouvelle interface avec
sudo iwconfig wlan0 essid "gamerz"
sudo ifconfig wlan0 192.168.6.1 netmask 255.255.255.0
Ca fait bizarre de blogger ça comme ça. A ma dernière conférence, j'y connaissait encore rien à tous ces brols de WiFi, n'ayant jamais joué avec ... De nouveau, on peu règler tout ça dans un fichier de config une fois que ça marche bien:
# add this into /etc/network/interfaces
iface wlan0 inet
address 192.168.6.1
netmask 255.255.255.0
network 192.168.6.0
wireless_essid gamerz
ESSID, c'est le "nom" de notre réseau, que l'on verra dans les outils de détections ... Mettez ce que vous voulez, pourvu que ce soit original ... et évitez "tsunami", tant qu'à faire...

Bon, à ce stade-ci, on peut déjà ouvrir un ethereal et voir ce qui se passe quand une DS essaie de se connecter chez nous ... c'est à dire pas grand-chose... Elle va essayer d'obtenir une adresse IP, mais à moins qu'on ne lui en donne une, c'est rapé. donc, faisons un sudo apt-get install dhcpd (dhcpd, c'est le nom barbare du programme qui donne les adresses réseau :P), et offrons-nous un petit fichier /etc/default/dhcp:
INTERFACES="wlan0"
Seule l'interface wifi doit être listée, évidemment ... pas question de venir offrir une nouvelle adresse IP à votre routeur ADSL ^_^. Ensuite, il faut un peu de config:

# this is /etc/dhcpd.conf
option domain-name-servers 123.45.67.89;

subnet 192.168.6.0 netmask 255.255.255.0 {
option routers 192.168.6.1;
group {
host myDS {
fixed-address 192.168.6.3;
hardware ethernet 00:ca:fe:ba:be:00;
}
host friendDS {
fixed-address 192.168.6.4;
hardware ethernet 00:de:ad:be:ef:00;
}
}
}

Bon, si vous n'avez jamais ouvert le panneau de contrôle pour les cartes réseau, on est mal parti, mais rapidement, 123.45.67.89 est l'adresse de votre serveur de nom. Demandez-le gentiment à votre PC (e.g. "dig google.com", puis lisez la ligne ";;SERVER: 123.45.67.89") et utilisez le même.
192.168.6.1, ce sera l'adresse côté WiFi de votre PC, et c'est lui qui devra relayer les paquets... Les consoles DS auront par exemple les adresses 192.168.6.3 et 192.168.6.4 (oui, tous les numéros en 192.168.*, vous pouvez les reprendre tels quels)

Restent les fameuses "hardware ethernet", aussi connues sous le nom d'adresses MAC ou adresses physiques. Chaque carte réseau (sur un routeur, un PC, une DS, clé USB, etc.) a la sienne et elle est unique. Avec wifi_lib_test de Stephen Stair, il suffira de demander "DS infos", mais avec un jeu comme mario Kart DS, pas le choix: vous devez épier la source des paquets DHCP et reprendre la même valeur.

Si tout c'est bien passé, tapez

sudo /etc/init.d/dhcp3-server start

Et vous êtes prêt à donner une adresse IP à votre DS ... à ce stade, ça vaut la peine de laisser tourner "tail -f /var/log/messages" ou "tail -f /var/log/syslog.0" dans un autre terminal pour voir comment les choses se passent ...

Attention: tout ceci n'est pas sans risque: en suivant tous ces conseils, vous venez d'ouvrir une porte sur votre PC, que des hackers du voisinage pourrait bien utiliser vos dépens. Si vous tenez vraiment à continuer sur cette voie et activer le "forwarding" de paquets par le noyau Linux (et ainsi vous connecter à Internet depuis votre DS à travers votre PC), documentez-vous d'abord sur les firewalls linux, et soyez sûr de votre coup... un filtrage des adresses MAC serait un minimum, mais configurer un firewall proprement, c'est tout un art et ça dépend de votre réseau

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

Enfin, guidedog peut s'avérer bien utile pour vous aider à mettre en place le NAT sur votre PC linux ^_^

Aucun commentaire: