<?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>Linux Attitude&#187; Réseau</title>
	<atom:link href="http://linux-attitude.fr/category/reseau/feed" rel="self" type="application/rss+xml" />
	<link>http://linux-attitude.fr</link>
	<description>Le libre est un état d&#039;esprit</description>
	<lastBuildDate>Fri, 17 Feb 2012 08:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Network grep</title>
		<link>http://linux-attitude.fr/post/network-grep?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=network-grep</link>
		<comments>http://linux-attitude.fr/post/network-grep#comments</comments>
		<pubDate>Wed, 18 Jan 2012 20:23:27 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1439</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: ngrep I'm back&#160;! Ça faisait longtemps&#160;! Vous m'avez manqué. J'ai quelques petits articles pour vous. Oui c'est vraiment la reprise, même si c'est pas encore du triple A. Aujourd'hui ngrep. Ngrep est un pote de tcpdump, il sait utiliser les mêmes filtres que tcpdump et stocker les paquets dans un format pcap [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: ngrep</p>


<p>I'm back&nbsp;! Ça faisait longtemps&nbsp;! Vous m'avez manqué.</p>


<p>J'ai quelques petits articles pour vous. Oui c'est vraiment la reprise, même si c'est pas encore du triple A.</p>


<p>Aujourd'hui <a href="http://sourceforge.net/projects/ngrep/" hreflang="en">ngrep</a>.
Ngrep est un pote de <a href="http://linux-attitude.fr/post/analyse-reseau">tcpdump</a>, il sait utiliser les mêmes filtres que tcpdump et stocker les paquets dans un format pcap lisible par wireshark si besoin. Mais son intérêt principal est qu'il sait matcher le contenu des paquets.</p>


<p>Là où en tcpdump vous feriez&nbsp;:</p>
<pre>
$ tcpdump host 10.0.0.1 and port 80
</pre>


<p>Vous pouvez utiliser ngrep récupérer un paquet particulier&nbsp;:</p>
<pre>
$ ngrep 'GET' 'host 10.0.0.1 and port 80'
</pre>


<p>Dans les options les plus utiles on trouve&nbsp;:</p>
<ul>
<li>-O pour sauvegarder les paquets et les analyser ensuite, par exemple avec wireshark</li>
<li>-x pour dumper la version hexadécimale du paquet (pratique pour un protocole binaire)</li>
<li>-X pour matcher sur la version hexadécimale du paquet (pratique pour un protocole binaire)</li>
<li>-K1 pour tuer la connexion en envoyant un paquet RST à la source du paquet en question (pas de garantie 100% avec cette méthode :)</li>
</ul>

<p>Et un exemple pour la route pour couper la connexion de celui qui dirait du mal de vous sur un serveur irc&nbsp;:</p>
<pre>
$ ngrep -K1 'peck sux' 'dst 10.0.0.1 and dst port 6667'
</pre>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/lire-dans-les-paquets' rel='bookmark' title='Permanent Link: Lire dans les paquets'>Lire dans les paquets</a></li>
<li><a href='http://linux-attitude.fr/post/analyse-reseau' rel='bookmark' title='Permanent Link: Analyse réseau'>Analyse réseau</a></li>
<li><a href='http://linux-attitude.fr/post/espionner-son-android' rel='bookmark' title='Permanent Link: Espionner son android'>Espionner son android</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/network-grep/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lire un flux SSL</title>
		<link>http://linux-attitude.fr/post/lire-un-flux-ssl?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lire-un-flux-ssl</link>
		<comments>http://linux-attitude.fr/post/lire-un-flux-ssl#comments</comments>
		<pubDate>Fri, 17 Jun 2011 07:24:34 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[Savoir-faire]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1400</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: tcpdump ssl&#160;; ptrace&#160;; ltrace Vous attendez la suite de mon article sur ce qui passe par les oreilles d'un android&#160;? Hé bien vous allez attendre encore un peu ... Lorsque vous récupérez via tcpdump un flux SSL (au hasard du https), il est chiffré et c'est justement l'intérêt du SSL de vous [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: tcpdump ssl&nbsp;; ptrace&nbsp;; ltrace</p>


<p>Vous attendez la suite de mon article sur ce qui passe par les <a href="http://linux-attitude.fr/post/espionner-son-android">oreilles d'un android</a>&nbsp;? Hé bien vous allez attendre encore un peu ...</p>


<p>Lorsque vous récupérez via <strong>tcpdump</strong> un flux <strong>SSL</strong> (au hasard du https), il est chiffré et c'est justement l'intérêt du SSL de vous empêcher de lire ce flux.</p>


<p>Mais si si vous maitrisez une des deux extrémités, il devrait être normal que vous puissiez lire ce flux. C'est pourquoi nous allons le faire.</p>


<h3>Côté serveur</h3>

<p>Dans le cas où vous maitrisez le côté serveur, il suffit d'ouvrir la trace tcpdump (sauvegardée avec l'option -s0 -w file) sous wireshark et de le configurer pour qu'il utilise la clé serveur pour déchiffrer le flux :<a href="http://people.apache.org/~dirkx/settings.png">comme ici</a> et de choisir de <a href="http://people.apache.org/~dirkx/ssl.png">suivre le flux ssl</a> au lieu du flux TCP.</p>


