Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 3828

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Cache web transparent utilisant netfilter, iproute2, ipchains et squid</title><link href="style.css" rel="stylesheet" type="text/css" /><meta content="DocBook XSL Stylesheets V1.73.2" name="generator" /><link rel="start" href="index.html" title="HOWTO du routage avancé et du contrôle de trafic sous Linux" /><link rel="up" href="ch15.html" title="Chapitre 15. Recettes de cuisine" /><link rel="prev" href="ch15s04.html" title="Donner la priorité au trafic interactif" /><link rel="next" href="ch15s06.html" title="Circonvenir aux problèmes de la découverte du MTU de chemin en configurant un MTU par routes" /></head><body><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Cache web transparent utilisant <span class="application">netfilter</span>,
  <span class="application">iproute2</span>, <span class="application">ipchains</span> et
  <span class="application">squid</span></th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch15s04.html">Précédent</a> </td><th align="center" width="60%">Chapitre 15. Recettes de cuisine</th><td align="right" width="20%"> <a accesskey="n" href="ch15s06.html">Suivant</a></td></tr></table><hr /></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="lartc.cookbook.squid" />Cache web transparent utilisant <span class="application">netfilter</span>,
  <span class="application">iproute2</span>, <span class="application">ipchains</span> et
  <span class="application">squid</span></h2></div></div></div><p>
Cette section a été envoyée par le lecteur Ram Narula de "Internet for
Education" (Internet pour l'éducation) (Thailande).
</p><p>
La technique habituelle pour réaliser ceci dans Linux est probablement
l'utilisation d'ipchains APRES s'être assuré que le trafic sortant du port 80
(web) est routé à travers le serveur faisant fonctionner squid.
</p><p>
Il y a 3 méthodes communes pour être sûr que le trafic sortant du port 80
est routé vers le serveur faisant fonctionner squid et une quatrième est
introduite ici.
</p><p>
<div class="variablelist"><dl><dt><span class="term">La passerelle le fait.</span></dt><dd><p>
Si vous pouvez dire à votre passerelle que les paquets sortants à
destination du port 80 doivent être envoyés vers l'adresse IP du serveur
squid.
</p><p>
MAIS
</p><p>
Ceci amènerait une charge supplémentaire sur le routeur et des
routeurs commerciaux peuvent même ne pas supporter ceci.
</p></dd><dt><span class="term">Utiliser un commutateur Couche 4.</span></dt><dd><p>
Les commutateurs Couche 4 peuvent manipuler ceci sans aucun problème.
</p><p>
MAIS
</p><p>
Le coût pour un tel équipement est en général très élevé. Typiquement, un
commutateur couche 4 coûte normalement plus cher qu'un serveur
classique + un bon serveur linux.
</p></dd><dt><span class="term">Utiliser le serveur cache comme passerelle réseau</span></dt><dd><p>
Vous pouvez forcer TOUT le trafic à travers le serveur cache
</p><p>
MAIS
</p><p>
Ceci est plutôt risqué dans la mesure où Squid utilise beaucoup de
ressources CPU, ce qui peut conduire à une baisse des performances de tout le
réseau. Le serveur peut également ne plus fonctionner et personne sur le
réseau ne pourra accéder à Internet si cela a lieu.
</p></dd><dt><span class="term">Routeur Linux+NetFilter.</span></dt><dd><p>
En utilisant Netfilter, une autre technique peut être implémentée. Celle-ci
consiste à utiliser Netfilter pour "marquer" les paquets à destination du
port 80 et à utiliser iproute2 pour router les paquets "marqués" vers le
serveur Squid.
</p></dd></dl></div>

<pre class="screen">|----------------|
| Implémentation |
|----------------|

 Adresses utilisées
 10.0.0.1 naret (serveur NetFilter)
 10.0.0.2 silom (serveur Squid)
 10.0.0.3 donmuang (routeur connecté à Internet)
 10.0.0.4 kaosarn (un autre serveur sur le réseau)
 10.0.0.5 RAS
 10.0.0.0/24 réseau principal
 10.0.0.0/19 réseau total

|----------------|
|Schéma du réseau|
|----------------|

Internet
|
donmuang
|
------------hub/commutateur----------
|        |             |       |
naret   silom        kaosarn  RAS etc.
</pre>

Premièrement, faire en sorte que tout le trafic passe par naret en étant
sûr que c'est la passerelle par défaut, à l'exception de silom. La
passerelle par défaut de silom doit être donmuang (10.0.0.3) ou ceci
créerait une boucle du trafic web.
</p><p>
(Tous les serveurs sur mon réseau avaient 10.0.0.1 comme passerelle par
défaut qui était l'ancienne adresse du routeur donmuang. Cela m'a conduit à
attribuer 10.0.0.3 comme adresse IP à donmuang et à donner 10.0.0.1 comme
adresse IP à naret.)
</p><p>

