Iodine et DNS Tunneling

Plop à tous …

Aujourd’hui, encore du DNS Tunneling … et cette fois avec iodine, un soft écrit en C, beaucoup plus puissant que les autres scripts en perl comme dnstunnel et ozymandns que j’ai présenté sur mon blog, qui permet des connexions en parallèles, ce qui permet un chargement plus rapide des pages web, par contre, comme ça utilise le protocole DNS, le débit peut seulement aller jusqu’à 20-30 ko/s donc c’est assez limité.
Mais ça permet d’utiliser la plupart des bornes d’accès ouvert de type Neuf Wifi/FreeWifi qui force l’utilisation de leurs services pour utiliser la borne wifi sans avoir à fournir de couple login/pass valide ^^.

Comme pour les 2 autres systèmes de dns tunneling présenté, il vous faut un serveur extérieur avec un serveur DNS (cf la config présenté ici) et le logiciel iodine :

Sur le serveur donc (en utilisant la config DNS de l’autre lien) :

apt-get install iodine
iodined 172.16.0.0 -l votreIP -u nobody -P UnMotDePasse tunnel.domaine.org

172.16.0.0 est la plage IP qui sera fournit par le soft (on peut prendre 10.x.x.x ou 192.168.x.x)
le -l est là pour spécifier l’ip sur laquelle écouter
le -u est là pour dropper les droits
-P est là pour spécifier un mot de passe (histoire d’empecher les autres de profiter de ce service)
tunnel.domaine.org, et le nom du sous domaine en NS qui sera utilisé.

Sur le client :

apt-get install iodine
iodine -P UnMotDePasse tunnel.domaine.org

Et normalement on est connecté … le seul problème, c’est que le soft ne spécifie aucune route à part celle de son réseau, il faut donc les spécifier :

route del default
route -host ipDuDNSFournitParLaBorne gw ipDuGatewayFournitParLaBorne
route add default gw 172.16.0.1

Ce qui supprime la route par défaut, force l’utilisation du gateway fournit par la borne pour l’accès au serveur DNS, puis route tout le traffic restant sur le gateway du tunnel …

Le gros problème est de faire cette manipulation à chaque connexion à un réseau wifi, j’ai donc fait un script pour automatiser ça en détectant le DNS et le Gateway fournit, puis en effectuant les remplacements et qui remet tout en place une fois que l’on termine la connexion :

#!/bin/bash

IOBIN="/usr/sbin/iodine"
IODOM="tunnel.domaine.org"
IOPAS="UnMotDePasse"
IOMTU="1188"
IODEV="dns0"
IOIP="172.16.0.1"

#FIN EDITION

DNS=`cat /etc/resolv.conf |egrep -v "^#"| head -1|awk '{print $2}'`
GW=`netstat -rn|egrep "^0.0.0.0"|tr -s " " " "|cut -d " " -f2` 
echo "Lancement de $IOBIN avec les options demandées"
$IOBIN -P $IOPAS -m $IOMTU $IODOM

echo "Remplacement des routes"
route del default
route add -host $DNS gw $GW
route add default gw $IOIP $IODEV
echo "***********************************"
echo "Appuyer sur une touche pour terminer la connexion"
read yornot 
killall -9 $IOBIN
echo "Remise en place des routes"
#route del default
route del -host $DNS
route add default gw $GW

Il suffit ensuite de le configurer avec vos options et de l’executer en root pour profiter des bornes wifi gratos … Bien sûr la seule utilitée de cette méthode est de se connecter rapidement au net au détriment du débit que l’on aurait après avoir cracké une borne wifi WEP/WPA …