プロクシ

更新日:2003.2.22
作成日:2001.5.06

 「プロクシ」も「プロキシ」も同じであるが AN HTTPDでは「プロクシ」の方を使っている。ただ、ブラウザの中の設定個所では IE も Netscape も「プロキシ」と書かれているのでブラウザの設定のことを言うときだけは「プロキシ」と区別している(ようだ)。

 AN HTTPDにはプロキシ機能として「プロクシ」「ゲートウェイ」「SOCKS」がある。これらをまとめて「プロキシ」と呼んでもいいのだが、AN HTTPDでは Webアクセスを中継する HTTPプロキシだけを「プロクシ」と呼び、ゲートウェイの一種で特殊な「SOCKS」も区別し、それ以外のプロキシをまとめて「ゲートウェイ」と呼んでいる。ここで説明するのは「プロクシ」であり、「ゲートウェイ」と「SOCKS」についてはそれぞれの解説ページを参照して欲しい。

 プロクシを使うとLAN内でインターネットに直接接続していないPC(下図のPC2, PC3)のブラウザ、ホームページダウンロードソフトなどから、AN HTTPDのプロクシ(PC1)経由でインターネットにアクセスし、インターネット上のWebページにアクセスできるようになる。AN HTTPD の キャッシュ機能 を併用すると同じURLへのアクセスはPC1のキャッシュから表示されるようになり、インターネットへの不要なアクセスを抑えることができる。

 ここではネットワーク構成は以下のような接続であるとの前提で設定方法を説明する。ダイヤルアップルータの場合も考え方は同じである。パソコンがPC1の1台しかない場合でもキャッシュ機能を使う場合にはプロクシは効果がある。

