3 Minutes NetWorking
No.76

3Minutes NetWorking

第76回HTTP(7) プロキシサーバ

■ 「代理」サーバ

インター博士

さてさて。今回はHTTPの動作の説明というわけではないが、それにまつわる話をしよう。
それはプロキシサーバと呼ばれるサーバだ。

ネット助手

ぷろきし? プロ棋士

インター博士

ほぅ、プロ棋士のサーバというのはどういうものなのかね?

ネット助手

それを博士が今から説明してくれるんでしょう?

インター博士

なるほど、もっともだ。
ところで、ネット君。いつからココはオモシロ空耳大会の会場になった?

ネット助手

うぅぅぅ。

インター博士

ともかくだ。
Proxy、「代理」とか「代理人」という意味だ。

ネット助手

「代理」? 「代理サーバ」?
何を代理するんですか?

インター博士

クライアントからのHTTPを代理でサーバに送るためのサーバ、だ。
詳細は先で話すとして、まず簡単な動作で言えば、こう。

[Figure76-01:プロキシサーバ]

ネット助手

んんん? 確かに「代理」してますけど。
なんか、いいことあるんですか? 面倒くさいだけのような気がしますけど。

インター博士

うむ、確かに面倒くさく見えるかもしれん。だが、これがかなり役に立つのだよ。
利点はいくつか考えられる。

  • グローバルIPアドレスの使用の抑制
  • トラフィックの制御
  • キャッシュによる高速なアクセス
  • HTTPアクセスの管理
  • セキュリティの向上
ネット助手

ははぁ、ひのふの…5つの利点ですか? なんか、すごくお役立ちっぽいですよ?

インター博士

うむうむ、実際お役立ちなサーバなのだよ。
まず、プロキシサーバのポイントは、代理することにある。

ネット助手

そりゃ代理サーバなんだから、当然なのでは?

インター博士

まぁ、確かにそうだが。何が言いたいかというと。こうだ。

[Figure76-02:プロキシの「代理」]

インター博士

プロキシがないならば、クライアント-Webサーバ間でコネクションが確立されるのだが。プロキシがある場合、それぞれプロキシとコネクションを結ぶ。つまり…。

ネット助手

つまり?

インター博士

単純に「受け取ったものを流す」という「中継」ではなく、完全に「プロキシが送受信をサーバと行う」という「代理」ということになるわけだな。

ネット助手

ん、ん〜? TCPコネクションが確立された相手と送受信を行う?

インター博士

そうだ、TCPコネクションはアプリケーションとアプリケーション、つまりデータの発生元と受け取り先間で確立されるわけだろう?

ネット助手

そうですね。エンドアプリケーション接続、がレイヤ4でしたよね。

インター博士

そういうことだ。結果、「クライアントはプロキシのみとやりとりする」「Webサーバはプロキシとやりとりする」という形になるわけだ。
だが、本来、WebサーバにHTTPアクセスを要求するのは?

ネット助手

本来なら、クライアントとWebサーバがやりとりするはずなんですよね。

インター博士

そうだ。それをプロキシが「代理」するわけだな。
ルータとかの「中継」とは違うということをまず理解してくれたまえ。

ネット助手

ルータは「中継」しても、IPアドレスとかは変わらない、方向指示器みたいなものですよね。

■ グローバルIPアドレスの使用の抑制

インター博士

さて、上記の「代理」ということを踏まえた上で、プロキシの利点を説明しよう。
まず、最初は「グローバルIPアドレスの使用の抑制」だったな。

ネット助手

グローバルIPアドレスを使うのを抑制する?
グローバルIPアドレスを使わなくなるってことですか?

インター博士

使わなくなるわけではないが、使用する数が減るのだよ。

[Figure76-03:プロキシサーバとIPアドレス]

ネット助手

プロキシだけが外部と接続する

インター博士

そうだ、さっきも言ったように、「Webサーバはプロキシとやりとりする」ので、プロキシサーバだけが外部と接続できるアドレスを持っていればいいのだよ。つまり、内部に何台あっても1つだけグローバルがあればいい。

ネット助手

プロキシサーバの分のアドレスだけあればいいんですね。
なんか、NAPTみたいですね。

インター博士

そうだな、ルータとはまた別に、プロキシはネットワークを分断するのだよ。

