Blame docs/manual/dns-caveats.html.ja.utf8

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head>
Packit 90a5c9
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>DNS と Apache にまつわる注意事項 - Apache HTTP サーバ バージョン 2.4</title>
Packit 90a5c9
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
Packit 90a5c9
<script src="./style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

モジュール | ディレクティブ | FAQ | 用語 | サイトマップ

Packit 90a5c9

Apache HTTP サーバ バージョン 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.4

DNS と Apache にまつわる注意事項

Packit 90a5c9
Packit 90a5c9

翻訳済み言語:  en  |

Packit 90a5c9
 fr  |
Packit 90a5c9
 ja  |
Packit 90a5c9
 ko  |
Packit 90a5c9
 tr 

Packit 90a5c9
Packit 90a5c9
この日本語訳はすでに古くなっている
Packit 90a5c9
            可能性があります。
Packit 90a5c9
            最近更新された内容を見るには英語版をご覧下さい。
Packit 90a5c9
        
Packit 90a5c9
Packit 90a5c9
    

本文書の内容は次の一言に尽きます。「Apache が設定ファイルを読み込むときに

Packit 90a5c9
    DNS を使用する必要がないようにして下さい」。Apache が設定ファイルを
Packit 90a5c9
    読み込むときに DNS を使用する必要がある場合、信頼性の問題
Packit 90a5c9
    (起動しないかもしれません) やサービス拒否や盗用アタック
Packit 90a5c9
    (他のユーザからヒットを盗むことを含みます)
Packit 90a5c9
    の問題に直面するかもしれません。

Packit 90a5c9
  