<pre class="screen">Silom
-----
-configurer squid et ipchains 
</pre>

</p><p>
Pour la configuration du serveur Squid sur silom, soyez sûr que celui-ci supporte 
le cache/proxy transparent (transparent caching/proxying).
Le port par défaut pour squid est en général 3128. Tout le trafic pour le
port 80 doit donc être redirigé localement vers le port 3128. Ceci peut être
fait en utilisant ipchains comme suit :
</p><p>

<pre class="screen">silom# ipchains -N allow1
silom# ipchains -A allow1 -p TCP -s 10.0.0.0/19 -d 0/0 80 -j REDIRECT 3128
silom# ipchains -I input -j allow1
</pre>

</p><p>
Ou, avec netfilter:

<pre class="screen">silom# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
</pre>

</p><p>
(note: vous pouvez avoir également d'autres entrées)
</p><p>
Pour plus d'informations sur la configuration du serveur Squid, se référer
à la page FAQ Squid sur <a class="ulink" href="http://squid.nlanr.net" target="_top">http://squid.nlanr.net</a>).
</p><p>
Soyez sûr que l"ip forwarding" est actif sur votre serveur et que la
passerelle par défaut pour ce serveur est donmuand (PAS naret).
</p><p>

<pre class="screen">Naret
-----
- configurer squid et ipchains 
- désactiver les messages icmp REDIRECT (si besoin)
</pre>

</p><p>

<div class="orderedlist"><ol type="1"><li><p>
"Marquer" les paquets à destination du port 80 avec la valeur 2

<pre class="screen"> naret# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 80 \
 -j MARK --set-mark 2
</pre>

</p></li><li><p>
Configurer iproute2 de sorte qu'il route les paquets avec la
marque 2 vers silom

<pre class="screen">naret# echo 202 www.out &gt;&gt; /etc/iproute2/rt_tables
naret# ip rule add fwmark 2 table www.out
naret# ip route add default via 10.0.0.2 dev eth0 table www.out
naret# ip route flush cache

</pre>
</p><p>
Si donmuang et naret sont sur le même réseau, naret ne doit pas envoyer de
messages icmp REDIRECT. Ceux-ci doivent être désactivés par :

<pre class="screen">naret# echo 0 &gt; /proc/sys/net/ipv4/conf/all/send_redirects
naret# echo 0 &gt; /proc/sys/net/ipv4/conf/default/send_redirects
naret# echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/send_redirects

</pre>

</p></li></ol></div>

</p><p>
La configuration est terminée, vérifions-la.
</p><p>

<pre class="screen">Sur naret:

naret# iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
MARK       tcp  --  anywhere             anywhere           tcp dpt:www MARK set 0x2 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

naret# ip rule ls
0:      from all lookup local 
32765:  from all fwmark        2 lookup www.out 
32766:  from all lookup main 
32767:  from all lookup default 

naret# ip route list table www.out
default via 203.114.224.8 dev eth0 

naret# ip route   
10.0.0.1 dev eth0  scope link 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.1
127.0.0.0/8 dev lo  scope link 
default via 10.0.0.3 dev eth0 

(soyez sûr que silom appartiens à l'une des lignes ci-dessus. Dans ce cas,
c'est la ligne avec 10.0.0.0/24)

|------|
|-FAIT-|
|------|


</pre>

</p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N12084" />Schéma du trafic après l'implémentation</h3></div></div></div><pre class="screen">|---------------------------------------|
|Schéma du trafic après l'implémentation|
|---------------------------------------|

INTERNET
/\
||
\/
-----------------routeur donmuang---------------------
/\                                      /\         ||
||                                      ||         ||
||                                      \/         ||
naret                                  silom       ||
*trafic à destination du port 80=====&gt;(cache)      ||
/\                                      ||         ||
||                                      \/         \/
\\===================================kaosarn, RAS, etc.
</pre><p>
Noter que le réseau est asymétrique car il y a un saut supplémentaire sur
le chemin sortant.
</p><pre class="screen">Voici le cheminement d'un paquet traversant le réseau de kaosarn allant et
venant d'Internet.

Pour le trafic web/http :
requête http kaosarn-&gt;naret-&gt;silom-&gt;donmuang-&gt;Internet
réponse http de Internet-&gt;donmuang-&gt;silom-&gt;kaosarn

Pour les requêtes non web/http (par ex. telnet) :
données sortantes kaosarn-&gt;naret-&gt;donmuang-&gt;Internet
données entrantes d'Internet-&gt;donmuang-&gt;kaosarn
</pre></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch15s04.html">Précédent</a> </td><td align="center" width="20%"><a accesskey="u" href="ch15.html">Niveau supérieur</a></td><td align="right" width="40%"> <a accesskey="n" href="ch15s06.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">Donner la priorité au trafic interactif </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> Circonvenir aux problèmes de la découverte du MTU de chemin en
  configurant un MTU par routes</td></tr></table></div></body></html>