■ 「代理」サーバ
さてさて。今回は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アクセスの管理ができる。
- セキュリティが向上する。
- HTTPアクセスでプロキシサーバを利用することもできる。