<p>C'est simple et efficace.</p>


<h3>Côté client</h3>

<p>Maintenant si vous êtes côté client sans certificat client, vous êtes coincés. Et c'est là que j'ai une solution à vous proposer.</p>


<p>Il existe plusieurs moyen pour espionner vos processus, tout d'abord vous pouvez créer un wrapper autour de la lib SSL et utiliser LD_PRELOAD pour la charger avant le processus. C'est bien mais difficile à mettre en œuvre, surtout si le processus tourne déjà, je vous laisse explorer cette voie de votre côté.</p>


<p>La deuxième solution est d'utiliser <a href="http://linux.die.net/man/2/ptrace" hreflang="en">ptrace</a> pour espionner le processus. Techniquement complexe, cette méthode nous est grandement facilitée par l'outil <strong><a href="http://linux.die.net/man/1/ltrace" hreflang="en">ltrace</a></strong>.</p>


<p>Pour la suite je vais supposer que les services à espionner passent par openssl, mais rien ne vous empêche de faire la même chose avec gnutls.</p>


<h3>Espionner un processus</h3>


<p>C'est simple&nbsp;:</p>
<pre>
# vous le lancez directement : 
$  ltrace ma commande
# ou vous espionnez un processus qui tourne déjà 
$ ltrace -p pid
</pre>


<p>Ça vous montre le fonctionnement, mais c'est aussi illisible qu'un strace.</p>


<h3>Espionner le SSL</h3>

<p>Ajoutons quelques options pour trier ce fouillis&nbsp;:</p>
<pre>
$ ltrace -l /usr/lib/libssl.so.0.9.8 -s 20000 -e SSL_read,SSL_write
</pre>


<p>Et voilà, la liste des appels&nbsp;! Mais ce n'est pas suffisant.</p>


<p>Ajoutons les lignes suivantes dans /etc/ltrace.conf (ou dans ~/.ltrace.conf)&nbsp;:</p>
<pre>
int SSL_read(addr,string[retval],int);
int SSL_write(addr,string[arg3],int);
</pre>


<p>On relance la commande et maintenant nous avons le contenu de la communication en clair.</p>


<p>Mais il y a un petit bug dans ltrace, string[retval] devrait couper les chaines de SSL_read en fonction de la valeur de retour, mails ne le fait pas.</p>


