<?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="en" xml:lang="en"><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>Issues Regarding DNS and Apache - Apache HTTP Server</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">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <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>Issues Regarding DNS and Apache</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="./en/dns-caveats.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/dns-caveats.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./fr/dns-caveats.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/dns-caveats.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/dns-caveats.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/dns-caveats.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>

    <p>This page could be summarized with the statement: don't
    configure Apache in such a way that it relies on DNS resolution
    for parsing of the configuration files. If Apache requires DNS
    resolution to parse the configuration files then your server
    may be subject to reliability problems (ie. it might not boot),
    or denial and theft of service attacks (including users able
    to steal hits from other users).</p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#example">A Simple Example</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#denial">Denial of Service</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#main">The "main server" Address</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#tips">Tips to Avoid These Problems</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#appendix">Appendix: Future Directions</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">A Simple Example</a></h2>
    

    <div class="example"><p><code>
      &lt;VirtualHost www.abc.dom&gt; <br />
      ServerAdmin webgirl@abc.dom <br />
      DocumentRoot /www/abc <br />
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p>In order for Apache to function properly, it absolutely needs
    to have two pieces of information about each virtual host: the
    <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code> and at least one
    IP address that the server will bind and respond to. The above
    example does not include the IP address, so Apache must use DNS
    to find the address of <code>www.abc.dom</code>. If for some
    reason DNS is not available at the time your server is parsing
    its config file, then this virtual host <strong>will not be
    configured</strong>. It won't be able to respond to any hits
    to this virtual host (prior to Apache version 1.2 the server
    would not even boot).</p>

    <p>Suppose that <code>www.abc.dom</code> has address 10.0.0.1.
    Then consider this configuration snippet:</p>

    <div class="example"><p><code>
      &lt;VirtualHost 10.0.0.1&gt; <br />
      ServerAdmin webgirl@abc.dom <br />
      DocumentRoot /www/abc <br />
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p>This time Apache needs to use reverse DNS to find the
    <code>ServerName</code> for this virtualhost. If that reverse
    lookup fails then it will partially disable the virtualhost
    (prior to Apache version 1.2 the server would not even boot).
    If the virtual host is name-based then it will effectively be
    totally disabled, but if it is IP-based then it will mostly
    work. However, if Apache should ever have to generate a full
    URL for the server which includes the server name, then it will
    fail to generate a valid URL.</p>

    <p>Here is a snippet that avoids both of these problems:</p>

    <div class="example"><p><code>
      &lt;VirtualHost 10.0.0.1&gt; <br />
      ServerName www.abc.dom <br />
      ServerAdmin webgirl@abc.dom <br />
      DocumentRoot /www/abc <br />
      &lt;/VirtualHost&gt;
    </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">Denial of Service</a></h2>
    

    <p>There are (at least) two forms that denial of service
    can come in. If you are running a version of Apache prior to
    version 1.2 then your server will not even boot if one of the
    two DNS lookups mentioned above fails for any of your virtual
    hosts. In some cases this DNS lookup may not even be under your
    control; for example, if <code>abc.dom</code> is one of your
    customers and they control their own DNS, they can force your
    (pre-1.2) server to fail while booting simply by deleting the
    <code>www.abc.dom</code> record.</p>

    <p>Another form is far more insidious. Consider this
    configuration snippet:</p>

    <div class="example"><p><code>
      &lt;VirtualHost www.abc.dom&gt; <br />
      &nbsp;&nbsp;ServerAdmin webgirl@abc.dom <br />
      &nbsp;&nbsp;DocumentRoot /www/abc <br />
      &lt;/VirtualHost&gt; <br />
      <br />
      &lt;VirtualHost www.def.dom&gt; <br />
      &nbsp;&nbsp;ServerAdmin webguy@def.dom <br />
      &nbsp;&nbsp;DocumentRoot /www/def <br />
      &lt;/VirtualHost&gt;
    </code></p></div>

    <p>Suppose that you've assigned 10.0.0.1 to
    <code>www.abc.dom</code> and 10.0.0.2 to
    <code>www.def.dom</code>. Furthermore, suppose that
    <code>def.dom</code> has control of their own DNS. With this
    config you have put <code>def.dom</code> into a position where
    they can steal all traffic destined to <code>abc.dom</code>. To
    do so, all they have to do is set <code>www.def.dom</code> to
    10.0.0.1. Since they control their own DNS you can't stop them
    from pointing the <code>www.def.dom</code> record wherever they
    wish.</p>

    <p>Requests coming in to 10.0.0.1 (including all those where
    users typed in URLs of the form
    <code>http://www.abc.dom/whatever</code>) will all be served by
    the <code>def.dom</code> virtual host. To better understand why
    this happens requires a more in-depth discussion of how Apache
    matches up incoming requests with the virtual host that will
    serve it. A rough document describing this <a href="vhosts/details.html">is available</a>.</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">The "main server" Address</a></h2>
    

    <p>The addition of <a href="vhosts/name-based.html">name-based
    virtual host support</a> in Apache 1.1 requires Apache to know
    the IP address(es) of the host that <code class="program"><a href="./programs/httpd.html">httpd</a></code> is running
    on. To get this address it uses either the global 
    <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code>
    (if present) or calls the C function <code>gethostname</code>
    (which should return the same as typing "hostname" at the
    command prompt). Then it performs a DNS lookup on this address.
    At present there is no way to avoid this lookup.</p>

    <p>If you fear that this lookup might fail because your DNS
    server is down then you can insert the hostname in
    <code>/etc/hosts</code> (where you probably already have it so
    that the machine can boot properly). Then ensure that your
    machine is configured to use <code>/etc/hosts</code> in the
    event that DNS fails. Depending on what OS you are using this
    might be accomplished by editing <code>/etc/resolv.conf</code>,
    or maybe <code>/etc/nsswitch.conf</code>.</p>

    <p>If your server doesn't have to perform DNS for any other
    reason then you might be able to get away with running Apache
    with the <code>HOSTRESORDER</code> environment variable set to
    "local". This all depends on what OS and resolver libraries you
    are using. It also affects CGIs unless you use 
    <code class="module"><a href="./mod/mod_env.html">mod_env</a></code> to control the environment. It's best 
    to consult the man pages or FAQs for your OS.</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">Tips to Avoid These Problems</a></h2>
    

    <ul>
      <li>
        use IP addresses in 
        <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code>
      </li>

      <li>
        use IP addresses in 
        <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code>
      </li>

      <li>
        ensure all virtual hosts have an explicit
        <code class="directive"><a href="./mod/core.html#servername">ServerName</a></code>
      </li>

      <li>create a <code>&lt;VirtualHost _default_:*&gt;</code>
      server that has no pages to serve</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">Appendix: Future Directions</a></h2>
    

    <p>The situation regarding DNS is highly undesirable. For
    Apache 1.2 we've attempted to make the server at least continue
    booting in the event of failed DNS, but it might not be the
    best we can do. In any event, requiring the use of explicit IP
    addresses in configuration files is highly undesirable in
    today's Internet where renumbering is a necessity.</p>

    <p>A possible work around to the theft of service attack
    described above would be to perform a reverse DNS lookup on the
    IP address returned by the forward lookup and compare the two
    names -- in the event of a mismatch, the virtualhost would be
    disabled. This would require reverse DNS to be configured
    properly (which is something that most admins are familiar with
    because of the common use of "double-reverse" DNS lookups by
    FTP servers and TCP wrappers).</p>

    <p>In any event, it doesn't seem possible to reliably boot a
    virtual-hosted web server when DNS has failed unless IP
    addresses are used. Partial solutions such as disabling
    portions of the configuration might be worse than not booting
    at all depending on what the webserver is supposed to
    accomplish.</p>

    <p>As HTTP/1.1 is deployed and browsers and proxies start
    issuing the <code>Host</code> header it will become possible to
    avoid the use of IP-based virtual hosts entirely. In this case,
    a webserver has no requirement to do DNS lookups during
    configuration. But as of March 1997 these features have not
    been deployed widely enough to be put into use on critical
    webservers.</p>
  </div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./en/dns-caveats.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/dns-caveats.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./fr/dns-caveats.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/dns-caveats.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/dns-caveats.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/dns-caveats.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Licensed under the <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">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>