プロキシによるネットワークの分断

[Figure76-04:プロキシによるネットワークの分断]

インター博士

イメージ的には確かにNAPTが近いかな。アドレスをクライアントのものから、プロキシサーバのものに付け替える、という。
まぁ、イメージ的に近いだけで、実際は大違いなわけだが。

ネット助手

ん〜〜、でもNAPT使えばいいじゃないですか。わざわざプロキシ使わなくても。

インター博士

確かに現在のように、ブロードバンドルータが普及しているならばそう考えるだろうが。
ダイアルアップの時は、モデムでの接続が主流だったからな。なんとか複数台同時接続をやりたい、と考えるとプロキシだったのだよ。

ネット助手

ダイヤルアップの時ってルータってなかったでしたっけ?

インター博士

いや、ダイヤルアップルータがあった。今のブロードバンドルータほど手軽には使われていなかったのだよ。
まぁ、別にプロキシの「外側」はグローバルIPアドレスである必要はないがな。

ネット助手

は〜。

■ キャッシュの利用

インター博士

さてさて、実際プロキシサーバの利用の理由としては、ここからがメインだ。
ネット君。If-Modified-Since、キャッシュを覚えているか?

ネット助手

条件つきGETでしたっけ。ブラウザは以前取得したページを保存(キャッシュ)してあって。
で、If-Modified-Sinceを使って、保存したページから更新しているか調べる、でしたよね。

インター博士

何のためにそんなことをするんだね?

ネット助手

え〜っと、以前取得したページと同じページをわざわざ取得するのはトラフィックの無駄というか。
前と同じなら保存したものを見たほうが早い、とか。

インター博士

そうだ、キャッシュの利用によりトラフィックの無駄を減らしWebアクセスの高速化を図っているわけだな。

ネット助手

あ、はい。そうですよ。

インター博士

ブラウザが個々にキャッシュを保存しているわけだな。これをローカルキャッシュと呼ぶわけだが。
これを大規模に実現し、クライアント群のWebアクセスの高速化を図り、トラフィックの無駄を減らすのがプロキシの利点の1つだ。

ネット助手

大規模に実現? 大規模?

インター博士

そうだ、個々のキャッシュではなく、複数のクライアントで1つのキャッシュを持つ状態にするのだ。

[Figure76-05:プロキシキャッシュ]

ネット助手

はは〜。プロキシサーバが、ブラウザのローカルキャッシュをまとめて持ってるみたいな形になるわけですか。

インター博士

そういうことだ。キャッシュを使う事による高速なアクセス、かつWebサーバ側へのアクセスを減らすことによるトラフィックの制御という利点が発生するわけだな。

ネット助手

なるほどなるほど。

インター博士

特にプロキシ→Webへのアクセス回線の帯域が狭い場合、有効だな。

外部への回線の帯域幅

[Figure76-06:外部への回線の帯域幅]

ネット助手

何故ですか?

インター博士

プロキシがない場合、全クライアントのすべての要求がその狭い回線に集中するわけだ。
プロキシのキャッシュがあれば、一部の要求はキャッシュされるので狭い回線でも混まなくなるかもしれない。

ネット助手

なるほど。なんかすごいですね、プロキシ。
世界中でみんなプロキシを使えばいいじゃないですか。

インター博士

ところがそうもいかない。

ネット助手

あれ? ダメなんですか?

インター博士

ダメというわけではないが。昔に比べてWebサイトの数が多くなり、クライアントが見に行く場所がバラバラということが多くなってきた。

ネット助手

そうすると、キャッシュにないから、結局Webサーバにアクセスするわけですよね、キャッシュの意味がないなぁ。

インター博士

さらに、現在のようにWebへのアクセス回線が高速になってくると、HTTP程度ではそう簡単に混まなくなってしまい。
逆にプロキシの「代理」「キャッシュの検索」という処理の分だけ遅くなることもある。

ネット助手

ダメダメじゃないですか。

インター博士

まぁ、使いよう、ということだな。少なくとも複数のクライアントが同じページを見に行くことが多いと役に立つぞ。

ネット助手

う〜ん。役に立つんだか立たないんだか、わからないなぁ。

■ Webアクセスの管理

インター博士

正直言って、プロキシを使う利点として「グローバルIPアドレスの使用抑制」「キャッシュによるトラフィックの制御とアクセスの高速化」という理由は古い。