<p>Corrigeons cela avec un petit script de formatage et cette fois nous avons toute la communication en clair&nbsp;!</p>
<pre>
$ ltrace -l /usr/lib/libssl.so.0.9.8 -s 20000 -e SSL_read,SSL_write -p pid 2&gt; /tmp/trace
$ perl -pe 's/(SSL_read.*?, &quot;)(.*)(&quot;.*? )(\d+)$/$1.substr($2,0,$4).$3.$4/e' /tmp/trace | less
</pre>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/analyse-reseau' rel='bookmark' title='Permanent Link: Analyse réseau'>Analyse réseau</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/planete-libre" title="planete-libre" rel="tag">planete-libre</a>, <a href="http://linux-attitude.fr/tag/savoir-faire" title="Savoir-faire" rel="tag">Savoir-faire</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/lire-un-flux-ssl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloonix</title>
		<link>http://linux-attitude.fr/post/cloonix?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cloonix</link>
		<comments>http://linux-attitude.fr/post/cloonix#comments</comments>
		<pubDate>Tue, 18 Jan 2011 17:50:56 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1220</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: ./start_cloonix_net&#160;; ./graph De temps en temps je vous fais un article sur le réseau, et je teste quasiment tous mes articles dans la vraie vie. Et là vous vous dites, mais c'est énorme&#160;! Mais comment que fait-il&#160;? A-t-il l'infrastructure&#160;? En fait non, enfin si mais non. Pour tester le réseau, j'utilise tout [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: ./start_cloonix_net&nbsp;; ./graph</p>


<p>De temps en temps je vous fais un article sur le réseau, et je teste quasiment tous mes articles dans la vraie vie. Et là vous vous dites, mais c'est énorme&nbsp;! Mais comment que fait-il&nbsp;? A-t-il l'infrastructure&nbsp;?</p>


<p>En fait non, enfin si mais non. Pour tester le réseau, j'utilise tout simplement <a href="http://clownix.net/" hreflang="en">cloonix</a>.</p>


<p>Cloonix n'est pas une distribution, mais un outil permettant de gérer des machines virtuelles et de les mettre en réseau. Pratique, tout se fait graphiquement ou presque.</p>


<h3>Installation</h3>

<p>La version ubuntu ne marche pas sur ma debian, j'ai donc du utiliser les sources. Ça compile bien, il suffit d'appeler doitall dans le répertoire sources. Par contre faites attention, la version source ne contient pas de vm de démo.</p>


<p>Donc après compilation récupérez le répertoire virtual_platform_configs ainsi que le répertoire bulk du package ubuntu et déposez-les dans le répertoire de cloonix.</p>


<p>Le répertoire bulk contient les images disque de base des distribution à virtualiser.</p>


<p>Le répertoire virtual_platform_configs contient la définition des vm, les personnalisation spécifiques à chaque machine, ainsi que la façon dont les machines sont reliées.</p>


<h3>Utilisation</h3>
<pre>
./start_cloonix_net
./graph
</pre>


<p>Vous pouvez alors cliquer sur le bouton droit et charger une topologie. C'est à dire une infrastructure telle que stockée dans un des répertoires de virtual_platform_configs. Un fois que toutes les vm sont chargées vous obtenez ceci&nbsp;:
<img src="/public/Schemas/Cloonix-8.01.png" alt="Cloonix_IHM" /></p>


<p>Et c'est parti, vous avez plusieurs machines virtuelles préconfigurées directement utilisables. Pour ouvrir un shell sur une des machine, double cliquez dessus. Vous pouvez aussi en ajouter dynamiquement, relier deux cartes réseau ...</p>


<p>Lorsque vous avez fini tuez cloonix et ses vm&nbsp;:</p>
<pre>
./ctrl -kill
</pre>



<h3>Détails</h3>

<p>Très pratique, quasiment rien à faire, cloonix sait utiliser <strong>UML</strong> ou <strong>KVM</strong> au besoin.</p>


<p>Pour les tests réseau vous pouvez faire ce que vous voulez, pensez à enregistre votre topologie pour les tests fréquents.</p>


<p>Pensez aussi à modifier la distribution de base dans bulk pour ne plus avoir de modifications a porteriori à faire car tout le contenu d'une vm est perdu dès qu'elle s'éteint.</p>


<p>Enfin pour ceux qui font des tests avec les couches basses du réseau, il est nécessaire d'autoriser le passage des interface en mode promiscuous  depuis cloonix avec une commande de la forme&nbsp;:</p>
<pre>
# le nom de la vm, ne nom de l'interface, 1 pour activer
./ctrl -promisc ROUTER3 eth0 1
</pre>