Packit 90a5c9
Packit 90a5c9
  • サービス拒否
  • Packit 90a5c9
  • 「主サーバ」アドレス
  • Packit 90a5c9
  • 以上の問題を解決する方法
  • Packit 90a5c9
  • 付録: 将来的な方向性
  • Packit 90a5c9

    参照

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    簡単な例

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          <VirtualHost www.abc.dom> 
    Packit 90a5c9
          ServerAdmin webgirl@abc.dom 
    Packit 90a5c9
          DocumentRoot /www/abc 
    Packit 90a5c9
          </VirtualHost>
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        

    Apache が正常に機能するには、バーチャルホスト毎に必ず二つの

    Packit 90a5c9
        情報が必要になります。それは、
    Packit 90a5c9
        ServerName
    Packit 90a5c9
        と、そのサーバが応答するための IP (最低一つ) です。
    Packit 90a5c9
        上記例では IP アドレスを含んでいませんので、Apache は DNS
    Packit 90a5c9
        を使用して www.abc.dom を見つけなければなりません。
    Packit 90a5c9
        何らかの理由で設定ファイルを読み込んでいるときに DNS 
    Packit 90a5c9
        が利用できなかった場合、
    Packit 90a5c9
        バーチャルホストは設定されません
    Packit 90a5c9
        そして、そのバーチャルホストに対するヒットには応答がなされません
    Packit 90a5c9
        (Apache 1.2 以前では起動すらしません)。

    Packit 90a5c9
    Packit 90a5c9
        

    www.abc.dom のアドレスが 192.0.2.1

    Packit 90a5c9
        だとします。では、次の設定について考えてみましょう。

    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          <VirtualHost 192.0.2.1> 
    Packit 90a5c9
          ServerAdmin webgirl@abc.dom 
    Packit 90a5c9
          DocumentRoot /www/abc 
    Packit 90a5c9
          </VirtualHost>
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        

    現在のリリースでは Apache は DNS 逆引きを使用して

    Packit 90a5c9
        このバーチャルホストの ServerName
    Packit 90a5c9
        を見つけます。
    Packit 90a5c9
        その逆引きが失敗した場合は部分的にバーチャルホストを無効にします
    Packit 90a5c9
        (Apache 1.2 より前では起動すらしません)。
    Packit 90a5c9
        バーチャルホストが名前ベースであれば完全に無効になりますが、
    Packit 90a5c9
        IP ベースであれば概ね動作します。しかしながら、サーバ名を
    Packit 90a5c9
        含む完全な URL を生成しなければならない場合は、正しい URL
    Packit 90a5c9
        の生成ができません。

    Packit 90a5c9
    Packit 90a5c9
        

    次の例は上記の問題を解決しています。

    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          <VirtualHost 192.0.2.1> 
    Packit 90a5c9
          ServerName www.abc.dom 
    Packit 90a5c9
          ServerAdmin webgirl@abc.dom 
    Packit 90a5c9
          DocumentRoot /www/abc 
    Packit 90a5c9
          </VirtualHost>
    Packit 90a5c9
        

    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    サービス拒否

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    サービス拒否が起こる場合、(少なくとも) 二つのケースがあります。

    Packit 90a5c9
        Apache 1.2 より前を実行している場合、バーチャルホストのための
    Packit 90a5c9
        上記の二つの DNS 検索のうち一つ失敗すれば起動すらしません。
    Packit 90a5c9
        そしてこの DNS 検索が自分の制御下にすらない場合もありえます。
    Packit 90a5c9
        例えば、abc.dom が顧客のサーバの一つで、
    Packit 90a5c9
        DNS は顧客自身で管理している場合、単に
    Packit 90a5c9
        www.abc.dom レコードを削除するだけで、
    Packit 90a5c9
        (1.2 より前の) サーバを起動不能にすることができます。

    Packit 90a5c9
    Packit 90a5c9
        

    もう一つのケースは、より気付きにくいものです。

    Packit 90a5c9
        次の設定について考えてみましょう。

    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          <VirtualHost www.abc.dom> 
    Packit 90a5c9
          
    Packit 90a5c9
            ServerAdmin webgirl@abc.dom 
    Packit 90a5c9
            DocumentRoot /www/abc 
    Packit 90a5c9
          
    Packit 90a5c9
          </VirtualHost> 
    Packit 90a5c9
          
    Packit 90a5c9
          <VirtualHost www.def.dom> 
    Packit 90a5c9
          
    Packit 90a5c9
            ServerAdmin webguy@def.dom 
    Packit 90a5c9
            DocumentRoot /www/def 
    Packit 90a5c9
          
    Packit 90a5c9
          </VirtualHost>
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        

    192.0.2.1 を www.abc.dom に、

    Packit 90a5c9
        192.0.2.2 を www.def.dom に割り当てているとします。
    Packit 90a5c9
        また、def.dom は顧客自身の DNS
    Packit 90a5c9
        の制御下にあるとします。この設定で、abc.dom
    Packit 90a5c9
        に向けられたトラフィック全てを奪うことができる位置に
    Packit 90a5c9
        def.dom を設置できています。後は単に 
    Packit 90a5c9
        www.def.dom が 192.0.2.1 を参照するように
    Packit 90a5c9
        設定するだけです。DNS は顧客側の DNS でコントロールされているので、
    Packit 90a5c9
        www.def.dom レコードが好きな場所を指すように
    Packit 90a5c9
        設定できてしまうのを止めさせることができません。

    Packit 90a5c9
    Packit 90a5c9
        

    192.0.2.1 に対するリクエスト

    Packit 90a5c9
        (http://www.abc.dom/whatever 形式の URL 
    Packit 90a5c9
        を入力したユーザからのもの全てを含みます) 
    Packit 90a5c9
        は、def.dom バーチャルホストで応答されます。
    Packit 90a5c9
        このようなことが何故起こるかもっと良く知るためには、
    Packit 90a5c9
        応答の必要なバーチャルホストへのリクエストに対して、
    Packit 90a5c9
        Apache がどのように整合性を確保するかについて、
    Packit 90a5c9
        深い議論が必要になります。おおざっぱな説明はこちらに記述されています。

    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    「主サーバ」アドレス

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Apache 1.1 での 名前ベースのバーチャルホストのサポート 追加の際に、

    Packit 90a5c9
        Apache は httpd の実行されているホストの IP
    Packit 90a5c9
        アドレスを知る必要が出てきました。このアドレスを得るために、
    Packit 90a5c9
        (もしあれば) グローバルな
    Packit 90a5c9
        ServerName を使用するか、
    Packit 90a5c9
        C 言語の関数 gethostname (コマンドプロンプトで
    Packit 90a5c9
        hostname とタイプしたときと同じものを返します)
    Packit 90a5c9
        を呼び出すかをします。
    Packit 90a5c9
        その後、得られたアドレスで DNS 検索を行ないます。
    Packit 90a5c9
        現在のところ、この DNS 検索を回避する方法はありません。

    Packit 90a5c9
    Packit 90a5c9
        

    DNS サーバがダウンして、この検索ができない事態が起こることを

    Packit 90a5c9
        恐れているのであれば、/etc/hosts
    Packit 90a5c9
        にホスト名を記述しておくことができます
    Packit 90a5c9
        (マシンが正常に起動するように既に設定されているかもしれません)。
    Packit 90a5c9
        その場合、DNS 参照が失敗した場合にマシンが /etc/hosts
    Packit 90a5c9
        を使用するように設定していることを確認してください。
    Packit 90a5c9
        その方法は、どの OS を使用しているかに依存しますが、
    Packit 90a5c9
        /etc/resolv.conf/etc/nsswitch.conf
    Packit 90a5c9
        を編集することで設定できます。

    Packit 90a5c9
    Packit 90a5c9
        

    もし他の理由で DNS を利用する必要がない場合は、

    Packit 90a5c9
        HOSTRESORDER 環境変数を「 local
    Packit 90a5c9
        」に設定することでそのようにできます。以上これらの事柄は、どんな
    Packit 90a5c9
        OS 、レゾルバライブラリを使用しているかに依存します。また、
    Packit 90a5c9
        mod_env を使用して環境変数を制御しない限り、
    Packit 90a5c9
        CGI にも影響を与えます。man ページや使用している OS
    Packit 90a5c9
        の FAQ で調べると良いでしょう。

    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    以上の問題を解決する方法

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        
      Packit 90a5c9
            
    • Packit 90a5c9
              VirtualHost
      Packit 90a5c9
              で IP アドレスを使用する。
      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              Listen
      Packit 90a5c9
              で IP アドレスを使用する。
      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              全てのバーチャルホストが明示的に
      Packit 90a5c9
              ServerName
      Packit 90a5c9
              を持つようにする。
      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • 何も応答しない
    • Packit 90a5c9
            <VirtualHost _default_:*>
      Packit 90a5c9
            サーバを作る。
      Packit 90a5c9
          
      Packit 90a5c9
        
      top
      Packit 90a5c9
      Packit 90a5c9

      付録: 将来的な方向性

      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      DNS に関して、現状は全く宜しくありません。Apache 1.2 で、

      Packit 90a5c9
          DNS のイベントが失敗しても少なくとも起動プロセスが続くようにしましたが、
      Packit 90a5c9
          これが最高の解決方法ではないでしょう。アドレスの再割り当てが必要不可避
      Packit 90a5c9
          となっている今日のインターネットにおいては、
      Packit 90a5c9
          設定ファイルの中で明示的な IP アドレスを要求する仕様は、
      Packit 90a5c9
          全く宜しくありません。

      Packit 90a5c9
      Packit 90a5c9
          

      盗用のサービスアタックに関して行なうべき事は、

      Packit 90a5c9
          DNS 順引きを行なって得られたアドレスに対する DNS 
      Packit 90a5c9
          逆引きを行なって、二つの名前を比較することです。
      Packit 90a5c9
          この二つが一致しなければバーチャルホストは無効になるようにします。
      Packit 90a5c9
          こうするためには逆引き DNS が適切に設定されている必要があります
      Packit 90a5c9
          (FTP サーバや TCP ラッパーのおかげで「二重逆引き」DNS は一般的に
      Packit 90a5c9
          なっていますので、管理者にはお馴染みものでしょう)。

      Packit 90a5c9
      Packit 90a5c9
          

      IP アドレスが使用されていなくて DNS が失敗した場合は、

      Packit 90a5c9
          どうしてもバーチャルホストウェブサーバを信頼性を確保して
      Packit 90a5c9
          起動させることは不可能のようです。
      Packit 90a5c9
          設定の一部を無効にするというような部分的な解決では、
      Packit 90a5c9
          サーバが何をするようにするかにもよりますが、
      Packit 90a5c9
          そのサーバが起動しないより確実に悪い状況になるでしょう。

      Packit 90a5c9
      Packit 90a5c9
          

      HTTP/1.1 が開発され、ブラウザやプロキシが Host

      Packit 90a5c9
          ヘッダを発行するようになったので、IP ベースのバーチャルホストを
      Packit 90a5c9
          全く使用しなくても済むようになるかもしれません。
      Packit 90a5c9
          この場合、ウェブサーバは設定中に DNS 参照をしなくても済みます。
      Packit 90a5c9
          しかし 1997 年 3 月時点の状況では、
      Packit 90a5c9
          商用レベルのウェブサーバで使用できるほどには、
      Packit 90a5c9
          これらの機能は広く開発が進んでいません。

      Packit 90a5c9
        
      Packit 90a5c9
      Packit 90a5c9

      翻訳済み言語:  en  |

      Packit 90a5c9
       fr  |
      Packit 90a5c9
       ja  |
      Packit 90a5c9
       ko  |
      Packit 90a5c9
       tr 

      Packit 90a5c9
      top

      コメント

      Notice:
      This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
      Packit 90a5c9
      <script type="text/javascript">
      Packit 90a5c9
      var comments_shortname = 'httpd';
      Packit 90a5c9
      var comments_identifier = 'http://httpd.apache.org/docs/2.4/dns-caveats.html';
      Packit 90a5c9
      (function(w, d) {
      Packit 90a5c9
          if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
      Packit 90a5c9
              d.write('
      <\/div>');
      Packit 90a5c9
              var s = d.createElement('script');
      Packit 90a5c9
              s.type = 'text/javascript';
      Packit 90a5c9
              s.async = true;
      Packit 90a5c9
              s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
      Packit 90a5c9
              (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
      Packit 90a5c9
          }
      Packit 90a5c9
          else { 
      Packit 90a5c9
              d.write('
      Comments are disabled for this page at the moment.<\/div>');
      Packit 90a5c9
          }
      Packit 90a5c9
      })(window, document);
      Packit 90a5c9
      //--></script>
      Packit 90a5c9

      Copyright 2018 The Apache Software Foundation.
      この文書は Apache License, Version 2.0 のライセンスで提供されています。.

      Packit 90a5c9

      モジュール | ディレクティブ | FAQ | 用語 | サイトマップ

      <script type="text/javascript">
      Packit 90a5c9
      if (typeof(prettyPrint) !== 'undefined') {
      Packit 90a5c9
          prettyPrint();
      Packit 90a5c9
      }
      Packit 90a5c9
      //--></script>
      Packit 90a5c9
      </body></html>