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 …

Salut,
je suggère d’utiliser 0.6rc1 de iodine (se compile tout seul), qui permet du udp direct (sans utiliser le protocol dns) lorsque c’est possible. Quelles perfs obtiens-tu sur du wifi? Sur de la 3G si ce n’est pas du vrai tunnel udp ce n’est pas glorieux (lire: utilisable pour ssh mais pas pour browser à moins d’être extrêmement patient).
Pour ma part sur du Neuf Wifi je tourne en moyenne à 14-20ko/s avec des pointes à 40-50ko/s suffisant pour du browsing (en évitant youtube et co.).
Côté 3G j’utilise plutôt le tether de mon G1 qui me donne des perfs similaire.
Salut,
Si je comprend bien la derniere de iodine n’a plus besoin d avoir un serveur DNS? est il possible d avoir un tuto sur comment faire sans DNS?
ca serait cool, il n t a pas grand chose sur le net
Non il faut encore un serveur DNS intermédiaire.
Bonjour,
je suis en train de mettre en place iodine mais je me demande :
Ai-je vraiment besoin de 2IP sur internet?
Est ce faisable avec un serveur iodined qui héberge aussi un serveur dns?
Je ne comprends pas trop tout le routage au niveau de iodine.
pouvez vous m’aider?
merci
Pour utiliser iodine, si l’on a une seul ip, comme on ne peut avoir qu’un seul serveur écoutant sur le port 53 (dns), il faut héberger sur sa machine iodine, et il faut alors utiliser des services du style xname.org pour gérer le DNS.
Sinon, il faut 2 IP, et dans ce cas, jouer sur les binds
je possède un compte dyndns pour récupérer mon IP et pfsense pour faire du nat si besoin.
Derrière pfsense un serveur pour iodine .Cette infrastructure est-elle suffisante?
Oui, cette infrastructure est suffisante, tant que le port 53 est libre pour iodine.
il l’est.
dans cet environnement xname est obligatoire?
XName est plus ou moins équivalent à dyndns, mais est plus fait pour gérer son nom de domaine (nécessite une IP fixe).
XName n’est pas obligatoire dans cet environnement.
ok je sais tout maintenant.
Je vais m’essayer je reviens vers vous en cas de problème.
merci
me revoila
Je viens de faire pas mal de test mais je n’arrive pas a me connecter a iodine sur le port 53 depuis internet.
La configuration decrite dans le manuel iodine en local fonctionne tres bien part contre.
pour ce qui est d’internet j’utilise dyndns puis un nat du port 53 sur mon serveur iodine mais je n’arrive pas a me connecter.
auriez vous une idée?
Si la configuration fonctionne correctement en local, et que les problèmes apparaissent uniquement sur internet, je penche plutôt pour un problème de redirection de port (vérifier le routeur). Pour ma part, je n’ai utilisé ce logiciel que sur mon serveur, donc je ne sais pas trop la configuration a utiliser sur un réseau local, mais si la redirection de port (TCP et UDP) est effectué, il ne devrait y avoir aucun probleme.
Vous disiez utiliser dyndns (je n’avais pas réellement réfléchi au type de redirection que fournit ce service) … en fait, je crois pas que ça puisse fonctionner avec ce système (à vérifier dans les options de configuration de dyndns), car il faut être déclaré « serveur de nom » (NS) dans la configuration du nom de domaine, ce qui n’est pas le cas avec ces services. (Cela dit, il faudrait vérifier sur le site du service, ma dernière expérience dyndns remonte à 4 ans donc, il est possible qu’ils fournissent des redirections de type NS).
ça peut peut-être fonctionner en utilisant ce qu’ils appellent des « wildcards » (à vérifier, si c’est du NS ça passe, mais si c’est du A en *, ça ne marchera pas je pense).
je vais verifier dyndns merci.
mon nat est bon pas de soucis au niveau du routeur.je vous tiens au courant.
je viens de verifier sur dyndns et tu avais raison.
.
Je n’ai pas de « zone services » = nom de domaine a mon nom je n’utilise que l’option » hostname » qui ne fournit pas la redirection NS, je ne peux donc pas utiliser dyndns gratuitement pour faire tourner iodine.Faut -il que je me tourne vers xname? que je ne connais pas
Le but étant de le faire tourner iodine gratuitement.
Pour utiliser xname, il faut un nom de domaine (un .info côute 1 à 2€ par an chez 1and1), et une ip fixe (avec une ip dynamique, il faudrait utiliser dyndns avec un CNAME dessus, mais comme il n’y a pas de ns … :s).
mince alors avec mon ip dynamique je n’ai aucune chance de faire tourner iodine a la maison si je comprends bien
Malheureusement, je pense pas que ce soit possible dans ce cas là :s
alala ca me plaisait bien ce petit truc.
je suis dégouté
En plus ca allais servir
Bonjour,
je reviens vers toi, je viens de souscrire a freeDNS qui me permet apparemment d’avoir un A en dynamique et d’avoir en plus un NS.
Mais je n’ai pas réussi a le faire fonctionner.
Penses tu que c’est possible avec ce service?
DSL pour le retard ^^. Tant que le NS est dispo, c’est possible
Pas de problème et bien je n’ai pas réussi !!
Penses tu avoir le temps de tenter?
Salut,
Je viens de remarquer que dans ton cas, il était possible avec dyndns de faire fonctionner iodine (comme ils fournissent un ndd qui est utilisable en CNAME, il aurait juste fallut mettre le tunnel.ndd IN NS le.nom.fournit.par.dyndns).
Sinon, je ne connais pas freeDNS, mais tant que ton NS pointe sur ton IP, ou un CNAME qui pointe ton ip ça devrait fonctionner.
Si ça ne marche toujours pas, vérifie bien ton nat et ton fw. (tu peux utiliser le logiciel dig depuis une machine externe à ton réseau pour faire des requêtes DNS sur ton serveur iodine, et vérifier qu’il fonctionne).
Sinon les deux scripts (ozymandns et dnstunnel) fournit plus haut font l’équivalent de iodine en plus simple (qui peuvent servir au moins à tester si la config dns/nat/fw est bonne).
Salut les hasard,vous êtes encore là? j’ai besoin de votre aide