<p>La <a href="http://clownix.net/siteweb/cloonix_net_overview.html" hreflang="en">documentation</a> est minimaliste, mais suffit pour s'en sortir.</p>


<p><strong>PS</strong>&nbsp;: Si vous avez des idées d'article à me suggérer n'hésitez pas à utiliser <a href="http://linux-attitude.fr/boite-a-idee" hreflang="fr">la boite à idées</a>.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/chroot' rel='bookmark' title='Permanent Link: Chroot'>Chroot</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a>, <a href="http://linux-attitude.fr/tag/virtualisation" title="virtualisation" rel="tag">virtualisation</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/cloonix/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aggrégation de lien</title>
		<link>http://linux-attitude.fr/post/aggregation-de-lien?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aggregation-de-lien</link>
		<comments>http://linux-attitude.fr/post/aggregation-de-lien#comments</comments>
		<pubDate>Mon, 10 Jan 2011 17:59:38 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1199</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: modprobe bonding&#160;; ifenslave Récemment nous avons vu l'agrégation sur couche 3, celle d'IP. Naturelle, pratique pour redonder des chemins réseaux, elle n'est pas forcément adaptée pour de la redondance sur réseau local. Il existe une autre solution qui fonctionne sur la couche du dessous, le bonding (aussi appelé trunking chez les fabriquants [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: modprobe bonding&nbsp;; ifenslave</p>


<p>Récemment nous avons vu l'<a href="http://linux-attitude.fr/post/aggregation-de-routes">agrégation sur couche 3</a>, celle d'IP. Naturelle, pratique pour redonder des chemins réseaux, elle n'est pas forcément adaptée pour de la redondance sur réseau local.</p>


<p>Il existe une autre solution qui fonctionne sur la couche du dessous, le bonding (aussi appelé trunking chez les fabriquants de switch, ou etherchannel qui est la cas particulier du mode 802.3ad). Il permet de communiquer à travers 2 chemins physiques différents avec une machine présente sur le même réseau local.</p>



<p>Le principe est très simple, au lieu de mettre un câble réseau on en met 2. Au lieu de mettre une carte, on en met 2</p>


<h3>Matériel</h3>

<p>Il vous faut&nbsp;:</p>
<ul>
<li>2 cartes réseau</li>
<li>2 câbles</li>
<li>un switch
<ul>
<li>ou 2</li>
<li>ou le même matériel sur la machine en face (connexion directe sans switch)</li>
</ul></li>
</ul>

<p>Selon le mode de bonding choisi, il se peut que vous ayez besoin d'un support particulier sur le switch et sur les driver des cartes.</p>


<h3>Méthode</h3>

<p>C'est simple, on crée un nouvelle interface virtuelle, comme on ferait avec un bridge et on lui affecte 2 cartes physiques.</p>

<pre>
# bizarrement le bonding se configure au modprobe ... on a vu mieux
# mode actif-passif et détection auto du débranchement du câble en 100ms
$ modprobe bonding mode=1 miimon=100

# Ajout des interfaces au bond
$ ip link set bond0 up
$ ifenslave bond0 eth0
$ ifenslave bond0 eth1

# Configuration comme une carte normale :
$ ip addr add 10.0.0.1/24 dev bond0
</pre>


<p>Reste plus qu'a faire pareil si besoin de l'autre côté et c'est bon on peut maintenant débrancher un câble sans être coupé du réseau (enfin pas plus de 100ms).</p>


<p>Pour rendre la chose permanente, il faut ajouter le chargement de module avec ses options dans /etc/modules et mettre les lignes ifenslave en post-up dans /etc/network/interfaces.</p>


<h3>Bridge, machinbox</h3>