ネット助手

古いって。
なら説明する必要なかったんじゃ?

インター博士

ネット君。何も今だけ知っていればいいというわけではない。
変遷というものも大事なのだよ。それにより、より理解が深まるだろう。

ネット助手

うわ、なんか博士、偉い先生っぽいですよ? 珍しい

インター博士

……確かに、私はあまり偉くないし、権限も少ない。
それでもネット君の単位を左右することぐらいは軽いわけだ。もちろん君の発言はそれを考慮してのことだろうと思う。

ネット助手

はぅぅぅ。

インター博士

さて。そんな権力の正しい使い方はともかくとしてもだ。

ネット助手

正しくない正しくない。

インター博士

現在、プロキシが使われる理由としてはこれから話す2つの利点が大きい。
まず、ネット君。プロキシサーバは代理をするな。

ネット助手

しますね、代理。

インター博士

つまり、クライアントのHTTP要求を解析して、Webサーバに要求を出す。
Webサーバからのページを受け取って、クライアントに渡すわけだな。

ネット助手

えぇ、そういう動作になりますよね。

インター博士

つまり要約するとクライアントのHTTPアクセスの中身を確認できるということになるな。

ネット助手

え〜っと、そうですね。「どんな要求だったか」「要求によって入手したページはどんなか」がわかりますよね。

インター博士

うむうむ、つまりプロキシを使うと簡単に「HTTPアクセスの中身により制御ができる」ことになるのだよ。

ネット助手

??
すいません、具体的に言うと?

インター博士

URLフィルタコンテンツフィルタと一般的には呼ばれている制御が可能になる。
URLフィルタは「見に行ってはいけないURL」もしくは「見に行ってよいURL」を決定し、このフィルタに従って代理をするのだ。

ネット助手

ははぁ、プロキシが代理する/しないことにより、「見に行っていい/悪い」という制御をするわけですね。

[Figure76-07:URLフィルタ]

インター博士

URLによる制御がURLフィルタ、というわけだ。
ただし、これはURLを変えられたら意味がない、新しいWebサイトには対応できない、という形になる。特にブラックリストの場合はそうだな。

ネット助手

そうですねぇ。Webサイトなんてそれこそ山のようにありますし、増えたり減ったりも激しいですよねぇ。

インター博士

なら、ホワイトリストという形になるが、ホワイトリストはこれはこれで自由度が少なくて問題になることもある。

ネット助手

う〜ん、痛し痒しってところですか。

インター博士

なので、最近ではプロキシサーバソフト + URLフィルタ(ブラックリスト)の更新という形で販売し、最新のブラックリストをダウンロードして設定することで対応している商品もある。

ネット助手

あ〜、なんかあれですね、アンチウィルスソフトのパターンファイルみたいですね。

インター博士

ま、そうだな。確かに似たような形だな。
もう一方のコンテンツフィルタは、受け取ったぺージや画像の中身を確認して、クライアントに返すかどうか決定する方式だ。

ネット助手

中身?

インター博士

例えば「禁止ワード」を設定しておき、それが含まれているぺージは返さない、などだな。

ネット助手

あ〜、なるほどなるほど。それはよさそうですね。

インター博士

ただ、やはりこれも解析処理で問題がある。どこまで精密にできるか、と言う問題もあるし。
逆に精密すぎてダメな場合もあるしな。

ネット助手

精密すぎてダメ? 精密ならよさそうですけど?

インター博士

例えば学校で未成年には見せれないぺージを禁止しようと思って禁止ワード「未成年」としたとする。そうすると、精密にやってしまうと「未成年の犯罪」なんてページも見れなくなってしまう。

ネット助手

あ〜、なんて杓子定規な。

インター博士

まぁ、それでもこの「URLフィルタ」と「コンテンツフィルタ」によるアクセス制御、という点でプロキシサーバはよく使われるわけだ。特に、近年、インターネットを使った授業をする小中高の学校で大ウケなわけだ。

ネット助手

ははぁ、アダルトですとか、残虐なページですとか。
インターネットはなんでもありますからねぇ。

■ セキュリティ

インター博士

さて、プロキシを使う理由としてのもう1つ。それはセキュリティだ。
実を言うとネット君。プロキシサーバはファイアウォールの一種なのだよ。

