Contourner HADOPI pour les un peu moins nuls (partie 1) : iodine encapsulation IP over DNS

Avant de commencer, j’ai une bonne et une mauvaise nouvelle
La bonne : Création et Internet ne prévoit pas d’amendement pour interdire les requêtes DNS
La mauvaise : si vous ne comprenez pas ce qu’est une requêtes DNS, je n’expliquerais pas dans le détail ce que c’est … mais commencez par ça;
Ce billet risque de paraître un peu étrange à certains, j’espère que les autres apprécieront. Vu les possibilités offertes par cette bidouille, je ne vous dirais même pas à quoi ça peut servir, utilisez votre imagination 😉
… bon ok je vous donne un indice : « point d’accès wifi public » …

On commence par lire attentivement ceci :

http://code.kryo.se/iodine/

Nous avons deux machines une première à la maison connectée au net (pensez à ouvrir les ports qui vont bien sur votre routeur … oui le 53) sur laquelle je lance après l’avoir installé iodined, le serveur qui va récupérer nos paquets magiques

On s’occupe d’abord du serveur, on commence par installer iodine. Dans notre exemple il s’agit d’une Debian Lenny mais iodine à même l’air de tourner sur un grille pain … (si vous avez de vielles foneras dont vous ne savez que faire … ).


$ sudo apt-get install iodine

On le configure comme il se doit :

$ sudo dpkg reconfigure iodine

Donnez lui une ip et attention, il vous faut un domaine, pour notre notre exemple notre machine est hysteria.mondomaine.com
… on vous demandera aussi un password pour le tunnel (et en plus c’est secure !).

On peut maintenant lancer notre serveur :

bluetouff@hysteria:~$ sudo dpkg-reconfigure iodine
[sudo] password for bluetouff:
Opened dns0
Setting IP of dns0 to 10.0.0.1
Setting MTU of dns0 to 1024
Opened UDP socket
Listening to dns for domain monserveur.mondomaine.com
Detaching from terminal...

On s’occupe de notre Bind maintenant :

montunnel IN A xxx.xxx.xxx.xxx
tunnel1 IN NS montunnel.mondomaine.com.

Voilà, maintenant occupons nous maintenant de notre poste client (à priori un ordinateur portable puisque c’est avec cette machine que vous allez désespérément rechercher un réseau wifi). Dans notre exemple, il s’agit d’un macbook pro, pas de soucis non plus on passe par les sources :


$ wget http://code.kryo.se/iodine/iodine-0.5.1.tar.gz
$ tar -xvzf iodine-0.5.1.tar.gz
$ cd iodine-0.5.1
$ ls
CHANGELOG README-win32.txt man
Makefile TODO src
README doc tests
$ sudo make
Password:
OS is DARWIN, arch is i386
CC tun.c
CC dns.c
CC read.c
CC encoding.c
CC login.c
CC base32.c
CC base64.c
CC md5.c
CC common.c
common.c: In function ‘do_detach’:
common.c:172: warning: ‘daemon’ is deprecated (declared at /usr/include/stdlib.h:283)
CC iodine.c
LD ../bin/iodine
CC iodined.c
CC user.c
CC fw_query.c
LD ../bin/iodined

et nous voilà prêts à voir si notre tunnel fonctionne (remplacez les xxx par l’ip de votre serveur iodined)

$ cd bin
$ sudo ./iodine -v -f -u votrelogin -P votrepass xxx.xxx.xxx.xxx monserveur.mondomaine.com

Tentez maintenant un petit ping sur 10.0.0.1 si tout est ok ça devrait passer via notre petit tunnel

Comme je vous le disais plus haut, il faut cependant disposer d’un nom de domaine (ne faites donc pas n’importe quoi avec cette astuce car ça laisse quand même des traces).

Et la lumière fût ! Lancez une requête finissant par montunnel.mondomaine.com … enjoy !

En jouant sur le MTU, vous pouvez optimiser le débit de la connexion, un nom de domaine et de sous domaine le plus court possible est aussi une bonne chose à cause de l’encapsulation.