<p>Pourquoi ne fait-on pas un bridge, c'est beau un bridge ?<br />
Il faut savoir qu'un bridge n'a pas le même usage que le bonding. Le bridge est là pour relier 2 réseaux <strong>différents</strong>. Nous voulons seulement relier 2 cartes sur le <strong>même</strong> réseau. Évitez d'ajouter un bridge là où ce n'est pas nécessaire, ça vous évitera les problèmes de boucle et de spanning tree.</p>


<p>Et si on a un bridge en face ?<br />
Remarquez que c'est le cas de la plupart des machinbox et autres routeurs wifi. Ils installent un bridge entre les ports wifi et les ports ethernet ce qui leur permet de ne pas avoir à router les paquets. Dans ce cas vous êtes sur le même réseau des 2 côtés, comme sur un switch. Vous pouvez alors mettre du bonding sur votre machine.</p>

<pre>
# cette fois on détecte la coupure avec des envois de paquet arp
# l'adresse ip est celle de votre passerelle juste en face
$ modprobe bonding mode=1 arp_interval=100 arp_ip_target=192.168.0.1 primary=eth0

$ ip link set bond0 up
$ ifenslave bond0 eth0
$ ifenslave bond0 wlan0

# configuration auto tant qu'à faire
$ dhclient bond0
</pre>


<p>Et voilà vous êtes toujours connectés, de façon automatique, même lors d'un basculement entre wifi et filaire.</p>


<h3>Choix de configuration</h3>

<p>Avant de mettre en place une solution de bonding, il faut savoir à quoi il va servir, car plusieurs modes sont disponibles, je ne vous ai parlé que du mode 1 ou active-backup.</p>


<p>Si vous avez 2 câbles, 2 cartes et un switch vous vous prémunissez d'une erreur de branchement (humaine) ou d'une carte qui grille (rare), mais aussi d'un port de switch qui grille.</p>


<p>Ajoutez un 2e switch et vous vous prémunissez en plus du cas du switch entier qui grille ou de sa prise qui se retrouve débranchée par erreur.</p>


<p>Il est aussi possible d'avoir pour but de doubler la bande passante de la machine. Dans ce cas choisissez de préférence un switch adapté (pour en profiter dans les 2 sens) et le mode 802.3ad.</p>


<p>Enfin un cas très intéressant est de pouvoir passer d'un mode de transport à un autre automatiquement en fonction des besoins&nbsp;: wifi &lt;-&gt; câble physique.</p>


<p>La liste des modes ainsi que la <a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding#Bonding_Driver_Options" hreflang="en">documentation complète</a> se trouve sur le site de la linux fundation.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/aggregation-de-routes' rel='bookmark' title='Permanent Link: Aggrégation de routes'>Aggrégation de routes</a></li>
<li><a href='http://linux-attitude.fr/post/des-lutins-dans-votre-noyau' rel='bookmark' title='Permanent Link: Des lutins dans votre noyau'>Des lutins dans votre noyau</a></li>
<li><a href='http://linux-attitude.fr/post/des-lutins-partout' rel='bookmark' title='Permanent Link: Des lutins partout'>Des lutins partout</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/aggregation-de-lien/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Aggrégation de routes</title>
		<link>http://linux-attitude.fr/post/aggregation-de-routes?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aggregation-de-routes</link>
		<comments>http://linux-attitude.fr/post/aggregation-de-routes#comments</comments>
		<pubDate>Mon, 20 Dec 2010 18:09:32 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[Routeur]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1186</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: ip route add .. nexthop via ... Aujourd'hui on fait des nœuds. Comme deux exemples valent mieux qu'un, je vous propose d'étudier 2 cas&#160;: la personne qui a 2 cartes réseau (wifi, pas wifi) pointant vers le même routeur la personne qui un routeur (genre pour une résidence) pointant vers plusieurs FAI [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: ip route add .. nexthop via ...</p>


<p>Aujourd'hui on fait des nœuds.</p>


<p>Comme deux exemples valent mieux qu'un, je vous propose d'étudier 2 cas&nbsp;:</p>
<ul>
<li>la personne qui a 2 cartes réseau (wifi, pas wifi) pointant vers le même routeur</li>
<li>la personne qui un routeur (genre pour une résidence) pointant vers plusieurs FAI</li>
</ul>

