<?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; wifi</title>
	<atom:link href="http://geekfault.org/tag/wifi/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>EeeGW : Créer soi-même une passerelle réseau</title>
		<link>http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/</link>
		<comments>http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 11:44:59 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[eeegw]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[Matériel]]></category>
		<category><![CDATA[gateway]]></category>
		<category><![CDATA[how]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[routeur]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=1711</guid>
		<description><![CDATA[Le routeur-passerelle (gateway, en anglais) est le lien entre votre réseau local et l&#8217;Internet. Sans doute utilisez-vous simplement la box fournie par votre FAI ou un autre modem-routeur acheté en magasin, mais installer et configurer soi-même son gateway présente de nombreux avantages. Je vous présente via cet article ma transformation d&#8217;un EeePC, qui ne me [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/02/20/eeegw-ze-retour-du-detour-proxycache/' rel='bookmark' title='EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.'>EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.</a></li>
<li><a href='http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/' rel='bookmark' title='Eeegw &#8211; part III &#8211; Quality Of Service aka QOS'>Eeegw &#8211; part III &#8211; Quality Of Service aka QOS</a></li>
<li><a href='http://geekfault.org/2009/05/20/firmware-linksys-wag200g/' rel='bookmark' title='Firmware modifié pour Linksys WAG200G'>Firmware modifié pour Linksys WAG200G</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Introduction--><a href="http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/img00263/" rel="attachment wp-att-1864"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/12/IMG00263-300x225.jpg" alt="" title="IMG00263" width="300" height="225" class="alignleft size-medium wp-image-1864" /></a>Le routeur-passerelle (gateway, en anglais) est le <strong>lien entre votre réseau local et l&#8217;Internet</strong>. Sans doute utilisez-vous simplement la box fournie par votre FAI ou un autre modem-routeur acheté en magasin, mais installer et configurer soi-même son gateway présente de nombreux avantages.</p>
<p>Je vous présente via cet article ma transformation d&#8217;un <strong>EeePC</strong>, qui ne me servait à rien, en routeur-passerelle réseau. Je vous présente mon travail, mais il est très facile d&#8217;adapter ce travail à votre utilisation et à votre propre machine afin de la transformer en un super routeur Linux qui tue tout <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<!--more--></p>
<h3>Article illustré par l&#8217;exemple</h3>
<p>Cette documentation est adapté à mon LAN qui est paramétré sur le subnet 10.0.69.0/24. Le eeegw, comme je l&#8217;appelle, prend donc l&#8217;adresse 10.0.69.250/24 est sera la gateway de mon réseau afin que mes autres machines puissent accéder à l&#8217;internet.</p>
<h3>À quoi ça sert de monter sa propre Gateway ? </h3>
<ul>
<li>Ne pas avoir à redémarrer sa connexion internet chaque fois qu&#8217;on a envie de toucher aux règles de firewalling. En effet les box des FAI nécessitent de redémarrer pour prendre en compte de nouveaux paramètres</li>
<li>Ne pas avoir une boite noire à la place de routeur : on peut surveiller son réseau et savoir quels sont les packets qui y passent</li>
<li>Pouvoir loguer via iptables et ulogd par exemple <em>(futur article)</em></li>
<li>Pouvoir grapher via rrdtool / Mrtg la bande passante qui passe par vos liens</li>
<li>Pouvoir héberger un petit blog (par exemple) directement sur votre passerelle</li>
<li>Pouvoir mettre en place un proxy transparent pour votre connexion pour mettre en cache les pages les plus souvent demandées et ainsi économiser de la bande passante <em>(futur article)</em></li>
<li>Savoir exactement ce qui se passe avec votre connexion internet</li>
<li>Mettre en place des outils de détection d&#8217;attaques sur votre réseau via SNORT <em>(futur article)</em></li>
</ul>
<h3>Choisir le bon matériel</h3>
<p>N&#8217;importe quel ordinateur avec un tant soit peu de puissance est suffisant pour faire un bon gateway, il suffit que cette machine soit munie de <strong>plusieurs interfaces réseau</strong>.</p>
<p>Durant des années j&#8217;ai eu en tant que passerelle un PII 266Mhz muni de 128MB de ram et d&#8217;un disque dur de 2Go. Pour cette nouvelle gateway j&#8217;ai choisi le <strong>EeePC 7&#8243;</strong> que j&#8217;ai baptisé <strong>eeegw</strong> <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pourquoi ce choix? Parce que le EeePC dispose de beaucoup d&#8217;avantages à être transformé en Gateway :</p>
<ul>
<li>Il est muni d&#8217;une batterie donc non affecté par une coupure de courant éventuelle</li>
<li>Il dispose d&#8217;une interface réseau ethernet et d&#8217;une interface wifi </li>
<li>La carte wifi intégrée est une Atheros et supporte donc (via le pilote madwifi) les multi wireless WAN </li>
<li>Sa puissance est honorable (512 de RAM / 900Mhz / 4Go de SSD)</li>
<li>On peut très facilement installer une distribution GNU/Linux dessus </li>
<li>On peut installer un serveur web dessus en toute tranquillité</li>
<li>Son matériel est pleinement supporté par le noyau Linux</li>
<li>Sa consommation est très faible, permettant donc d&#8217;être allumé 24/24 sans détruire son budget EDF </li>
</ul>
<h3>Installer la bonne distribution</h3>
<p>Si comme moi vous souhaitez transformer un EeePC, je vous conseille Debian. Personnelement j&#8217;aurais bien choisi Gentoo, mais le EeePC prendrait trop de temps à compiler, et ne refroidit pas spécialement bien.</p>
<p>Installer la distribution Debian sur un EeePC est très bien documenté, il vous suffit de créer une clée usb bootable. Je vous renvoie à la documentation de Debian : <a href="http://wiki.debian.org/DebianEeePC/HowTo/Install">EeeDebian</a>.</p>
<h3>Glossaire des packets Debian nécessaires pour ce howto </h3>
<ul>
<li>iproute</li>
<li>iptables</li>
<li>apache2</li>
<li>munin munin-node</li>
<li>wireless-tools</li>
</ul>
<p><!--nextpage--><!--pagetitle:Connexions internet--></p>
<h3> Se connecter aux FAI sur les interfaces concernées </h3>
<p>Je dispose pour ma part d&#8217;une connexion au web fournie via le fournisseur d&#8217;accès Nerim (j&#8217;établis donc la connexion en <strong>PPPoE</strong> comme avec la plupart des fournisseurs ADSL). Je dispose d&#8217;une seconde connexion via du <strong>WiFi</strong> fourni par un de mes voisins (qui accepte que je me serve de sa connexion).</p>
<p>Ne vous inquiétez pas si vous n&#8217;avez qu&#8217;une seule connexion, ou si vous avez Free+Numericable ou n&#8217;importe quelle autre combinaison, cet article est facilement adaptable à votre configuration.</p>
<h3>Connexion PPP</h3>
<p>Configurez la connexion PPPoE:<br />
<code>/etc/ppp/peers/dsl-provider</code><br />
<code> # Minimalistic default options file for DSL/PPPoE connections<br />
noipdefault<br />
defaultroute<br />
replacedefaultroute<br />
hide-password<br />
#lcp-echo-interval 30<br />
#lcp-echo-failure 4<br />
noauth<br />
persist<br />
#mtu 1492<br />
#persist<br />
#maxfail 0<br />
#holdoff 20<br />
plugin rp-pppoe.so eth0<br />
user "plopplop@adslc.fai.fai"<br />
usepeerdns </code></p>
<p>Et enregistrez vos identifiants:<br />
<code>/etc/ppp/chap-secret</code><br />
<code># Secrets for authentication using CHAP<br />
# client server secret IP addresses<br />
"plopplop@adslc.fai.fai" * "mdpdelamortquituedevotreFAI"</code> </p>
<p>Et créez le script qui initiera cette connexion:<br />
<code>/etc/eeegw/fai.sh</code><br />
<code>#!/bin/bash<br />
/usr/sbin/pppd call dsl-provider</code> </p>
<p>Placez ensuite ce script fai.sh dans les régles de pre-up du fichier Debian /etc/network/interfaces. Votre connexion ppp sera ainsi demarré au boot de la eeegw. Voir, pour exemple, le mien en fin d&#8217;article.</p>
<p>Finalement, un script pour s&#8217;assurer que votre connexion PPP est bien up avec votre fournisseur d&#8217;accès ADSL. Il est lancé via un cron toutes les 5 minutes ainsi, si la connexion tombe, ce script lui permettra de se relancer automatiquement.<br />
<code>/etc/eeegw/nerim.sh</code><br />
<code lang="bash">#!/bin/bash</p>
<p>#SERVERS="62.4.16.36 feth1-0-thevenin.nerim.net www.nerim.net hsrp1-telehouse.nerim.net feth0-0-julo.nerim.net"<br />
SERVERS2=irc.geeknode.org<br />
STATUS_LINK=0</p>
<p>USER=`id -u`</p>
<p>if [ ! "$USER" = "0" ];<br />
then<br />
  echo "you're not root, you can't check adsl."<br />
  exit<br />
fi</p>
<p>if [ -f /var/run/checkadsl ]<br />
then<br />
  echo already running<br />
  exit<br />
fi</p>
<p>if ! /sbin/ifconfig ppp0 > /dev/null<br />
then<br />
  echo "No pppd running. Restarting NOW."<br />
  killall pppd<br />
  /etc/init.d/networking restart<br />
  exit<br />
fi</p>
<p>touch /var/run/checkadsl</p>
<p>## recupere l'ip du peer<br />
ip=$(/sbin/ifconfig  ppp0 | /bin/grep "P-t-P" | /usr/bin/cut -d":" -f3 | /usr/bin/cut -d" " -f1)<br />
SERVERS=$ip</p>
<p>for i in $SERVERS;<br />
do<br />
  ping -c 3 $i<br />
#1>/dev/null 2>/dev/null<br />
  if [ "$?" = "0" ];<br />
  then<br />
    STATUS_LINK=1<br />
    rm -f /var/run/checkadsl<br />
    echo "exit c est ok on passe au deuxieme test"<br />
  exit 0<br />
  fi<br />
done</p>
<p># on sen bat du test maintenant<br />
if [ "$STATUS_LINK" = "0" ];<br />
then<br />
  echo "ADSL Link DOWN. Restarting NOW."</p>
<p>  /etc/init.d/net.ppp0 restart<br />
  rm -f /var/run/checkadsl<br />
fi</p>
<p>rm -f /var/run/checkadsl</code></p>
<h3>Connexion wifi</h3>
<p>Voici une simple configuration de l&#8217;interface WiFi. Je vous renvoie à la documentation adaptée pour plus de détails.</p>
<p>Placez la clé wep dans /etc/eeegw/fb.key puis créez le script<br />
<code>/etc/eeegw/wifi.sh</code><br />
<code>#!/bin/bash<br />
wlanconfig ath0 destroy<br />
wlanconfig ath0 create wlandev wifi0 wlanmode sta<br />
sleep 5<br />
ifconfig ath0 up<br />
iwconfig ath0 essid freebox key `cat /etc/eeegw/fb.key`<br />
dhclient ath0</code> </p>
<p>Ajoutez /etc/eeegw/wifi.sh à vos régles pre-up du fichier /etc/network/interfaces</p>
<h3>Autre type de connexion </h3>
<p>Si par exemple vous êtes chez Free, je vous conseille de monter votre Freebox en mode <strong>bridge</strong>. Ainsi votre eeegw n&#8217;aura plus qu&#8217;à effectuer un bound dhcp sur eth0 afin d&#8217;obtenir l&#8217;IP publique Free et tous les packets arriveront donc directement sur votre eeegw.</p>
<p>Pour redispatcher la connexion, vous pouvez soit le faire via une seconde carte réseau sur votre eeegw (ou votre pc équivalent), soit transformer votre eeegw en point d&#8217;accès WiFi! Transformer un eeepc en eeeap est expliqué ici : <a href="http://geekshell.org/~bragon/doku/doku.php?id=ap.sh">eeeAP</a> </p>
<p><!--nextpage--><!--pagetitle:Répartition entre plusieurs connexions--></p>
<h3>Faire fonctionner les deux connexions ensemble</h3>
<p>Plusieurs choix s&#8217;offrent à vous:</p>
<ul>
<li>Vous n&#8217;avez qu&#8217;un seul lien vers une seule connexion internet. Passez directement à l&#8217;étape suivante.</li>
<li>Vous avez deux connexions web qui ont le même débit et vous souhaitez partager symétriquement le débit</li>
<li>Vous avez deux connexions web qui n&#8217;ont pas le même débit et vous souhaitez partager asymétriquement le débit</li>
<li>Vous avez deux connexions web qui ont ou pas le même débit : une en tant que connexion principale et l&#8217;autre en secours ou pour certaines routes en particulier</li>
<p>Personnellement j&#8217;utilise cette dernière solution, mais je vais aussi vous expliquer les deux autres possibilités de répartiton.</p>
<h3>Activer IP Forwarding </h3>
<p>Quel que soit les choix que vous ferrez par la suite vous avez besoin d&#8217;activer ip_forward dans votre noyau.</p>
<p>Indispensable pour que votre routeur fonctionne!<br />
<code>/etc/sysctl.conf</code><br />
<code>net.ipv4.ip_forward = 1<br />
net.ipv6.conf.all.forwarding = 1</code></p>
<p>Et rechargez la configuration:<br />
<code># sysctl -p</code></p>
<h3>Distribuer sur deux connexions ayant le même poids</h3>
<p>Imaginons que nous ayons FAI-1 derrière eth1 et FAI-2 derrière eth2. Ce deux connexions sont relativement identiques et nous souhaitons donc simplement distribuer équitablement le traffic et ainsi profiter du débit des deux connexions.</p>
<p>eth1: net=192.168.1.0/24, IP=192.168.1.130, Gateway=192.168.1.1<br />
eth2: net=192.168.2.0/24, IP=192.168.2.131, Gateway=192.168.2.1</p>
<p><code>ip route add 192.168.1.0 dev eth1 src 192.168.1.130 table fai1<br />
ip route add default via 192.168.1.1 table fai1</p>
<p>ip route add 192.168.2.0 dev eth2 src 192.168.2.131 table fai2<br />
ip route add default via 192.168.2.1 table fai2</p>
<p>ip route add 192.168.1.0 dev eth1 src 192.168.1.130 ip route add 192.168.2.0 dev eth2 src 192.168.2.131</p>
<p>ip rule add from 192.168.1.130 table fai1<br />
ip rule add from 192.168.2.131 table fai2</p>
<p>ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 1 nexthop via 192.168.2.1 dev eth2 weight 1</code></p>
<h3>Distribuer sur deux réseaux de poids différents</h3>
<p>Petit schéma explicatif de ce qu&#8217;on peut espérer faire avec une passerelle comme <strong>eeegw</strong></p>
<p>(schéma a compléter)</p>
<p>Un script pour <strong>loadbalancer</strong> les connexions sur <strong>deux wan</strong> ayant différents poids : <strong>Notre eeegw devient multi lien ou dualwan</strong></p>
<p><code lang="bash">#!/bin/bash</p>
<p>##ip rule flush</p>
<p>## recupere l'ip du peer<br />
peer=$(/sbin/ifconfig  ppp0 | /bin/grep "P-t-P" | /usr/bin/cut -d":" -f3 | /usr/bin/cut -d" " -f1)</p>
<p>ip route add ${peer} dev ppp0 table uplink1<br />
#ip route add default via 213.41.185.56 table uplink1</p>
<p>ip route add 192.168.0.0/24 dev ath0 src 192.168.0.12 table uplink2<br />
#ip route add default via 192.168.1.1 table uplink2</p>
<p>ip rule add from 192.168.0.12 table uplink2<br />
ip rule add from 213.41.185.56 table uplink1</p>
<p>ip route add default scope global nexthop via 192.168.0.254 dev ath0 weight 1 nexthop via ${peer} weight 3</code></p>
<p>Le but du script share_wan.sh est d&#8217;enlever les deux routes par defaut engendré par le faite de se connecter en ppp et avec dhcp sur le wifi.<br />
Ensuite il faut mettre en route par defaut soit le lien ppp soit le lien wifi.<br />
La dernière ligne sert a donner un poids de 3 à la connexion Nerim et un poid de 1 à la connexion wifi.</p>
<p>Ainsi on enverra 3 fois plus de packets à Nerim qu&#8217;au WiFi.</p>
<p><code>/etc/eeegw/share_wan.sh</code><br />
<code lang="bash"><br />
#!/bin/bash<br />
ip route del default dev ppp0  scope link<br />
ip route del default via 192.168.0.254 dev ath0<br />
ip route add default scope global nexthop via 192.168.0.254 dev ath0 weight 1 nexthop via ${peer} weight 3<br />
</code></p>
<h3>Routes par defaut / routes statiques</h3>
<p>J&#8217;utilise ce système de route static via mon script route_static.sh pour définir via quel FAI je préfère me rendre pour tel ou tel service. C&#8217;est très pratique. (Je rappelle que j&#8217;utilise le cas numero 4, c&#8217;est à dire que ma connexion ppp est ma connexion principale, mais la connexion wifi ne me sert que ne backup au cas ou, et pour des routes particulières).</p>
<p><code>/etc/eeegw/route_static.sh</code><br />
<code lang="bash">#!/bin/bash</p>
<p>## recupere l'ip du peer PPP<br />
peer=$(/sbin/ifconfig  ppp0 | /bin/grep "P-t-P" | /usr/bin/cut -d":" -f3 | /usr/bin/cut -d" " -f1)</p>
<p># telephone passe par la connexion ppp<br />
ip route add 81.93.243.132 via ${peer}</p>
<p># vpn perso passe par la connexion wifi<br />
ip route add 81.93.247.160 via ${peer}<br />
ip route add 193.47.184.2 via ${peer}<br />
ip route add 94.23.219.37 via 192.168.0.254</code> </p>
<p><!--nextpage--><!--pagetitle:Réseau local--></p>
<h3>Serveur DHCP</h3>
<p>L&#8217;eeegw doit donner des IPs via DHCP aux différentes machines du réseau.<br />
<code># apt-get install dhcpd </code></p>
<p><code>/etc/dhcp3/dhcpd.conf</code><br />
<code># option definitions common to all supported networks...<br />
option domain-name "lucifer.bragon.info";<br />
option domain-name-servers 8.8.8.8;</p>
<p>ddns-update-style none;</p>
<p>authoritative;</p>
<p>default-lease-time 86400;<br />
max-lease-time 86400;</p>
<p>subnet 10.0.69.0 netmask 255.255.255.0 {<br />
  range 10.0.69.10 10.0.69.199;<br />
 option routers 10.0.69.250;<br />
}</p>
<p># Réservations<br />
host satanas {<br />
     hardware ethernet 00:02:b3:21:40:c0;<br />
     fixed-address 10.0.69.18;<br />
     option routers 10.0.69.250;<br />
     option broadcast-address 10.0.69.255;<br />
}</code></p>
<h3>Rajouter des VPN</h3>
<p>Vous pouvez bien sûr rajouter des connexions VPN sur votre eeegw.<br />
En effet cela vous permettra de directement propager la connectivité au VPN à toutes les machines de votre lan.<br />
Pour se faire je vous renvoi vers les articles de target0 et moi même concernant les VPN.</p>
<p><a href="http://geekfault.org/2009/10/04/allocation-dipv6-over-openvpn/">http://geekfault.org/2009/10/04/allocation-dipv6-over-openvpn/</a><br />
<a href="http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/">http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/</a></p>
<h3>Quality Of Service / tc qdisc</h3>
<p>La qualité de service sur le reseau est très importante si vous ne voulez pas que vos utilisateurs se plaignent de lags.</p>
<p>Par exemple lorsqu&#8217;un appel en VoIP est émit, il est très désagréable de se mettre à laguer tout d&#8217;un coup car un de vos collaborateurs envoie un e-mail avec une pièce jointe énorme. Pour éviter d&#8217;avoir ce genre de désagrements, il faut mettre des priorités sur le traffic entrant et sortant.</p>
<p>J&#8217;ai décidé de faire un article prochainement afin de vous expliquer comment je gère la QOS de ma eeegw.</p>
<p><!--nextpage--><!--pagetitle:Firewalling et NAT--></p>
<h3>Firewalling</h3>
<p><code>/etc/eeegw/firewall.sh</code><br />
<code lang="bash">#!/bin/bash<br />
# REMISE à ZERO des règles de filtrage<br />
iptables -F<br />
iptables -t nat -F</p>
<p># DEBUT des "politiques par défaut"<br />
# Je veux que les connexions entrantes soient bloquées par défaut<br />
iptables -P INPUT DROP</p>
<p># Je veux que les connexions destinées à être forwardées soient acceptées par défaut<br />
iptables -P FORWARD ACCEPT</p>
<p># Je veux que les connexions sortantes soient acceptées par défaut<br />
iptables -P OUTPUT ACCEPT</p>
<p># FIN des "politiques par défaut"<br />
# Pas de filtrage sur l'interface de "loopback"<br />
iptables -A INPUT -i lo -j ACCEPT<br />
iptables -A INPUT -i eth0 -j ACCEPT</p>
<p>#on ne filtre pas les vpn<br />
iptables -A INPUT -i tap0 -j ACCEPT<br />
iptables -A INPUT -i tap1 -j ACCEPT<br />
iptables -A INPUT -i ethylix0 -j ACCEPT</p>
<p># J'accepte le protocole ICMP (i.e. le "ping")<br />
iptables -A INPUT -p icmp -j ACCEPT</p>
<p># J'accepte le protocole IGMP (pour le multicast)<br />
iptables -A INPUT -p igmp -j ACCEPT</p>
<p># J'accepte les packets entrants relatifs ? des connexions d?j? ?tablies<br />
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</p>
<p>#ssh<br />
iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 2605 -j ACCEPT</p>
<p>#apache<br />
iptables -A INPUT -p tcp --dport 80 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 443 -j ACCEPT</p>
<p>#tftp<br />
iptables -A INPUT -p udp --dport 69 -j ACCEPT</p>
<p>#mon smtp<br />
iptables -A INPUT -p tcp --dport 25 -j ACCEPT</p>
<p>#vpn<br />
iptables -A INPUT -p tcp --dport 7777 -j ACCEPT</p>
<p># voip<br />
#iptables -A INPUT -p tcp --dport 5060 -j ACCEPT<br />
#iptables -A INPUT -p tcp --dport 5061 -j ACCEPT</p>
<p># supervision zabbix</p>
<p>iptables -A INPUT -p tcp --dport 10050 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT</p>
<p>#Munin<br />
iptables -A INPUT -p tcp --dport 4949 -j ACCEPT</p>
<p># La règle par défaut pour la chaine INPUT devient "REJECT" (il n'est pas possible de mettre REJECT comme politique par défaut)<br />
#iptables -A INPUT -j REJECT</p>
<p>#forward de la connection<br />
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE<br />
iptables -t nat -A POSTROUTING -o ath0 -j MASQUERADE<br />
iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE<br />
iptables -t nat -A POSTROUTING -o tap1 -j MASQUERADE<br />
iptables -t nat -A POSTROUTING -o ethylix0 -j MASQUERADE</p>
<p>iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o ppp0 --clamp-mss-to-pmtu</code></p>
<p>Le but du script de firewall est d&#8217;être lancé une première fois, puis d&#8217;être sauvegardé comme la Debian-Way le suggère. Pocédons donc comme suit :<br />
<code># sh /etc/eeegw/firewall.sh<br />
# iptables-save > /etc/network/firewall</code><br />
Ainsi au boot des interfaces la machine lancera les règles iptables sauvegardées. </p>
<h3>Firewall en sortie</h3>
<p>NB : Dans cette exemple le firewall n&#8217;agit qu&#8217;en entrée, c&#8217;est à dire que par defaut nous laissons tout sortir sur le réseau. Vous pourriez sans aucun soucis filtrer en sortie. </p>
<p>Exemple de regles de filtrage en sortie :<br />
<code># A mettre en début de script pour n'accepter explicitement QUE ce qui est autorisé.<br />
iptables -P OUTPUT DROP</p>
<p># Règles output fonctionnement de base<br />
iptables -A OUTPUT -p tcp -o eth0 --dport domain -j ACCEPT<br />
iptables -A OUTPUT -p udp -o eth0 --dport domain -j ACCEPT<br />
iptables -A OUTPUT -p tcp -o eth0 --dport ntp -j ACCEPT<br />
iptables -A OUTPUT -p udp -o eth0 --dport ntp -j ACCEPT<br />
iptables -A OUTPUT -p tcp -o eth0 --dport rsync -j ACCEPT<br />
iptables -A OUTPUT -p udp -o eth0 --dport rsync -j ACCEPT<br />
iptables -A OUTPUT -p tcp -o eth0 --dport http -j ACCEPT<br />
iptables -A OUTPUT -p tcp -o eth0 --dport smtp -j ACCEPT<br />
iptables -A OUTPUT -p tcp -o eth0 --dport ssh -j ACCEPT<br />
iptables -A OUTPUT -p tcp -o eth0 --dport ftp -j ACCEPT</code></p>
<h3> Explication fonctionnement du NAT </h3>
<p>Imaginons que vous ayez un serveur FTP sur la machine A.<br />
Imaginons que vous ayez un serveur Web sur la machine B.<br />
Afin qu&#8217;un client puisse s&#8217;y connecter en venant de l&#8217;internet vous ne pouvez pas lui donner comme adresse afin de s&#8217;y connecter une des ip de votre LAN, mais l&#8217;ip que vous a attribué le FAI lors de votre connexion à celui-ci.<br />
Le NAT est le fait que la eeegw sache vers quelle machine transmettre le traffic de tel ou tel service.<br />
Ainsi le client établi une connexion FTP vers votre IP publique, la connexion FTP arrive sur votre eeegw qui va savoir qu&#8217;il faut qu&#8217;elle transmette ce traffic vers la machine A.</p>
<p>Pour plus d&#8217;explication sur comment faire ça, allez voir la partie firewall de la documentation.<br />
Pour plus d&#8217;explication n&#8217;hésitez pas à aller lire la <a href="http://fr.wikipedia.org/wiki/Network_address_translation">documentation Wikipédia sur le sujet</a>.</p>
<h3>Régles de NAT</h3>
<p>Vous avez besoin d&#8217;ouvrir un port sur votre eeegw qui redirige sur une des machines de votre lan ?<br />
Rien de plus simple. Procédez comme suit si vous avez par exemple un serveur web derrière 10.0.69.1 :</p>
<p><code># iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 10.0.69.1:80</code></p>
<p>Ensuite on save la nouvelle régle dans les régles devant se lancer au boot :<br />
<code># iptables-save > /etc/network/firewall</code></p>
<p>Votre nouvelle règle de NAT/Firewall est donc automatiquement activée sans avoir à faire quoi que ce soit de plus sur votre eeegw.</p>
<p><!--nextpage--><!--pagetitle:Exécution des scripts au boot--></p>
<h3> Automatiser le lancement des scripts eeegw_script au boot</h3>
<p><code>/etc/network/interfaces</code><br />
<code>auto lo<br />
iface lo inet loopback</p>
<p># The primary network interface<br />
allow-hotplug eth0<br />
iface eth0 inet static<br />
        address 10.0.69.250<br />
        netmask 255.255.255.0<br />
        network 10.0.69.0<br />
        broadcast 10.0.69.255<br />
        pre-up iptables-restore -c /etc/network/firewall</p>
<p>auto ath0<br />
iface ath0 inet dhcp<br />
wireless_mode Managed</p>
<p>pre-up /etc/eeegw/wifi.sh<br />
pre-up /etc/eeegw/nerim.sh<br />
pre-up /etc/eeegw/route_static.sh<br />
pre-up /etc/eeegw/ethylix.sh<br />
pre-up /etc/eeegw/QOS/qos.sh</code></p>
<p><!--nextpage--><!--pagetitle:Monitoring--></p>
<h3>Et si on monitorait /graphait tout ça ?</h3>
<p>Exemple de graph que l&#8217;on va pouvoir obtenir grace à ce super howto  (vu mensuel de ma connexion internet) :<br />
<a href="http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/if_eth0-month-2/" rel="attachment wp-att-1862"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2009/12/if_eth0-month-300x169.png" alt="" title="if_eth0-month" width="300" height="169" class="aligncenter size-medium wp-image-1862" /></a></p>
<p>Second Exemple: vue journalière de l&#8217;utilisation d&#8217;une connexion par un vpn.<br />
<a href="http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/if_ethylix0-day-2/" rel="attachment wp-att-1863"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2009/12/if_ethylix0-day-300x169.png" alt="" title="if_ethylix0-day" width="300" height="169" class="aligncenter size-medium wp-image-1863" /></a></p>
<h3>Installation</h3>
<p><code># apt-get install munin apache2 munin-node<br />
# cd /usr/share/munin/plugins/<br />
# ls</code></p>
<p>Repérez ici les choses qu&#8217;il serait intéressant de grapher sur votre munin puis :<br />
<code># cd /etc/munin/plugins<br />
# ln -s /usr/share/munin/plugins/acpi<br />
# ln -s /usr/share/munin/plugins/apache_processes<br />
# ln -s /usr/share/munin/plugins/cpu<br />
# ln -s /usr/share/munin/plugins/df<br />
# ln -s /usr/share/munin/plugins/swap<br />
[....]</code></p>
<p><code>/etc/munin/munin.conf</code><br />
<code>[localhost.localdomain]<br />
    address 127.0.0.1<br />
    use_node_name yes</code></p>
<p>Relancez munin-node<br />
<code># /etc/init.d/munin-node restart</code></p>
<p>Ça devrait grapher tout simplement comme ça sous debian (l&#8217;installation sous gentoo demande un peu plus de délicatesses). Pour plus de détails : <a href="http://eeegw-ip-adresse/munin">http://eeegw-ip-adresse/munin</a>.</p>
<p><!--nextpage--><!--pagetitle:Annexe et exemples--></p>
<h3>Sortie de ifconfig</h3>
<p><code>ath0      Link encap:Ethernet  HWaddr 06:15:af:8d:37:37<br />
          inet adr:192.168.0.12  Bcast:192.168.0.255  Masque:255.255.255.0<br />
          adr inet6: fe80::415:afff:fe8d:3737/64 Scope:Lien<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:13848732 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:4385032 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:0<br />
          RX bytes:1482140328 (1.3 GiB)  TX bytes:307281227 (293.0 MiB)</p>
<p>eth0      Link encap:Ethernet  HWaddr 00:1f:c6:28:71:9e<br />
          inet adr:10.0.69.250  Bcast:10.0.69.255  Masque:255.255.255.0<br />
          adr inet6: fe80::21f:c6ff:fe28:719e/64 Scope:Lien<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:256988818 errors:0 dropped:0 overruns:0 frame:4160<br />
          TX packets:258912344 errors:0 dropped:0 overruns:0 carrier:6<br />
          collisions:0 lg file transmission:1000<br />
          RX bytes:3516383801 (3.2 GiB)  TX bytes:0 (0.0 B)<br />
          MÃ©moire:fbfc0000-fc000000 </p>
<p>ethylix0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00<br />
          inet adr:194.110.69.23  P-t-P:194.110.69.17  Masque:255.255.255.255<br />
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1<br />
          RX packets:4099 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:3932 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:500<br />
          RX bytes:286787 (280.0 KiB)  TX bytes:399957 (390.5 KiB)</p>
<p>lo        Link encap:Boucle locale<br />
          inet adr:127.0.0.1  Masque:255.0.0.0<br />
          adr inet6: ::1/128 Scope:HÃ´te<br />
          UP LOOPBACK RUNNING  MTU:16436  Metric:1<br />
          RX packets:4493171 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:4493171 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:0<br />
          RX bytes:532519851 (507.8 MiB)  TX bytes:532519851 (507.8 MiB)</p>
<p>ppp0      Link encap:Protocole Point-Ã -Point<br />
          inet adr:213.41.185.56  P-t-P:62.4.16.251  Masque:255.255.255.255<br />
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1<br />
          RX packets:6108340 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:4219070 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:3<br />
          RX bytes:2251583910 (2.0 GiB)  TX bytes:836111670 (797.3 MiB)</p>
<p>tap0      Link encap:Ethernet  HWaddr 00:ff:b7:de:c8:b4<br />
          inet adr:10.0.1.2  Bcast:10.0.1.255  Masque:255.255.255.0<br />
          adr inet6: 2001:758:f00:8:2ff:b7ff:fede:c8b4/64 Scope:Global<br />
          adr inet6: fe80::2ff:b7ff:fede:c8b4/64 Scope:Lien<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:4716451 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:2796718 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:100<br />
          RX bytes:4275489693 (3.9 GiB)  TX bytes:358571500 (341.9 MiB)</p>
<p>tap1      Link encap:Ethernet  HWaddr 00:ff:63:b8:57:ea<br />
          inet adr:81.93.X.X  Bcast:81.93.X.X  Masque:255.255.255.128<br />
          adr inet6: 2001:758:f00:cafe:2ff:63ff:feb8:57ea/64 Scope:Global<br />
          adr inet6: fe80::2ff:63ff:feb8:57ea/64 Scope:Lien<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:43229918 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:26631144 errors:0 dropped:1826 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:100<br />
          RX bytes:3891532561 (3.6 GiB)  TX bytes:4009241435 (3.7 GiB)</p>
<p>wifi0     Link encap:UNSPEC  HWaddr 00-15-AF-8D-37-37-65-74-00-00-00-00-00-00-00-00<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:226972539 errors:0 dropped:0 overruns:0 frame:6623910<br />
          TX packets:5796868 errors:44600 dropped:0 overruns:0 carrier:0<br />
          collisions:0 lg file transmission:280<br />
          RX bytes:2128136633 (1.9 GiB)  TX bytes:515534254 (491.6 MiB)<br />
          Interruption:18 </code></p>
<h3>Sortie de iproute</h3>
<p><code>194.110.69.17 dev ethylix0  proto kernel  scope link  src 194.110.69.23<br />
216.165.129.135 via 192.168.0.254 dev ath0<br />
140.211.166.134 via 192.168.0.254 dev ath0<br />
213.186.33.19 via 192.168.0.254 dev ath0<br />
149.20.20.135 via 192.168.0.254 dev ath0<br />
130.239.17.6 via 192.168.0.254 dev ath0<br />
94.23.219.37 via 192.168.0.254 dev ath0<br />
217.23.9.148 via 192.168.0.254 dev ath0<br />
204.152.191.39 via 192.168.0.254 dev ath0<br />
78.41.233.57 via 192.168.0.254 dev ath0<br />
213.251.172.23 via 192.168.0.254 dev ath0<br />
156.56.247.195 via 192.168.0.254 dev ath0<br />
62.4.16.251 dev ppp0  proto kernel  scope link  src 213.41.185.56<br />
81.93.247.0/25 dev tap1  proto kernel  scope link  src 81.93.247.10<br />
193.200.171.0/24 via 81.93.247.1 dev tap1<br />
10.0.69.0/24 dev eth0  proto kernel  scope link  src 10.0.69.250<br />
91.199.232.0/24 via 81.93.247.1 dev tap1<br />
10.0.1.0/24 dev tap0  proto kernel  scope link  src 10.0.1.2<br />
195.190.3.0/24 via 81.93.247.1 dev tap1<br />
192.168.0.0/24 dev ath0  proto kernel  scope link  src 192.168.0.12<br />
193.200.226.0/24 via 81.93.247.1 dev tap1<br />
91.198.105.0/24 via 81.93.247.1 dev tap1<br />
91.209.245.0/24 via 81.93.247.1 dev tap1<br />
193.200.181.0/24 via 81.93.247.1 dev tap1<br />
78.41.232.0/21 via 81.93.247.1 dev tap1<br />
91.191.144.0/20 via 81.93.247.1 dev tap1<br />
81.93.240.0/20 via 81.93.247.1 dev tap1<br />
169.254.0.0/16 dev eth0  scope link  metric 1000<br />
10.0.0.0/8 via 10.0.1.1 dev tap0<br />
default dev ppp0  scope link</code></p>
<h3>Ma eeegw en production <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p><a href="http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/img00260-2/" rel="attachment wp-att-1869"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2009/12/IMG00260-580x435.jpg" alt="" title="IMG00260" width="580" height="435" class="aligncenter size-large wp-image-1869" /></a></p>
<p><!--nextpage--><!--pagetitle:Bibliographie--></p>
<h3>Les liens interessants </h3>
<p><a href="http://upload.wikimedia.org/wikipedia/fr/3/3e/Netfilter_schema.png">http://upload.wikimedia.org/wikipedia/fr/3/3e/Netfilter_schema.png</a><br />
<a href="http://wiki.gcu.info/doku.php?id=linux:openvpn_multi-listeners_debian">http://wiki.gcu.info/doku.php?id=linux:openvpn_multi-listeners_debian</a><br />
<a href="http://forums.whirlpool.net.au/forum-replies-archive.cfm/983045.html">Dual wan Cisco</a><br />
<a href="http://www.dslreports.com/forum/remark,16388383?hilite=ip+sla">http://www.dslreports.com/forum/remark,16388383?hilite=ip+sla</a><br />
<a href="http://pauldotcom.com/2009/05/modding-the-asus-eee-4g-surf-f.html">Antenne wifi externe sur sa eeegw</a><br />
<a href="http://chris.olstrom.com/blog/howto/setup-dual-wan/">http://chris.olstrom.com/blog/howto/setup-dual-wan/</a><br />
<a href="http://tldp.org/HOWTO/Traffic-Control-HOWTO/">http://tldp.org/HOWTO/Traffic-Control-HOWTO/</a><br />
<a href="http://markmail.org/message/aronyjanpuxenvug">http://markmail.org/message/aronyjanpuxenvug</a><br />
<a href="http://lartc.org/howto/lartc.rpdb.multiple-links.html">http://lartc.org/howto/lartc.rpdb.multiple-links.html</a></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/02/20/eeegw-ze-retour-du-detour-proxycache/' rel='bookmark' title='EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.'>EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.</a></li>
<li><a href='http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/' rel='bookmark' title='Eeegw &#8211; part III &#8211; Quality Of Service aka QOS'>Eeegw &#8211; part III &#8211; Quality Of Service aka QOS</a></li>
<li><a href='http://geekfault.org/2009/05/20/firmware-linksys-wag200g/' rel='bookmark' title='Firmware modifié pour Linksys WAG200G'>Firmware modifié pour Linksys WAG200G</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<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>
		<item>
		<title>Firmware modifié pour Linksys WAG200G</title>
		<link>http://geekfault.org/2009/05/20/firmware-linksys-wag200g/</link>
		<comments>http://geekfault.org/2009/05/20/firmware-linksys-wag200g/#comments</comments>
		<pubDate>Wed, 20 May 2009 02:18:24 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Matériel]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[linksys]]></category>
		<category><![CDATA[routeur]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=644</guid>
		<description><![CDATA[Longtemps j&#8217;ai cru que les firmwares modifiés pour routeur étaient réservés au Linksys WRT54G, avec entre autres le fameux OpenWRT. Connexion SSH, modifications iptables et autres fonctionalités plus avancées me semblaient hors de portée sur mon routeur d&#8217;entrée de gamme. Pourtant le Linksys WAG200G est un routeur ADSL2+ très répandu, et si je me limite [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/' rel='bookmark' title='On a testé pour vous : Ubuntu Jaunty Jackalope 9.04'>On a testé pour vous : Ubuntu Jaunty Jackalope 9.04</a></li>
<li><a href='http://geekfault.org/2010/02/17/ipv6-pour-les-nulswgeeks/' rel='bookmark' title='IPv6 pour les nuls^Wgeeks'>IPv6 pour les nuls^Wgeeks</a></li>
<li><a href='http://geekfault.org/2009/03/21/introduction-a-liphone/' rel='bookmark' title='Introduction à l&#8217;iPhone'>Introduction à l&#8217;iPhone</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2009/05/linksys-wag200g.jpg" title="linksys-wag200g" rel="lightbox.644"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/05/linksys-wag200g-150x150.jpg" alt="linksys-wag200g" title="linksys-wag200g" width="150" height="150" class="alignleft size-thumbnail wp-image-645" /></a>Longtemps j&#8217;ai cru que les <strong>firmwares modifiés</strong> pour routeur étaient réservés au Linksys WRT54G, avec entre autres le fameux <a href="http://openwrt.org/"><strong>OpenWRT</strong></a>. Connexion SSH, modifications iptables et autres fonctionalités plus avancées me semblaient hors de portée sur mon routeur d&#8217;entrée de gamme.</p>
<p>Pourtant le <strong>Linksys WAG200G</strong> est un routeur ADSL2+ très répandu, et si je me limite aux maigres statistiques des 5 rédacteurs de Geekfault, nous sommes 60% à en avoir un! <img src='http://geekfault.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Son firmware est par ailleurs distribué en GPL par Linksys&#8230;</p>
<p>Mais au cours de mes divagations sur internet je l&#8217;ai trouvé! Présentation.<br />
<!--more--></p>
<h3>Woytekm</h3>
<p>C&#8217;est sur la <a href="http://woytekm.googlepages.com/linksyswag200g-eu">Google Page de Woytekm</a> que j&#8217;ai trouvé mon bonheur.</p>
<p>La dernière version en date est estampillée 0.9 et est basée sur la release 1.01.06 du firmware officiel Linksys. Une version 0.10 basée sur 1.01.09 est prévue avant la fin du mois.</p>
<h3>Fonctionalités  supplémentaires</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2009/05/linksys-screenshot.png" title="linksys-screenshot" rel="lightbox.644"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2009/05/linksys-screenshot-150x150.png" alt="linksys-screenshot" title="linksys-screenshot" width="150" height="150" class="alignright size-thumbnail wp-image-648" /></a>
<ul>
<li>Activation du <strong>serveur SSH</strong> et telnet</li>
<li>Assignation d&#8217;IP <strong>DHCP selon l&#8217;adresse mac</strong> du client</li>
<li>DynamicDNS avec <strong>No-IP</strong>.org</li>
<li><strong>Watchdog</strong> : reboot automatique lorsqu&#8217;un ping ne répond plus</li>
<li>Relais de <strong>WakeOnLan</strong> depuis internet</li>
<li><strong>Analyse du traffic</strong> et graphes de l&#8217;utilisation de la bande passante</li>
</ul>
<p>L&#8217;accès SSH permet évidemment des modifications plus fines, comme par exemple la modification manuelle des <strong>iptables</strong> !</p>
<h3>Installation</h3>
<p>L&#8217;installation se fait <strong>comme toute mise à jour</strong> officielle de Linksys. Pas de soudure ni de câble série à modifier donc. <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Assurez-vous de travailler depuis une machine branchée en ethernet. Bien que Woytekm permette de faire une simple upgrade sans perte de paramètres, je vous conseille de restaurer votre WAG200G aux paramètres d&#8217;usine.</p>
<p>Téléchargez ensuite le fichier <strong>IMG</strong> (version A) sur <a href="http://sourceforge.net/project/showfiles.php?group_id=233166&#038;package_id=282896">la page SourceForce du projet</a> et installez-la comme toute mise à jour.</p>
<h3>Et voilà!</h3>
<p>Vous avez maintenant un nouvel onglet <strong>MySetup</strong> dans l&#8217;interface de gestion. Vous pouvez aussi vous connecter en <strong>root</strong> sur SSH, le mot de passe étant le même que celui permettant de se connecter à l&#8217;interface de gestion.</p>
<p>Après une remise aux paramètres d&#8217;usine, je n&#8217;ai remarqué <strong>aucun problème</strong> avec ce firmware modifié, j&#8217;ai même trouvé une plus grande <strong>stabilité</strong> de mon routeur! Sans doute parce que mon firmware n&#8217;était pas à jour, mais bon c&#8217;est quand même Woytekm qui m&#8217;a fait mettre à jour <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<h3>Screenshots</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2009/05/my-setup1.png" title="my-setup1" rel="lightbox.644"><img src="http://geekfault.org/wp-content/uploads/2009/05/my-setup1-150x150.png" alt="my-setup1" title="my-setup1" width="150" height="150" class="alignnone size-thumbnail wp-image-651" /></a> <a href="http://geekfault.org/wp-content/uploads/2009/05/my-setup2.png" title="my-setup2" rel="lightbox.644"><img src="http://geekfault.org/wp-content/uploads/2009/05/my-setup2-150x150.png" alt="my-setup2" title="my-setup2" width="150" height="150" class="alignnone size-thumbnail wp-image-652" /></a> <a href="http://geekfault.org/wp-content/uploads/2009/05/my-setup3.png" title="my-setup3" rel="lightbox.644"><img src="http://geekfault.org/wp-content/uploads/2009/05/my-setup3-150x150.png" alt="my-setup3" title="my-setup3" width="150" height="150" class="alignnone size-thumbnail wp-image-653" /></a> <a href="http://geekfault.org/wp-content/uploads/2009/05/my-setup4.png" title="my-setup4" rel="lightbox.644"><img src="http://geekfault.org/wp-content/uploads/2009/05/my-setup4-150x150.png" alt="my-setup4" title="my-setup4" width="150" height="150" class="alignnone size-thumbnail wp-image-654" /></a> <a href="http://geekfault.org/wp-content/uploads/2009/05/my-setup5.png" title="my-setup5" rel="lightbox.644"><img src="http://geekfault.org/wp-content/uploads/2009/05/my-setup5-150x150.png" alt="my-setup5" title="my-setup5" width="150" height="150" class="alignnone size-thumbnail wp-image-655" /></a> <a href="http://geekfault.org/wp-content/uploads/2009/05/my-setup6.png" title="my-setup6" rel="lightbox.644"><img src="http://geekfault.org/wp-content/uploads/2009/05/my-setup6-150x150.png" alt="my-setup6" title="my-setup6" width="150" height="150" class="alignnone size-thumbnail wp-image-656" /></a></p>
<h3>Liens</h3>
<ul>
<li><a href="http://woytekm.googlepages.com/linksyswag200g-eu">Site du projet</a></li>
<li><a href="http://woytekm.googlepages.com/modifiedsoftwareforwag200g-eu">Une tonne d&#8217;informations pas claires</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=233166&#038;package_id=282896">Téléchargement SourceForge</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/' rel='bookmark' title='On a testé pour vous : Ubuntu Jaunty Jackalope 9.04'>On a testé pour vous : Ubuntu Jaunty Jackalope 9.04</a></li>
<li><a href='http://geekfault.org/2010/02/17/ipv6-pour-les-nulswgeeks/' rel='bookmark' title='IPv6 pour les nuls^Wgeeks'>IPv6 pour les nuls^Wgeeks</a></li>
<li><a href='http://geekfault.org/2009/03/21/introduction-a-liphone/' rel='bookmark' title='Introduction à l&#8217;iPhone'>Introduction à l&#8217;iPhone</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/05/20/firmware-linksys-wag200g/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

