<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geekfault &#187; hotspot</title>
	<atom:link href="http://geekfault.org/tag/hotspot/feed/" rel="self" type="application/rss+xml" />
	<link>http://geekfault.org</link>
	<description>If it doesn&#039;t segfault, you&#039;re doing it wrong.</description>
	<lastBuildDate>Sun, 16 Oct 2011 00:54:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>IP over DNS : Contourner les limitations des hotspots</title>
		<link>http://geekfault.org/2009/09/26/ip-over-dns/</link>
		<comments>http://geekfault.org/2009/09/26/ip-over-dns/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:50:24 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[hotspot]]></category>
		<category><![CDATA[nstx]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=1517</guid>
		<description><![CDATA[Vous êtes dans une gare, un hôtel ou un aéroport. Celui-ci est équipé en hotspots WiFi mais dès que vous vous connectez ils essayent de vous sous-tirer plus de 10€ pour une petite heure de connexion, ce qui est totalement aberrant vu les coûts de déploiement actuels. Là, vous avez deux solutions : payer (ce [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/14/tunnel-ssh/' rel='bookmark' title='Le tunnel SSH facile'>Le tunnel SSH facile</a></li>
<li><a href='http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/' rel='bookmark' title='Allocation d&#8217;adresses IPv4 publiques over VPN'>Allocation d&#8217;adresses IPv4 publiques over VPN</a></li>
<li><a href='http://geekfault.org/2011/02/19/reverse-ssh-acceder-a-un-serveur-derriere-un-natfirewall/' rel='bookmark' title='Reverse SSH : accéder à un serveur derrière un NAT/Firewall'>Reverse SSH : accéder à un serveur derrière un NAT/Firewall</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/09/WiFiZone.jpg" alt="WiFiZone" title="WiFiZone" width="200" class="alignleft size-full wp-image-1534" />Vous êtes dans une gare, un hôtel ou un aéroport. Celui-ci est équipé en <strong>hotspots WiFi</strong> mais dès que vous vous connectez ils essayent de vous sous-tirer <strong>plus de 10€ pour une petite heure de connexion</strong>, ce qui est totalement aberrant vu les coûts de déploiement actuels.</p>
<p>Là, vous avez deux solutions : <strong>payer</strong> (ce qui peut vite devenir cher si vous passer plus d&#8217;une semaine à l&#8217;hôtel) <strong>ou contourner</strong> les limitations. Vous vous rendrez vite compte que, même avant d&#8217;avoir payé, tous les hotspots <strong>résolvent les DNS</strong>&#8230; et il ne vous aura pas échappé qu&#8217;<strong>une résolution de DNS est un échange de données</strong>!</p>
<div style="background: #FFFABF; -moz-border-radius: 6px; padding: 4px;"><strong>Attention :</strong> Cet article fait appel à des connaissances avancées.</div>
<p><!--more--></p>
<h3>Le port UDP 53</h3>
<p>Pour faciliter la configuration de ces hotspots, de nombreux administrateurs n&#8217;hésitent pas à tout simplement ouvrir le port DNS, c&#8217;est-à-dire le port UDP 53. Une solution simple pour accéder à internet serait donc d&#8217;avoir un serveur <strong>VPN sur ce port</strong>.</p>
<p>Malheureusement on tombe souvent sur des hotspots bien configurés, qui n&#8217;autorisent du trafic que vers leur propre serveur DNS. Pourtant, vous avez remarqué qu&#8217;un <code>dig geekfault.org</code> vous a retourné la bonne adresse IP (81.93.247.142 actuellement) et non une adresse IP du hotspot. <strong>Vous venez de communiquer avec l&#8217;internet!</strong></p>
<h3>Échange de données over DNS</h3>
<p>L&#8217;idée est donc simple : traduire vos &#8220;requêtes IP&#8221; en <strong>requêtes DNS</strong>. Un faux serveur DNS va comprendre ces requêtes, les exécuter et retourner la &#8220;réponse IP&#8221; en réponse DNS! Ce détournement du système DNS est réalisable grâce à <strong><a href="http://savannah.nongnu.org/projects/nstx/">NSTX</a>, ou Name Service Transfer Procotol</strong> qui crée un véritable tunnel IP entre votre laptop et votre serveur, grâce aux requêtes DNS.</p>
<p>Par exemple vous essayez de vous connecter à Geekfault.<br />
<img src="http://geekfault.org/wp-content/uploads/2009/09/Schema-NSTX.png" alt="Schema-NSTX" title="Schema-NSTX" width="580" height="125" class="alignnone size-full wp-image-1531 noborder" /></p>
<ul>
<li>Firefox génère une requête HTTP vers geekfault.org</li>
<li>Celle-ci est interceptée par le client NSTX tournant sur le laptop. Il génère une requête vers le domaine <span style="font-family: monospace;">KJhjh33.dd_2sT-XXT.dAAoi_f.tunnel.example.com</span></li>
<li>Le NSTX tournant sur le serveur reçoit cette requête DNS et décode le <span style="font-family: monospace;">KJhjh33.dd_2sT-XXT.dAAoi_f</span> en &#8220;requête HTTP vers geekfault.org&#8221;</li>
<li>Le serveur se connecte alors à geekfault.org et récupère son contenu</li>
<li>Le contenu récupéré est encodé de la même manière et transmis vers votre laptop en tant que réponse DNS TXT</li>
<li>Le NSTX tournant sur le laptop décode les données, reformant les paquets IP</li>
<li>Firefox reçoit les données HTTP, Geekfault.org s&#8217;affiche <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </li>
</ul>
<h3>Mise en place du serveur</h3>
<p>Attention il est important que votre <strong>vrai serveur DNS</strong> et votre <strong>serveur NSTX</strong> soient sur deux machines différentes, ou au moins sur <strong>deux IP différentes</strong>. En effet, il faut qu&#8217;un vrai serveur DNS fasse pointer le sous-domaine <span style="font-family: monospace;">tunnel.example.com</span> vers NSTX. Pour cela, ajoutez à la fin de votre zone DNS <code>$ORIGIN tunnel.example.com.<br />
@               IN      NS      ns.tunnel.example.com.<br />
ns              IN      A       1.2.3.4</code> où example.com est votre domaine et 1.2.3.4 est l&#8217;IP du serveur où vous installerez NSTX.</p>
<p>Vérifiez que votre kernel est compilé avec le &#8220;Universal TUN/TAP device driver support&#8221; (dans Network device support) . Installez NSTX, disponible en package pour de nombreuses distributions.</p>
<p>Et il ne reste plus qu&#8217;à <strong>créer le tunnel</strong> côté serveur: <code># modprobe tun   #Uniquement si compilé en module<br />
# nstxd -i 1.2.3.4 tunnel.example.com<br />
# ifconfig tun0 up 172.16.42.1 netmask 255.255.255.0<br />
# iptables -t nat -A POSTROUTING -s 172.16.42.2 -o eth0 -j SNAT</code></p>
<h3>Le client sur le laptop</h3>
<p>De la même manière, vérifiez que vous avez le support TUN/TAP dans le kernel et installez NSTX.</p>
<p>Récupérez l&#8217;adresse IP du serveur DNS fourni par DHCP (dans <span style="font-family: monospace;">/etc/resolv.conf</span>) ainsi que l&#8217;adresse IP du routeur (dans <span style="font-family: monospace;">route</span>). <strong>On crée alors l&#8217;autre bout du tunnel</strong> et on route le trafic approprié dans celui-ci: <code># modprobe tun   #Uniquement si compilé en module<br />
# nstxcd tunnel.example.com <IP_serveur_DNS_filtrant><br />
# ifconfig tun0 up 172.16.42.2 netmask 255.255.255.0<br />
# route del default<br />
# route add -host <IP_serveur_DNS_filtrant> gw <IP_routeur_filtrant> dev <interface_réseau><br />
# route add default gw 172.16.42.1 tun0</code></p>
<h3>Performances</h3>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2009/09/hotspot-150x150.jpg" alt="hotspot" title="hotspot" width="150" height="150" class="alignright size-thumbnail wp-image-1536" />Vous devriez maintenant être capable de surfer sur le web. Selon le serveur DNS du fournisseur, vous pouvez espérer <strong>entre 10 et 60ko/s</strong>. Malheureusement les <strong>fortes latences</strong> de toutes les requêtes empêchent l&#8217;utilisation de plusieurs services, dont le SSH. Mais, hé, vous accédez à internet sans vous défaire de 10€ <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><em>Vous aurez aussi sans doute compris que nous sommes là au bord de la légalité : on exploite en quelque sorte une faille dans le système de hotspot. À utiliser avec précaution et parcimonie.</em></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/14/tunnel-ssh/' rel='bookmark' title='Le tunnel SSH facile'>Le tunnel SSH facile</a></li>
<li><a href='http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/' rel='bookmark' title='Allocation d&#8217;adresses IPv4 publiques over VPN'>Allocation d&#8217;adresses IPv4 publiques over VPN</a></li>
<li><a href='http://geekfault.org/2011/02/19/reverse-ssh-acceder-a-un-serveur-derriere-un-natfirewall/' rel='bookmark' title='Reverse SSH : accéder à un serveur derrière un NAT/Firewall'>Reverse SSH : accéder à un serveur derrière un NAT/Firewall</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/09/26/ip-over-dns/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