<p>Comment faire pour répartir les connexions entre les différentes sorties proposées sans tout casser&nbsp;?</p>


<h3>iproute 2</h3>

<p>Heureusement tout est dans le noyal&nbsp;! La table de routage sait faire ce genre de chose.</p>


<p>Contrairement à ce qu'on pourrait croire mettre 2 routes par défaut ne marche pas. Le noyau n'en choisirait qu'une et la garderait jusqu'à ce que quelqu'un intervienne.</p>


<p>Il est par contre possible d'avoir une route vers une destination pointant vers plusieurs intermédiaires en même temps. C'est ce que fait l'option nexthop de la commande ip route.</p>


<h3>Deux cartes réseau</h3>

<p>Prenons le cas de la personne qui a 2 interfaces vers le même routeur&nbsp;:</p>
<pre>
$ ip route add default nexthop  via 10.0.0.1 dev eth0 weight 100 nexthop via 10.0.0.1 dev wlan0 weight 1
</pre>

<p>On choisit un poids de 100 pour faire en sorte d'utiliser presque toujours la première route plutôt que la deuxième. Bien sûr si une des routes est indisponibles, seul l'autre sera utilisée. Mais le système de routage ne le sait que grâce à l'interface elle même, il faut donc que l'interface supporte miimon pour détecter le débranchement d'un câble ou que vous la désactiviez à la main.</p>


<p>Ce genre de problème serait probablement mieux résolu avec un bridge ou du bonding, mais ce le sujet d'un prochain article.</p>


<h3>Deux FAI</h3>


<p>Plus difficile, prenons le cas de la personne qui a 2 FAI&nbsp;:</p>
<pre>
$ ip route add default nexthop  via 10.0.0.1 dev eth0 weight 1 nexthop via 192.168.0.1 dev eth1 weight 1
</pre>

<p>Et n'oubliez pas que pour que ca marche vraiment, il faudra que vous ayez du NAT quelque part (pour ipv6 on en reparle lorsque ça existe).</p>


<p>Il faut savoir que la table de routage dispose d'un cache. L'avantage est qu'il n'y a pas spécialement besoin de bidouiller avec le source routing pour que ça marche, ça fonctionne tel quel. L'inconvénient est qu'il n'y aura qu'une seule route par destination. Le partage de charge ne sera donc pas nécessairement équilibré puisque si tout le monde va sur youtube, un seul FAI sera utilisé.</p>


<p>Pour équilibrer le transfert de paquet il y a l'option equalize, mais elle nécessite d'une part un patch du noyau et d'autre part de passer un certain temps à faire sa configuration réseau car il faut maintenant router à la main les paquets d'une même connexion vers le même FAI (sinon le destinataire est perdu). C'est une solution plus compliquée mais qui peut être utile si vous n'avez que peu d'utilisateur ou de destinataires.</p>


<p>Enfin le failover ne se fait automatiquement que dans un cas, si le réseau est désactivé sur une carte (laquelle doit suporter mii-tools) . Sinon vous devez le faire manuellement&nbsp;:</p>
<pre>
$ ip link set dev eth0 down
</pre>