(追記) 以下の図はもともとアナログモデムと TA を意識したものであるが、PC1 がNIC 二枚刺しと考えると ADSL でも全く同じ構成になる。
  1. AN HTTPDの設定

     PC1でAN HTTPDを起動し、プロクシタブのプロクシサーバ機能にチェックし、サーバIPアドレスをPC1のIPアドレスである 192.168.0.2 とする。
    (参考) 何らかの理由でサーバIPアドレスを複数個設定したいことがあるかもしれないが、この欄に複数のIPアドレスを記述することはできない。どうしても必要というときには、0.0.0.0(または *.*.*.*) とすればリクエストを受けつけることができる。

     プロトコルは全てチェックしておくとよいだろう。http プロトコルのチェックは必須であろう。Security、ftp にチェックがないとそれぞれ https://〜、ftp://〜 にアクセスできなくなる。

     以下のように自前のプロクシ以外にもう一台プロクシを使いプロクシ二段構成にする場合には「外部プロクシを使う」にチェックし、もう一台の方のプロクシのIPアドレスまたはホスト名と port 番号を設定する。
     (1)プロバイダからプロクシサーバを使用するようにアナウンスがある場合
     (2)インターネット上のプロクシサーバを使用する場合
     (3)社内利用で例えばAN HTTPDを部内プロクシとし、それとは別にファイアウォール上に社内プロクシがある場合
    外部プロクシを使う場合は通常LAN内へのアクセスはプロクシを通さず直接アクセスするので、「プロクシを使わない」欄に「192.168.*.*,127.0.0.1」などのLAN内IPアドレスを設定しておく。

     「プロクシで追加、作成するヘッダ」欄にチェックすると、ヘッダに以下のような追加/変更がなされる。
    ------------------------------------------------------------------------------
    User-Agent: 使用しているブラウザの種類/バージョン via proxy gateway AnWeb/1.xx
                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^(この部分が追加される)
    Via: 1.x Via欄に設定したホスト名(1.xはHTTPバージョンの設定による)
    X-Forwarded-For: アクセス元IPアドレス(プライベートアドレスなどが入る)
    ------------------------------------------------------------------------------
    
    あまり気にすることはないかもしれないが、自分自身に関する余計な情報を出すことにもなるので気になる人は、チェックを全て外しておくとよいだろう。

     プロクシサーバ機能にチェックした場合には、プロクシサーバの不正使用防止のため、Options/Proxy.Cacheのアクセス制御をデフォルトから変更せず、127.0.0.1,192.168.*.* (組織内の使用では適当に変更を)としておくことが重要である。



  2. ブラウザの設定
     Internet Explorerを例に、PC2、PC3で動くブラウザの設定を説明する。Netscapeやプロクシを使う他のソフトの設定も同様である。

     ツール -> インターネットオプション -> 接続 -> LANの設定 ー> プロキシサーバの詳細設定 を下図のようにプロキシサーバのアドレスを 192.168.0.2 に設定する。

     外部プロクシを使う場合でもブラウザの設定はこれと同じでよい。





  3. RealOne Playerの設定
     プロクシ経由で RealOne Player を動作させるためのの環境設定については Google で「realone プロキシ 環境設定」を検索すれば実例が多くみつかるだろう。ここでは上記の接続図で、PC2, PC3 で RealOne Player を動作させるための設定(ツール -> 環境設定 -> 接続 の「プロキシ」と「ネットワーク転送」)を例示するに留め、説明は省略する。
     RealOne Playerではなく RealPlayerでも多少異なるが同様の個所があるので設定をする。



  4. Windows Media Playerの設定
     プロクシ経由で Windows Media Player を動作させるための設定(9 Seriesの場合)を以下に例示する。

    Windows Media Player -> ツール -> オプション -> ネットワーク と進み以下のように設定する。


    さらに「ストリーミング プロキシの設定」欄の「HTTP」を選択し「構成」をクリックする。「プロトコルの構成」ウィンドウで以下のように設定する。



  5. アクセス先に応じてプロクシを自動で切り換える
     例えば会社のイントラネットではインターネットへの出口とエクストラネットへの出口でプロクシサーバが異なり、アクセス先に応じてプロクシサーバを切り換えて使うことが必要な場合がある。そのとき、その度に手動でブラウザの設定を書き替えるのではたまらない。そのような目的のためにブラウザに Proxy Auto-Config File(ファイル名として proxy.pacがよく使われる)というファイルを設定しておけば自動的に切り換えてくれる便利な仕組みがある。IEでは ツール -> インターネットオプション -> 接続 -> LANの設定 にある「自動構成スクリプトを使用する」がそれであり、Netscapeでは編集 -> 設定 -> 詳細 -> プロキシ の 「自動プロキシ設定」がそうである。

     以下は proxy.pacの一例であるが、これをベースに適宜修正を加えればどんなケースでも使用できるであろう。

    この例ではプロクシサーバは以下の 3台を使用と仮定
     192.168.0.10
     192.168.0.11
     192.168.0.12

    アクセス先と使用するプロクシの条件を以下の通りに仮定
     ・192.168.0.11:8080は *.co.jp と *.com へのアクセスに使用
     ・192.168.0.12:8080は *.ne.jp へのアクセスに使用
     ・192.168.0.10:8080は 上記以外の LAN外へのアクセスに使用
     ・LAN内
       192.168.*.*
       172.16.*.* 〜 172.31.*.*
       10.*.*.*
       *.mycompany.co.jp(自社ドメイン名)
      へのアクセスにはプロクシは使用しない
     ・ローカルホスト(127.0.0.1, localhost) へのアクセスにはプロクシは使用しない
    proxy.pacファイル
    --- この下の行から ----------------------------------------------------
    function FindProxyForURL(url,host)
    {
    	if (shExpMatch(host,"*.co.jp")) {return "PROXY 192.168.0.11:8080";}
    	if (shExpMatch(host,"*.com"))   {return "PROXY 192.168.0.11:8080";}
    	if (shExpMatch(host,"*.ne.jp")) {return "PROXY 192.168.0.12:8080";}
    // no proxy
    	if (isInNet(host, "192.168.0.0", "255.255.0.0")) {return "DIRECT";}
    	if (isInNet(host, "10.0.0.0", "255.0.0.0"))      {return "DIRECT";}
    	if (isInNet(host, "172.16.0.0", "255.240.0.0"))  {return "DIRECT";}
    	if (shExpMatch(host,"*.mycompany.co.jp"))        {return "DIRECT";}
    	if (shExpMatch(url, "http://127.0.0.1*"))        {return "DIRECT";}
    	if (shExpMatch(url, "http://localhost*"))        {return "DIRECT";}
    
    	else {return "PROXY 192.168.0.10:8080";}
    }
    --- この上の行まで ----------------------------------------------------
    
    通常会社のLANには複数のクライアントが存在するであろうから、上の proxy.pacファイルをサーバ上に置き、 各クライアントで以下のように設定して使うのが一般的であろう。この例では 192.168.0.2 でWebサーバが動いており、そのドキュメントルートに proxy.pacを置いている。proxy.pacの内容に変更があったとしてもサーバ上で修正すればよく各クライアントでは変更の必要はない。


    もし特定のクライアントで独自の設定をしたいような時には、ローカルファイルとして置き、http://192.168.0.2/proxy.pac の部分を例えば file://c:/www/proxy.pac のように設定すればよい。

    proxy.pacの書式については
    http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html
    を参照のこと。

    (注) "return DIRECT" に要注意 という記事をみつけました。
    http://www.atmarkit.co.jp/fwin2k/experiments/ieproxy/ieproxy_01.html

    (注) 自動プロキシ設定について。書いたのは随分前のことですが、見直しし公開しました。(2003.6.8)



作成:いと,mailto:gfh05223@nifty.com