| <?xml version="1.0" encoding="ISO-8859-1"?> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head> |
| <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" /> |
| <meta content="noindex, nofollow" name="robots" /> |
| <!-- |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| This file is generated from xml source: DO NOT EDIT |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| --> |
| <title>Problèmes DNS avec Apache - Serveur Apache HTTP</title> |
| <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> |
| <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> |
| <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /> |
| <link href="./images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/dns-caveats.html" rel="canonical" /></head> |
| <body id="manual-page"><div id="page-header"> |
| <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p> |
| <p class="apache">Serveur Apache HTTP Version 2.0</p> |
| <img alt="" src="./images/feather.gif" /></div> |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> |
| <div id="path"> |
| <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.0</a></div><div id="page-content"><div class="retired"><h4>Please note</h4> |
| <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p> |
| <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/dns-caveats.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Problèmes DNS avec Apache</h1> |
| <div class="toplang"> |
| <p><span>Langues Disponibles: </span><a href="./en/dns-caveats.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="./es/dns-caveats.html" hreflang="es" rel="alternate" title="Español"> es </a> | |
| <a href="./fr/dns-caveats.html" title="Français"> fr </a> | |
| <a href="./ja/dns-caveats.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="./ko/dns-caveats.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="./tr/dns-caveats.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> |
| </div> |
| |
| <p>L'ensemble de cette page pourrait se résumer à la phrase : ne |
| jamais configurer Apache de telle sorte qu'il s'appuie sur des |
| résolutions DNS pour parcourir ses fichiers de configuration. |
| Une telle configuration risque d'engendrer des problèmes de |
| fiabilité (le serveur peut ne pas démarrer), des attaques de type |
| déni et de vol de service (comme par exemple des utilisateurs volant |
| les hits d'autres utilisateurs).</p> |
| </div> |
| <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#example">Un exemple simple</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#denial">Déni de Service</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#main">L'Adresse du "serveur principal"</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#tips">Comment éviter ces problèmes</a></li> |
| <li><img alt="" src="./images/down.gif" /> <a href="#appendix">Appendice: Perspectives futures</a></li> |
| </ul></div> |
| <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="example" id="example">Un exemple simple</a></h2> |
| |
| |
| <div class="example"><p><code> |
| <VirtualHost www.abc.dom> <br /> |
| ServerAdmin webgirl@abc.dom <br /> |
| DocumentRoot /www/abc <br /> |
| </VirtualHost> |
| </code></p></div> |
| |
| <p>Pour qu'Apache fonctionne correctement, il a absolument besoin |
| de deux informations pour chacun de ses serveurs virtuels : |
| <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> ainsi qu'au moins une |
| adresse IP à laquelle le serveur s'attachera pour répondre. |
| L'exemple ci-dessus ne précise pas l'adresse IP, si bien qu'Apache doit |
| utiliser le DNS pour trouver l'adresse de <code>www.abc.dom</code>. |
| Si, pour une raison ou une autre, le DNS ne fonctionne pas au moment |
| où Apache lit ses fichiers de configuration, le serveur virtuel |
| <strong>ne sera pas configuré</strong>. Il sera incapable de répondre |
| aux requêtes. Jusqu'à la version 1.2, Apache refusait même de |
| démarrer dans ce cas de figure.</p> |
| |
| <p>Prenons le cas où l'adresse de <code>www.abc.dom</code> est 10.0.0.1 |
| et considérons cet extrait de configuration :</p> |
| |
| <div class="example"><p><code> |
| <VirtualHost 10.0.0.1> <br /> |
| ServerAdmin webgirl@abc.dom <br /> |
| DocumentRoot /www/abc <br /> |
| </VirtualHost> |
| </code></p></div> |
| |
| <p>Cette fois, Apache a besoin d'utiliser la résolution DNS |
| inversée pour déterminer le nom <code>ServerName</code> de ce |
| serveur virtuel. Si cette résolution n'aboutit pas, le serveur |
| virtuel sera partiellement mis hors service (jusqu'à la version |
| 1.2, Apache refusait même de démarrer dans ce cas de figure). Si |
| le serveur virtuel est un serveur basé sur un nom (name-based), |
| il sera totalement hors service, mais s'il s'agit d'un serveur |
| par IP (IP-based), il fonctionnera correctement. Cependant, dans |
| le cas où Apache doit générer une adresse complète URL en |
| s'appuyant sur le nom du serveur, il échouera à fournir une |
| adresse valide.</p> |
| |
| <p>Voici un extrait de configuration qui résout ces deux problèmes :</p> |
| |
| <div class="example"><p><code> |
| <VirtualHost 10.0.0.1> <br /> |
| ServerName www.abc.dom <br /> |
| ServerAdmin webgirl@abc.dom <br /> |
| DocumentRoot /www/abc <br /> |
| </VirtualHost> |
| </code></p></div> |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="denial" id="denial">Déni de Service</a></h2> |
| |
| |
| <p>Il existe (au moins) deux problèmes possibles de déni de service. |
| Les versions d'Apache antérieures à 1.2 ne démarreront pas si |
| l'une des deux requêtes DNS citées ci-dessus n'aboutissent pas pour |
| un de vos serveurs virtuels. Dans certains cas, les entrées DNS |
| sont hors de contrôle de l'administrateur Web ; par exemple si |
| <code>abc.dom</code> appartient à un de vos clients qui a la |
| maîtrise de son propre DNS, celui-ci peut empêcher votre serveur |
| Web (avant la version 1.2) de démarrer, simplement en effaçant |
| l'enregistrement <code>www.abc.dom</code> du DNS.</p> |
| |
| <p>L'autre problème possible est bien plus pernicieux. Dans la |
| configuration suivante :</p> |
| |
| <div class="example"><p><code> |
| <VirtualHost www.abc.dom> <br /> |
| ServerAdmin webgirl@abc.dom <br /> |
| DocumentRoot /www/abc <br /> |
| </VirtualHost> <br /> |
| <br /> |
| <VirtualHost www.def.dom> <br /> |
| ServerAdmin webguy@def.dom <br /> |
| DocumentRoot /www/def <br /> |
| </VirtualHost> |
| </code></p></div> |
| |
| <p>Supposons que <code>www.abc.dom</code> ait l'adresse 10.0.0.1, |
| et que <code>www.def.dom</code> ait l'adresse 10.0.0.2. Supposons |
| également que <code>def.com</code> ait la main sur son DNS. |
| Cette configuration peut permettre à <code>def.dom</code> de |
| détourner vers son serveur tout le trafic destiné à |
| <code>abc.dom</code>. Pour ce faire, il doit simplement |
| positionner le champ DNS de <code>www.def.dom</code> sur 10.0.0.1, |
| et rien ne peut l'empêcher de faire, puisqu'il a la main sur |
| son DNS.</p> |
| |
| <p>Les requêtes à destination de 10.0.0.1 (incluant celles dont |
| l'URL contient <code>http://www.abc.com/tout_et_n_importe_quoi</code>) |
| seront envoyées au serveur virtuel de <code>def.dom</code>. Une |
| bonne compréhension des mécanismes internes d'Apache concernant |
| la gestion des serveur virtuels est requise. |
| <a href="vhosts/details.html">Ce document</a> explique ce |
| fonctionnement.</p> |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="main" id="main">L'Adresse du "serveur principal"</a></h2> |
| |
| |
| <p>L'implémentation du support des serveur virtuels <a href="vhosts/name-based.html">par nom</a> depuis Apache 1.1 suppose |
| qu'Apache connaisse la ou les adresse(s) IP sur lesquelles le serveur |
| écoute. Pour déterminer cette adresse, Apache utilise soit la |
| directive globale <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> |
| (si elle est présente), soit un appel à la fonction C |
| <code>gethostname</code> (cet appel renvoie le même résultat |
| que la commande "hostname" entrée sur une ligne de commande). |
| Une résolution DNS est alors effectuée sur l'adresse obtenue. |
| Pour l'instant, il n'existe aucun moyen de contourner cette |
| requête DNS.</p> |
| |
| <p>Pour se prémunir du cas où cette résolution DNS échouerait à |
| cause de la défaillance du serveur DNS, le nom d'hôte peut être |
| ajouté dans <code>/etc/hosts</code> (il y est probablement déjà). |
| Assurez vous que votre machine est configurée pour lire ce fichier |
| <code>/etc/hosts</code> en cas de défaillance du serveur DNS. |
| Pour cela, selon votre système d'exploitation, il vous faudra configurer |
| <code>/etc/resolv.conf</code> ou <code>/etc/nsswitch.conf</code>.</p> |
| |
| <p>Au cas où votre serveur n'a pas besoin de réaliser des requêtes |
| DNS pour d'autres raisons que de démarrer Apache, il est possible |
| que vous puissiez vous en sortir en positionnant la variable |
| d'environnement <code>HOSTRESORDER</code> sur "local". Ceci dépend |
| cependant de votre système d'exploitation et des librairies de |
| résolution DNS que vous utilisez. Ceci affecte également le |
| comportement des scripts CGIs, à moins que vous n'utilisiez |
| <code class="module"><a href="./mod/mod_env.html">mod_env</a></code> pour contrôler leur environnement. La |
| meilleure solution est de consulter les pages "man" ou les FAQs |
| spécifiques à votre système d'exploitation.</p> |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="tips" id="tips">Comment éviter ces problèmes</a></h2> |
| |
| |
| <ul> |
| <li> |
| spécifier les adresses IP dans les |
| <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> |
| </li> |
| |
| <li> |
| spécifier les adresses IP au moyen de |
| <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code> |
| </li> |
| |
| <li> |
| s'assurer que tous les serveurs virtuels spécifient explicitement |
| leur <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> |
| </li> |
| |
| <li>créer un serveur virtuel <code><VirtualHost _default_:*></code> |
| qui ne sert aucune page</li> |
| </ul> |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> |
| <div class="section"> |
| <h2><a name="appendix" id="appendix">Appendice: Perspectives futures</a></h2> |
| |
| |
| <p>Les problèmes liés au DNS sont très indésirables. À partir |
| d'Apache 1.2, nous avons travaillé à ce qu'Apache démarre même |
| dans le cas où les requêtes DNS échouent, mais ce n'est pas |
| forcément la meilleure des solutions. En tous cas, obliger |
| l'administrateur à spécifier explicitement des adresses IP est |
| également très indésirable sur le réseau Internet tel qu'il |
| existe actuellement, où le nombre d'adresses IP commence à manquer.</p> |
| |
| <p>Une réponse possible au problème de vol de trafic décrit ci-avant |
| pourrait être de réaliser une résolution inverse DNS sur l'adresse IP |
| renvoyée par la première requête, et de comparer les deux noms |
| obtenus -- lorsqu'ils sont différents, le serveur virtuel serait |
| désactivé. Ceci suppose que la configuration pour la résolution |
| inverse DNS soit faite correctement (c'est une chose à laquelle |
| les administrateurs DNS commencent à s'habituer, en raison de |
| l'utilisation de plus en plus répandue des requêtes DNS |
| "double-reverse" par les serveurs FTP et les filtrages |
| "TCP wrappers").</p> |
| |
| <p>Dans tous les cas de figures, il ne semble pas possible de |
| démarrer de façon fiable un serveur virtuel quand la requête |
| DNS a échoué, à moins de recourir à l'utilisation d'adresses |
| IP fixes. Des solutions partielles, telles que désactiver des |
| portions de la configuration selon les tâches attribuées au |
| serveur Web, risquent d'être pires que ne pas démarrer du tout.</p> |
| |
| <p>Au fur et à mesure que HTTP/1.1 se répand, et que les navigateurs |
| et les serveurs mandataires envoient l'en-tête <code>Host</code>, |
| il devient possible d'éviter complètement l'utilisation de serveurs |
| virtuels par IP. Dans ce cas, les serveurs Web n'ont plus aucun |
| besoin de réaliser des requêtes DNS lors de leur démarrage. Au 1er |
| mars 1997, ces fonctionnalités ne sont pas suffisamment déployées pour |
| que des serveurs Web sensibles les mettent en oeuvre (NdT : cette |
| remarque est aujourd'hui complètement dépassée, HTTP/1.1 est |
| désormais supporté par l'immense majorité des navigateurs et |
| des serveurs mandataires).</p> |
| </div></div> |
| <div class="bottomlang"> |
| <p><span>Langues Disponibles: </span><a href="./en/dns-caveats.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="./es/dns-caveats.html" hreflang="es" rel="alternate" title="Español"> es </a> | |
| <a href="./fr/dns-caveats.html" title="Français"> fr </a> | |
| <a href="./ja/dns-caveats.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="./ko/dns-caveats.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="./tr/dns-caveats.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> |
| </div><div id="footer"> |
| <p class="apache">Copyright 2013 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> |
| <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div> |
| </body></html> |