<p>Et si vous voulez le faire automatiquement lorsqu'un FAI ne répond plus, c'est à vous de mettre un script qui va vérifier la connectivité et faire des modifications si besoin.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/aggregation-de-lien' rel='bookmark' title='Permanent Link: Aggrégation de lien'>Aggrégation de lien</a></li>
<li><a href='http://linux-attitude.fr/post/routage-ameliore' rel='bookmark' title='Permanent Link: Routage amélioré'>Routage amélioré</a></li>
<li><a href='http://linux-attitude.fr/post/interface-de-loopback' rel='bookmark' title='Permanent Link: Interface de loopback'>Interface de loopback</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a>, <a href="http://linux-attitude.fr/tag/routeur" title="Routeur" rel="tag">Routeur</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/aggregation-de-routes/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comment se faire embaucher en utilisant wireshark</title>
		<link>http://linux-attitude.fr/post/comment-se-faire-embaucher-en-utilisant-wireshark?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=comment-se-faire-embaucher-en-utilisant-wireshark</link>
		<comments>http://linux-attitude.fr/post/comment-se-faire-embaucher-en-utilisant-wireshark#comments</comments>
		<pubDate>Tue, 14 Dec 2010 17:48:11 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Curiosité]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1183</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: tcpdump, wireshark Il y a quelque temps, un ami me dit qu'il a trouvé comment se faire embaucher en passant ses nuits devant des trames réseau. Tout comme lire des logs sans filtre, lire les dump réseau est une activité qui bousille le cerveau. Je me suis donc dit qu'il était complètement [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: tcpdump, wireshark</p>


<p>Il y a quelque temps, un ami me dit qu'il a trouvé comment se faire embaucher en passant ses nuits devant des trames réseau.</p>


<p>Tout comme lire des logs sans filtre, lire les dump réseau est une activité qui bousille le cerveau. Je me suis donc dit qu'il était complètement barré.</p>


<p>Puis il y a quelques jours, il m'envoie le dump d'un accès à un site web, je vous le livre légèrement filtré. Devinez ce qu'on trouve dans l'en-tête HTTP de la réponse ...</p>

<pre>
GET /index.html HTTP/1.1
Host: xxx.wordpress.com

HTTP/1.0 200 OK
Server: nginx
Date: Sat, 13 Nov 2010 12:30:04 GMT
Content-Type: text/html; charset=UTF-8
X-hacker: If you're reading this, you should visit xxx.com/jobs and apply to join the fun, mention this header.
</pre>


<p>Du boulot&nbsp;!</p>


<p>Je ne vous ai pas mâché le travail et vous ne retrouverez pas le site si facilement.</p>


<p>Vous aussi, passez vos nuit à lire des trames, ou mieux, mettez la même chose sur votre site, pour être sûr d'embaucher quelqu'un un minimum compétent le jour où vous tomberez dessus.</p>


<p>Pour cela, si vous avez un apache allez dans sa conf et ajoutez&nbsp;:</p>
<pre>
header set X-Hadopi Enfoiré de pirate je vais te couper ta connexion - Un ministre anonyme
</pre>

<p>Je vous laisse chercher pour les autres serveurs qu'apache.</p>



<p>Pour continuer dans le même ordre d'idée, on peut gagner des netbook en regardant attentivement des <a href="http://blog.macgeneration.com/google-cache-des-equations-easter-egg-dans-ses-videos" hreflang="fr">vidéos de google</a>.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/en-vrac-12' rel='bookmark' title='Permanent Link: En vrac (12)'>En vrac (12)</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/curiosite" title="Curiosité" rel="tag">Curiosité</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/comment-se-faire-embaucher-en-utilisant-wireshark/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Routage amélioré</title>
		<link>http://linux-attitude.fr/post/routage-ameliore?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=routage-ameliore</link>
		<comments>http://linux-attitude.fr/post/routage-ameliore#comments</comments>
		<pubDate>Mon, 06 Dec 2010 17:58:11 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[Routeur]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1171</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: ip rule&#160;; ip route Le routage IP est communément défini en fonction de la destination. Remarquez c'est logique. La fonction d'un routeur est de faire en sorte que les paquets arrivent à bon port (héhé), la route à prendre ne devrait dépendre que de cette destination. Mais comme pour les GPS, il [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: ip rule&nbsp;; ip route</p>


<p>Le routage IP est communément défini en fonction de la destination. Remarquez c'est logique. La fonction d'un routeur est de faire en sorte que les paquets arrivent à bon port (héhé), la route à prendre ne devrait dépendre que de cette destination.</p>


<p>Mais comme pour les GPS, il peut parfois y avoir quelques options à prendre en compte, êtes vous un camion (passage de tunnels) ou un piéton (passage d'escaliers)&nbsp;? Pour toutes les options de routage qui ne dépendent pas uniquement de la destination, linux utilise ce qu'il appelle "policy based routing" qui est une option qui doit être activée dans le noyau (c'est le cas pour la plupart des distributions).</p>


<p>Le concept est simple. Vous écrivez des règles pour matcher les paquets, lesquelles vont décider de la table de routage à choisir. La table en question étant une table de routage tout ce qu'il y a de plus standard telle que vous connaissez sous linux.</p>


<h3>Les tables</h3>

<p>Les tables se créent et se gèrent avec ip route (comme d'hab). Exemple&nbsp;:</p>
<pre>
$ ip route add default via 10.0.0.1 table 1
$ ip route add default via 10.0.0.2 table 2
</pre>


<p>Vous avez 255 tables à votre disposition, j'espère que vous saurez en profiter.</p>


<p>Vous pouvez donner un nom plutôt qu'un numéro à votre table. C'est tout simple, il suffit d'éditer le fichier /etc/iproute2/rt_tables.
Et voila&nbsp;:</p>
<pre>
$ ip route del default table matable
</pre>

<p>Remarquez que les fichiers permettent de nommer de nombreuses choses qui sont représentées par des numéros pour la commande ip.
<span id="more-1171"></span></p>


<p>Et pour le contenu des routes, c'est la commande show, par défaut c'est la table "main" qui est affichée avec la commande "ip route show". Pour en voir une autre&nbsp;:</p>
<pre>
# la table local ne doit pas être modifiée à la main, elle est gérée par le noyau
$ ip route show table local
</pre>


<p>Ça c'était la partie facile.</p>


<h3>Les règles</h3>

<p>Les règles se créent avec ip rules</p>


<p>Il est possible de créer des règles sur l'adresse source, l'interface réseau sur laquelle le paquet a été reçu, ou même sur une marque posée sur le paquet par netfilter (fwmark, ça permet de faire tout et n'importe quoi). Pour la liste complète, voyez le manuel.</p>
<pre>
$ ip rule add iif eth3 table matable
</pre>


<p>Par défaut 3 règles existent, la première force le passage par la table "local" pour les route gérées par le noyau. Les 2 dernières servent de défaut et pointent vers la table de routage habituelle&nbsp;: "main". On peut les voir avec&nbsp;:</p>
<pre>
$ ip rule show
</pre>


<h3>Exemple</h3>

<p>Supposons un monde composé d'un centre de production (avec des serveurs), d'un réseau avec des postes de travail et d'un accès au monde extérieur.</p>


<p>On va faire passer les postes de travail à travers un firewall pour sortir et pas les serveurs.</p>

<pre>
# TABLE SPÉCIFIQUE : routage spécifique pour les paquets en provenance du réseau user
$ ip rule add iff ethUser table 1
# pas de firewall pour accéder aux serveurs en interne
$ ip route add $SERVER_NETWORK dev ethServer table 1
# on les envoi vers le firewall par défaut
$ ip route add default via $FW_IP table 1

# TABLE PRINCIPALE : ne pas oublier de répéter les règles communes
$ ip route add $SERVER_NETWORK dev ethServer
# et une route de sortie aussi pour les non User
$ ip route add default via $3G_BOX
</pre>


<p><strong>PS</strong>&nbsp;: pour ceux qui ne savent pas encore que je suis sur twitter, cette semaine c'est une série d'astuces réseau.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/iproute2' rel='bookmark' title='Permanent Link: iproute2'>iproute2</a></li>
<li><a href='http://linux-attitude.fr/post/aggregation-de-routes' rel='bookmark' title='Permanent Link: Aggrégation de routes'>Aggrégation de routes</a></li>
<li><a href='http://linux-attitude.fr/post/respections-le-protocole' rel='bookmark' title='Permanent Link: Respections le protocole'>Respections le protocole</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a>, <a href="http://linux-attitude.fr/tag/routeur" title="Routeur" rel="tag">Routeur</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/routage-ameliore/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 26/71 queries in 0.239 seconds using apc
Object Caching 1746/1781 objects using apc
Content Delivery Network via N/A

Served from: linux-attitude.fr @ 2012-05-21 23:14:01 -->