ネット助手

ファイアウォール? ファイアウォールってなんでしたっけ?

インター博士

ファイアウォールは内部ネットワークを外部からの不正アクセスから防ぐ壁になる機器のことだ。詳しくは先の回で説明する。

ネット助手

不正アクセスから防ぐ? プロキシがですか?

インター博士

そうだ。ファイアウォールとして使われる場合、正確にはアプリケーションゲートウェイ方式ファイアウォールと呼ばれるが。

ネット助手

あぷりけーしょんげーとうぇい?
アプリケーションの出入り口?

インター博士

つまり、プロキシは内部からのHTTPアクセスのみを代理するため、外部からの要求は一切受け付けないという形になるのだよ。

[Figure76-08:プロキシのセキュリティ]

ネット助手

は〜〜。
「代理」だから、「中継」したりしないわけですね。なので内部にパケットが入らない、と。

インター博士

そういうことだな。
さらに、プロキシは「代理」することにより、外部にアクセスするのはプロキシだけという状態になるわけだ。

ネット助手

んん〜っと。コネクションはプロキシ-サーバ間で確立されるわけでしたよね。

インター博士

そうだ。なので、内部から直接アクセスしないことにより、内部の情報が外へ出ないことになるわけだ。

ネット助手

そうですね。

インター博士

存在を知られないことは最高のセキュリティだ。
プロキシを使う事により、匿名性が確保されることになるわけだな。とは言っても、これはプロキシの設定次第だが。

ネット助手

ありゃ? 設定次第?

インター博士

うむ。内部の情報を出すプロキシと、出さないプロキシがある。これは設定次第だ。
この情報の話はともかく、プロキシは「HTTPの代理」という事以外のすべてのパケットのやりとりを停止させることになる。

ネット助手

すべて停止、ってなんかすごそうですよね。

インター博士

そうだな。かなり高いセキュリティと言えるだろう。内部からのHTTPアクセスの応答以外、基本的には外部からはパケットが入り込まないからな。

ネット助手

ですよね。

インター博士

逆にいえば、これが問題なわけだ。プロキシ経由で外部と接続する場合、HTTP以外は全く通らない。つまりWebしか行えない、とこういうことになってしまうわけだからな。

ネット助手

あ〜、そうか。メールとかFTPとかはダメになっちゃうんだ。
セキュリティが高い分だけ融通が効かないなぁ。

インター博士

確かにそうだな。だが、上手く使えばかなり高いセキュティを維持できる。
これは外部との接続だけの話ではなく、内部でのネットワークの構成にも使えたりする。

ネット助手

んん?

インター博士

例えば、「Webアクセスのみ可能」で、それ以外のネットワークとは全くアクセスの出来ない、切り離されたネットワークを作り出すことができるわけだ。これもまた学校などでプロキシがウケる要因だったりする。

ネット助手

あ〜、授業でネットワークを使うのと言えば、Webアクセスぐらいだからですか?
そのほかの余計なところへは一切アクセスを禁止できますからね。

インター博士

ま、そういうことだな。

ネット助手

なるほど。

インター博士

さてさて、今回はこのぐらいにしておこう。

ネット助手

はい。

インター博士

もうちょっとHTTPの話は続くぞ。

ネット助手

了解です。 3分間ネットワーキングでした〜♪

プロキシサーバ
[Proxy Server]
他の呼び方としては、プロクシサーバ、HTTPプロキシ、など。
発音としては「ぷろくしぃ」かな?
ローカルキャッシュ
[Local Cache]
WindowsとInternetExplorerなら、「C:\Documents and Settings\(ユーザ名)\Local Settings\Temporary Internet Files」に保存されている。
このフィルタ
一般的には「見に行ってはいけないURL」を「ブラックリスト」。「見に行ってよいURL」を「ホワイトリスト」と呼びます。
アプリケーションゲートウェイ
[Application Gateway]
ネット助手ネット君の今日のポイント
  • HTTPアクセスでプロキシサーバを利用することもできる。
    • グローバルIPアドレスを節約できる。
    • アクセスの高速化とトラフィック制御ができる。
    • HTTPアクセスの管理ができる。
    • セキュリティが向上する。

3 Minutes NetWorking No.76

管理人:aji-ssz(at)selene.is.dream.jp