khurata’s blog

khurata’s blog

プロキシ(プロクシ、串)の基本知識

(もともと「Yahoo!知恵袋」の「知恵ノート」だったものを転載しています)
(最終更新日時:2014/3/24)投稿日:2013/2/25

はじめに

 プロキシ proxy についての話を見ますと、隔離とか遮断とかブロックという事と絡めて語られている事が多いのですが、それはプロキシの本質ではありません。
 proxy は「代理人」という意味であり、その本質はキャッシュ・サーバです。 本ノートでは、その辺りの「プロキシの基本」について、少し説明してみようと思います。

 

プロキシの主目的

 プロキシのそもそもの目的は、ネットワークの負荷を下げることです。

 たとえば、ある企業内で、LAN端末(PCなど)が1000台ほど有り、それぞれがインターネット(WAN)にアクセス出来る、としましょう。 このような社内ネットワークにおいて、ある端末がヤフーのトップページを見に行く、という事は、多々有ることでしょう。
 その場合、この社内ネットワークでは、端末→(LAN)→ルータ→(WAN)→ヤフー・サーバ、というアクセス経路をたどる事になります。 当然のことですが、ヤフーのページが1回閲覧される度に、WAN におけるヤフー・サーバへのアクセスも1回発生します。
 しかし、ヤフーのトップページであるとか、グーグルのトップページのように、「人気のあるページ」は、アクセス回数も多いので、「WAN 経由のサーバへのアクセス」も、大量に発生します。

[模式]
多数の端末→(LAN×多数のアクセス)→ルータ→(WAN×多数のアクセス)→ヤフー・サーバ

 こういう場合、ルータの近くにキャッシュを置けば、WAN の負荷は大幅に下げられるはずです。 ある社内端末が1回ヤフーのトップページを見に行ったら、そのページ内容をルータの近くでキャッシュしておくわけです。 そうすれば、別の端末がヤフーのトップページを見に行った時、キャッシュの内容を見せれば良いので、WAN の負荷は大幅に減らせるはずです。 つまり、このキャッシュは、ある種のウェブサーバとして動作しなければなりません。

 1000台有る社内端末それぞれがヤフーに個別にアクセスしたら、インターネットの負荷は、そのまま1000アクセス分になりますが、キャッシュを間に置くだけで、インターネットの負荷は、1アクセスだけで済むのです。
 WAN の負荷が減れば、その分、インターネットのトラフィック(交通量)も減り、全体として、より高速・快適になる事が期待出来ます。

 また、個々の端末から、ヤフー・サーバまでの「距離」をアクセスするよりも、個々の端末から近い距離にあるキャッシュ・サーバにアクセスする方が、はるかに高速です。

[模式]
多数の端末→(LAN×多数のアクセス)→キャッシュ→ルータ→(WAN×1回のアクセス)→ヤフー・サーバ

 プロキシとは、このように動作する、ウェブ・キャッシュ・サーバの事です。

 キャッシュ・サーバを適切に設ける事により、ネット全体で、大きなトラフィック削減効果や高速化が見込めます。 CPU や HDD に付いているキャッシュと同様、インターネットの負荷軽減と、アクセスの高速化が、プロキシのそもそもの目的なのです。

 

プロキシの副次効果

 上述の通り、プロキシはキャッシュなのですが、キャッシュ動作において、アクセス元の IPアドレスや、ブラウザのユーザエージェントを、プロキシで書き換える事が出来ます。
 そもそも、外部のウェブサーバにアクセスしに行っているのはプロキシなのですから、発IPアドレスやユーザエージェントは、プロキシのものになるのが自然ではあります。
(社内の1000台の端末が、全て同じブラウザを使っているとは限らない)

 従って、「プロキシ経由でアクセスすると、元々のアクセス者の情報が伝わらない」という事が、多々あります。 これが、プロキシによる「アクセス元の隠蔽効果」です。
 たとえるならば、代理人を通して話をするが、その代理人代理人自身の名刺を使っており、「元々の依頼人」が誰なのかは分からない……という感じです。

 しかし、ウェブサーバによっては、アクセス元情報がプロキシ特有のものである場合、アクセスを受け付けないポリシー(policy 行動規範)で運営している所もあります。 それを回避するために、偽のアクセス元情報をわざと通知する設定のプロキシもあります。

 アクセス元の情報も出さなければ、自身の情報も全く出さない、というプロキシもあります(匿名プロキシ)。 代理人を通して話をするけれども、その代理人の正体すら分からない、という感じです。 これは、実社会だったら、滅茶苦茶怪しいですね。
 滅茶苦茶怪しいので、こうした「匿名串」からのアクセスは、一切受け付けないポリシーで運営しているウェブサーバも多いです。

 「プロキシである事が明確だったり、あるいは元が何者か分からないような怪しいアクセスは受け付けない」というポリシーで運営しているサーバに、プロキシを通してアクセスしたい場合は、プロキシに「元々の発信者情報(発IPアドレスやブラウザのユーザエージェントなど)は通過させる」、という設定をします。 代理人を通して話をするけれども、その代理人は元々の人の名刺を使う、という感じです。 このようなプロキシを、「漏れ串」などと呼ぶ事があります。

 また、プロキシをいくつも仲介させる事を「多段串」などと呼び、アクセス元の身元を隠蔽したい時に使われますが、アクセス速度はガタ落ちになりますし、完璧な隠蔽は望めません。

 

まとめ

 以上について整理すると、次のようになります。

・プロキシとは、代理アクセスをしてくれるキャッシュサーバである。
・基本的に、プロキシは、アクセス先に対して、プロキシ自身の情報を出す(代理人の名刺を使う)。
・架空のアクセス元の情報を渡すプロキシもある(架空の名刺を使う)。
・アクセス元と自身の情報を渡さないプロキシもある(一切身元を明かさない)。
・アクセス元の情報を筒抜けに渡すプロキシもある(アクセス元の名刺を使う)。
・こうしたプロキシの「性格」は、プロキシのサーバ設定に依る。
(おわり)
(転載以上)